1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
#!/usr/bin/env python
##############################################################################
# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
# Unittest for yardstick.benchmark.scenarios.networking.nstat.Nstat
from __future__ import absolute_import
import unittest
import mock
from yardstick.benchmark.scenarios.networking import nstat
@mock.patch('yardstick.benchmark.scenarios.networking.nstat.ssh')
class NstatTestCase(unittest.TestCase):
def setUp(self):
self.ctx = {
"host": {
"ip": "192.168.50.28",
"user": "root",
"key_filename": "mykey.key"
}
}
def test_nstat_successful_setup(self, mock_ssh):
n = nstat.Nstat({}, self.ctx)
n.setup()
mock_ssh.SSH.from_node().execute.return_value = (0, '', '')
self.assertIsNotNone(n.client)
self.assertEqual(n.setup_done, True)
def test_nstat_successful_no_sla(self, mock_ssh):
options = {
"duration": 0
}
args = {
"options": options,
}
n = nstat.Nstat(args, self.ctx)
result = {}
sample_output = '#kernel\nIpInReceives 1837 0.0\nIpInHdrErrors 0 0.0\nIpInAddrErrors 2 0.0\nIcmpInMsgs 319 0.0\nIcmpInErrors 0 0.0\nTcpInSegs 36 0.0\nTcpInErrs 0 0.0\nUdpInDatagrams 1318 0.0\nUdpInErrors 0 0.0\n' # pylint: disable=line-too-long
mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '')
n.run(result)
expected_result = {"TcpInErrs": 0, "UdpInDatagrams": 1318,
"Tcp_segment_error_rate": 0.0, "IpInAddrErrors": 2,
"IpInHdrErrors": 0, "IcmpInErrors": 0, "IpErrors": 2,
"TcpInSegs": 36, "IpInReceives": 1837, "IcmpInMsgs": 319,
"IP_datagram_error_rate": 0.001, "Udp_datagram_error_rate": 0.0,
"Icmp_message_error_rate": 0.0, "UdpInErrors": 0}
self.assertEqual(result, expected_result)
def test_nstat_successful_sla(self, mock_ssh):
options = {
"duration": 0
}
sla = {
"IP_datagram_error_rate": 0.1
}
args = {
"options": options,
"sla": sla
}
n = nstat.Nstat(args, self.ctx)
result = {}
sample_output = '#kernel\nIpInReceives 1837 0.0\nIpInHdrErrors 0 0.0\nIpInAddrErrors 2 0.0\nIcmpInMsgs 319 0.0\nIcmpInErrors 0 0.0\nTcpInSegs 36 0.0\nTcpInErrs 0 0.0\nUdpInDatagrams 1318 0.0\nUdpInErrors 0 0.0\n' # pylint: disable=line-too-long
mock_ssh.SSH.from_node().execute.return_value = (0, sample_output, '')
n.run(result)
expected_result = {"TcpInErrs": 0, "UdpInDatagrams": 1318,
"Tcp_segment_error_rate": 0.0, "IpInAddrErrors": 2,
"IpInHdrErrors": 0, "IcmpInErrors": 0, "IpErrors": 2,
"TcpInSegs": 36, "IpInReceives": 1837, "IcmpInMsgs": 319,
"IP_datagram_error_rate": 0.001, "Udp_datagram_error_rate": 0.0,
"Icmp_message_error_rate": 0.0, "UdpInErrors": 0}
self.assertEqual(result, expected_result)
def test_nstat_unsuccessful_cmd_error(self, mock_ssh):
options = {
"duration": 0
}
sla = {
"IP_datagram_error_rate": 0.1
}
args = {
"options": options,
"sla": sla
}
n = nstat.Nstat(args, self.ctx)
result = {}
mock_ssh.SSH.from_node().execute.return_value = (1, '', 'FOOBAR')
self.assertRaises(RuntimeError, n.run, result)
def main():
unittest.main()
if __name__ == '__main__':
main()
|