3 ##############################################################################
4 # Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 ##############################################################################
12 # Unittest for yardstick.benchmark.scenarios.networking.nstat.Nstat
14 from __future__ import absolute_import
20 from yardstick.benchmark.scenarios.networking import nstat
22 @mock.patch('yardstick.benchmark.scenarios.networking.nstat.ssh')
23 class NstatTestCase(unittest.TestCase):
28 "ip": "192.168.50.28",
30 "key_filename": "mykey.key"
34 def test_nstat_successful_setup(self, mock_ssh):
36 n = nstat.Nstat({}, self.ctx)
39 mock_ssh.SSH().execute.return_value = (0, '', '')
40 self.assertIsNotNone(n.client)
41 self.assertEqual(n.setup_done, True)
43 def test_nstat_successful_no_sla(self, mock_ssh):
51 n = nstat.Nstat(args, self.ctx)
54 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'
56 mock_ssh.SSH().execute.return_value = (0, sample_output, '')
59 expected_result = {"TcpInErrs": 0, "UdpInDatagrams": 1318,
60 "Tcp_segment_error_rate": 0.0, "IpInAddrErrors": 2,
61 "IpInHdrErrors": 0, "IcmpInErrors": 0, "IpErrors": 2,
62 "TcpInSegs": 36, "IpInReceives": 1837, "IcmpInMsgs": 319,
63 "IP_datagram_error_rate": 0.001, "Udp_datagram_error_rate": 0.0,
64 "Icmp_message_error_rate": 0.0, "UdpInErrors": 0}
65 self.assertEqual(result, expected_result)
67 def test_nstat_successful_sla(self, mock_ssh):
73 "IP_datagram_error_rate": 0.1
79 n = nstat.Nstat(args, self.ctx)
82 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'
84 mock_ssh.SSH().execute.return_value = (0, sample_output, '')
87 expected_result = {"TcpInErrs": 0, "UdpInDatagrams": 1318,
88 "Tcp_segment_error_rate": 0.0, "IpInAddrErrors": 2,
89 "IpInHdrErrors": 0, "IcmpInErrors": 0, "IpErrors": 2,
90 "TcpInSegs": 36, "IpInReceives": 1837, "IcmpInMsgs": 319,
91 "IP_datagram_error_rate": 0.001, "Udp_datagram_error_rate": 0.0,
92 "Icmp_message_error_rate": 0.0, "UdpInErrors": 0}
93 self.assertEqual(result, expected_result)
95 def test_nstat_unsuccessful_cmd_error(self, mock_ssh):
101 "IP_datagram_error_rate": 0.1
107 n = nstat.Nstat(args, self.ctx)
110 mock_ssh.SSH().execute.return_value = (1, '', 'FOOBAR')
111 self.assertRaises(RuntimeError, n.run, result)
117 if __name__ == '__main__':