def test_run_traffic_csv(self, call, shutil, main_open, min, max, len): mock_traffic_profile = mock.Mock(autospec=TrafficProfile) mock_traffic_profile.get_traffic_definition.return_value = "64" mock_traffic_profile.params = self.TRAFFIC_PROFILE with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) ssh_mock.execute = \ mock.Mock(return_value=(0, "", "")) ssh_mock.run = \ mock.Mock(return_value=(0, "", "")) ssh.from_node.return_value = ssh_mock vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] vnfd["mgmt-interface"].update({"tg-config": {}}) vnfd["mgmt-interface"]["tg-config"].update( {"ixchassis": "1.1.1.1"}) vnfd["mgmt-interface"]["tg-config"].update( {"py_bin_path": "/root"}) sut = IxLoadTrafficGen(NAME, vnfd) sut.connection = mock.Mock() sut.connection.run = mock.Mock() sut._traffic_runner = mock.Mock(return_value=0) shutil.copy = mock.Mock() subprocess.call(["touch", "/tmp/1.csv"]) sut.rel_bin_path = mock.Mock(return_value="/tmp/*.csv") result = sut.run_traffic(mock_traffic_profile) self.assertIsNone(result)
def test_instantiate(self, shutil, *args): with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) ssh_mock.execute = \ mock.Mock(return_value=(0, "", "")) ssh_mock.run = \ mock.Mock(return_value=(0, "", "")) ssh.from_node.return_value = ssh_mock vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) scenario_cfg = {'tc': "nsb_test_case", 'ixia_profile': "ixload.cfg", 'task_path': "/path/to/task"} ixload_traffic_gen.RESULTS_MOUNT = "/tmp/result" shutil.copy = mock.Mock() scenario_cfg.update({'options': {'packetsize': 64, 'traffic_type': 4, 'rfc2544': {'allowed_drop_rate': '0.8 - 1'}, 'vnf__1': {'rules': 'acl_1rule.yaml', 'vnf_config': {'lb_config': 'SW', 'lb_count': 1, 'worker_config': '1C/1T', 'worker_threads': 1}} }}) with mock.patch.object(six.moves.builtins, 'open', create=True) as mock_open: mock_open.return_value = mock.MagicMock() ixload_traffic_gen.instantiate(scenario_cfg, {})
def test_terminate(self, call): with mock.patch("yardstick.ssh.SSH") as ssh: vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] ssh_mock = mock.Mock(autospec=ssh.SSH) ssh_mock.execute = \ mock.Mock(return_value=(0, "", "")) ssh.from_node.return_value = ssh_mock ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) self.assertEqual(None, ixload_traffic_gen.terminate())
def test___init__(self): with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) ssh_mock.execute = \ mock.Mock(return_value=(0, "", "")) ssh.from_node.return_value = ssh_mock vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) self.assertIsNone(ixload_traffic_gen.data)
def test_collect_kpi(self): with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) ssh_mock.execute = \ mock.Mock(return_value=(0, "", "")) ssh.from_node.return_value = ssh_mock vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) ixload_traffic_gen.data = {} restult = ixload_traffic_gen.collect_kpi() self.assertEqual({}, restult)
def test_parse_csv_read_error(self, mock_call, mock_ssh): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] http_reader = [{ 'HTTP Total Throughput (Kbps)': 1, 'HTTP Simulated Users': 2, 'HTTP Concurrent Connections': 3, 'HTTP Transaction Rate': 5, }] mock_ssh_type = mock.Mock(autospec=mock_ssh.SSH) mock_ssh_type.execute.return_value = 0, "", "" mock_ssh.from_node.return_value = mock_ssh_type ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) with self.assertRaises(KeyError): ixload_traffic_gen.resource_helper.parse_csv_read(http_reader)
def test_parse_csv_read_value_error(self, mock_ssh, *args): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] http_reader = [{ 'HTTP Total Throughput (Kbps)': 1, 'HTTP Simulated Users': 2, 'HTTP Concurrent Connections': "not a number", 'HTTP Connection Rate': 4, 'HTTP Transaction Rate': 5, }] mock_ssh_type = mock.Mock(autospec=mock_ssh.SSH) mock_ssh_type.execute.return_value = 0, "", "" mock_ssh.from_node.return_value = mock_ssh_type ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) init_value = ixload_traffic_gen.resource_helper.result ixload_traffic_gen.resource_helper.parse_csv_read(http_reader) self.assertDictEqual(ixload_traffic_gen.resource_helper.result, init_value)
def test_parse_csv_read(self, mock_call, mock_ssh): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] kpi_data = { 'HTTP Total Throughput (Kbps)': 1, 'HTTP Simulated Users': 2, 'HTTP Concurrent Connections': '3', 'HTTP Connection Rate': 4.3, 'HTTP Transaction Rate': True, } http_reader = [kpi_data] mock_ssh_type = mock.Mock(autospec=mock_ssh.SSH) mock_ssh_type.execute.return_value = 0, "", "" mock_ssh.from_node.return_value = mock_ssh_type ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) result = ixload_traffic_gen.resource_helper.result ixload_traffic_gen.resource_helper.parse_csv_read(http_reader) for key_left, key_right in IxLoadResourceHelper.KPI_LIST.items(): self.assertEqual(result[key_left][-1], int(kpi_data[key_right]))
def test_collect_kpi(self, *args): with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) ssh_mock.execute = \ mock.Mock(return_value=(0, "", "")) ssh.from_node.return_value = ssh_mock vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) ixload_traffic_gen.scenario_helper.scenario_cfg = { 'nodes': { ixload_traffic_gen.name: "mock" } } ixload_traffic_gen.data = {} restult = ixload_traffic_gen.collect_kpi() expected = { 'physical_node': 'mock_node', 'collect_stats': {}, } self.assertEqual(expected, restult)
def test_instantiate(self, call, shutil, mock_makedirs): with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) ssh_mock.execute = \ mock.Mock(return_value=(0, "", "")) ssh_mock.run = \ mock.Mock(return_value=(0, "", "")) ssh.from_node.return_value = ssh_mock vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) scenario_cfg = { 'tc': "nsb_test_case", 'ixia_profile': "ixload.cfg" } ixload_traffic_gen.RESULTS_MOUNT = "/tmp/result" shutil.copy = mock.Mock() scenario_cfg.update({ 'options': { 'packetsize': 64, 'traffic_type': 4, 'rfc2544': { 'allowed_drop_rate': '0.8 - 1' }, 'vnf__1': { 'rules': 'acl_1rule.yaml', 'vnf_config': { 'lb_config': 'SW', 'lb_count': 1, 'worker_config': '1C/1T', 'worker_threads': 1 } } } }) self.assertRaises(IOError, ixload_traffic_gen.instantiate(scenario_cfg, {}))
def test_terminate(self, *args): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] ixload_traffic_gen = IxLoadTrafficGen(NAME, vnfd) self.assertIsNone(ixload_traffic_gen.terminate())