def test_vnf_execute_command(self, mock_time, mock_process): 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] udp_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) cmd = "quit" self.assertEqual("", udp_approx_vnf.vnf_execute(cmd))
def test_run_udp_replay(self, mock_open, eval, hex, mock_process): 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] udp_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) udp_approx_vnf._build_config = mock.MagicMock() udp_approx_vnf.queue_wrapper = mock.MagicMock() udp_approx_vnf.ssh_helper = mock.MagicMock() udp_approx_vnf.ssh_helper.run = mock.MagicMock() udp_approx_vnf.vnf_cfg = { 'lb_config': 'SW', 'lb_count': 1, 'worker_config': '1C/1T', 'worker_threads': 1 } udp_approx_vnf.options = { 'traffic_type': '4', 'topology': 'nsb_test_case.yaml' } udp_approx_vnf._run() udp_approx_vnf.ssh_helper.run.assert_called_once()
def test_instantiate(self, Context, mock_process): 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] udp_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) self.scenario_cfg['vnf_options'] = { 'cgnapt': { 'cfg': "", 'rules': "" } } udp_approx_vnf._run_udp_replay = mock.Mock(return_value=0) udp_approx_vnf._parse_rule_file = mock.Mock(return_value={}) udp_approx_vnf.deploy_udp_replay_vnf = mock.Mock(return_value=1) udp_approx_vnf.q_out.put("Replay>") udp_approx_vnf.get_my_ports = mock.Mock(return_value=[0, 1]) udp_replay.WAIT_TIME = 3 udp_approx_vnf.get_nfvi_type = mock.Mock(return_value="baremetal") udp_approx_vnf._vnf_process = mock.MagicMock() udp_approx_vnf._vnf_process.is_alive = \ mock.Mock(return_value=1) self.assertIsNone( udp_approx_vnf.instantiate(self.scenario_cfg, self.context_cfg))
def test_collect_kpi(self, mock_time, mock_process): 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] result = "stats\r\r\n\r\nUDP_Replay stats:\r\n--------------\r\n" \ "Port\t\tRx Packet\t\tTx Packet\t\tRx Pkt Drop\t\tTx Pkt Drop \r\n"\ "0\t\t7374156\t\t7374136\t\t\t0\t\t\t0\r\n" \ "1\t\t7374316\t\t7374315\t\t\t0\t\t\t0\r\n\r\nReplay>\r\r\nReplay>" udp_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) udp_approx_vnf.q_in = mock.MagicMock() udp_approx_vnf.q_out = mock.MagicMock() udp_approx_vnf.q_out.qsize = mock.Mock(return_value=0) udp_approx_vnf.all_ports = [0, 1] udp_approx_vnf.interfaces = vnfd["vdu"][0]['external-interface'] udp_approx_vnf.get_stats = mock.Mock(return_value=result) result = { 'collect_stats': {}, 'packets_dropped': 0, 'packets_fwd': 14748451, 'packets_in': 14748472 } self.assertEqual(result, udp_approx_vnf.collect_kpi())
def test_collect_kpi(self, ssh, *args): mock_ssh(ssh) vnfd = self.VNFD_0 get_stats_ret_val = \ "stats\r\r\n\r\nUDP_Replay stats:\r\n--------------\r\n" \ "Port\t\tRx Packet\t\tTx Packet\t\tRx Pkt Drop\t\tTx Pkt Drop \r\n"\ "0\t\t7374156\t\t7374136\t\t\t0\t\t\t0\r\n" \ "1\t\t7374316\t\t7374315\t\t\t0\t\t\t0\r\n\r\nReplay>\r\r\nReplay>" udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) udp_replay_approx_vnf.scenario_helper.scenario_cfg = { 'nodes': { udp_replay_approx_vnf.name: "mock" } } udp_replay_approx_vnf.q_in = mock.MagicMock() udp_replay_approx_vnf.q_out = mock.MagicMock() udp_replay_approx_vnf.q_out.qsize = mock.Mock(return_value=0) udp_replay_approx_vnf.all_ports = ["xe0", "xe1"] udp_replay_approx_vnf.get_stats = mock.Mock( return_value=get_stats_ret_val) result = { 'physical_node': 'mock_node', 'collect_stats': {}, 'packets_dropped': 0, 'packets_fwd': 14748451, 'packets_in': 14748472 } self.assertEqual(result, udp_replay_approx_vnf.collect_kpi())
def test__build_pipeline_kwargs(self, ssh, mock_context, *args): mock_ssh(ssh) udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0) udp_replay_approx_vnf.nfvi_context = mock_context udp_replay_approx_vnf.nfvi_context.attrs = {'nfvi_type': 'baremetal'} udp_replay_approx_vnf.setup_helper.bound_pci = [ '0000:00:0.1', '0000:00:0.3' ] udp_replay_approx_vnf.all_ports = ["xe0", "xe1"] udp_replay_approx_vnf.ssh_helper.provision_tool = mock.MagicMock( return_value="tool_path") udp_replay_approx_vnf.scenario_helper = ScenarioHelper(name='vnf__1') udp_replay_approx_vnf.scenario_helper.scenario_cfg = self.SCENARIO_CFG udp_replay_approx_vnf._build_pipeline_kwargs() self.assertEqual( udp_replay_approx_vnf.pipeline_kwargs, { 'config': '(0,0,1),(1,0,2)', 'cpu_mask_hex': '0x7', 'hw_csum': '', 'port_mask_hex': '0x3', 'tool_path': 'tool_path', 'whitelist': '0000:00:0.1 -w 0000:00:0.3' })
def test_instantiate(self, ssh, *_): mock_ssh(ssh) resource = mock.Mock(autospec=ResourceProfile) udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0) udp_replay_approx_vnf.q_out.put("Replay>") udp_replay_approx_vnf.WAIT_TIME = 0 udp_replay_approx_vnf.setup_helper.setup_vnf_environment = mock.Mock() self.assertIsNone( udp_replay_approx_vnf.instantiate(self.SCENARIO_CFG, self.CONTEXT_CFG)) udp_replay_approx_vnf._vnf_process.is_alive = mock.Mock(return_value=1) udp_replay_approx_vnf._vnf_process.exitcode = 0 self.assertEquals(udp_replay_approx_vnf.wait_for_instantiate(), 0)
def test_instantiate_panic(self, *args): udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0) udp_replay_approx_vnf.WAIT_TIME = 0 udp_replay_approx_vnf.q_out.put("some text PANIC some text") udp_replay_approx_vnf.setup_helper.setup_vnf_environment = mock.Mock() udp_replay_approx_vnf.deploy_helper = mock.MagicMock() self.assertIsNone(udp_replay_approx_vnf.instantiate(self.SCENARIO_CFG, self.CONTEXT_CFG)) with self.assertRaises(RuntimeError): udp_replay_approx_vnf.wait_for_instantiate()
def test_run_udp_replay(self, ssh, *args): mock_ssh(ssh) udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0) udp_replay_approx_vnf._build_config = mock.MagicMock() udp_replay_approx_vnf.queue_wrapper = mock.MagicMock() udp_replay_approx_vnf.scenario_helper = mock.MagicMock() udp_replay_approx_vnf._run() udp_replay_approx_vnf.ssh_helper.run.assert_called_once()
def test_terminate(self, mock_time, mock_process): 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] udp_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) udp_approx_vnf._vnf_process = mock.MagicMock() udp_approx_vnf._vnf_process.terminate = mock.Mock() udp_approx_vnf.used_drivers = {"01:01.0": "i40e", "01:01.1": "i40e"} udp_approx_vnf.execute_command = mock.Mock() udp_approx_vnf.ssh_helper = ssh_mock udp_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py" self.assertEqual(None, udp_approx_vnf.terminate())
def test_terminate(self, ssh, *args): mock_ssh(ssh) udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0) udp_replay_approx_vnf._vnf_process = mock.MagicMock() udp_replay_approx_vnf._vnf_process.terminate = mock.Mock() udp_replay_approx_vnf.used_drivers = { "01:01.0": "i40e", "01:01.1": "i40e" } udp_replay_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py" self.assertEqual(None, udp_replay_approx_vnf.terminate())
def test_get_stats(self, ssh, *args): mock_ssh(ssh) udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0) udp_replay_approx_vnf.q_in = mock.MagicMock() udp_replay_approx_vnf.q_out = mock.MagicMock() udp_replay_approx_vnf.q_out.qsize = mock.Mock(return_value=0) mock_result = \ "CG-NAPT(.*\n)*Received 100, Missed 0, Dropped 0,Translated 100,ingress" udp_replay_approx_vnf.vnf_execute = mock.Mock(return_value=mock_result) self.assertEqual(mock_result, udp_replay_approx_vnf.get_stats())
def test_get_stats(self, mock_process): 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] udp_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) udp_approx_vnf.q_in = mock.MagicMock() udp_approx_vnf.q_out = mock.MagicMock() udp_approx_vnf.q_out.qsize = mock.Mock(return_value=0) mock_result = \ "CG-NAPT(.*\n)*Received 100, Missed 0, Dropped 0,Translated 100,ingress" udp_approx_vnf.vnf_execute = mock.Mock(return_value=mock_result) self.assertEqual(mock_result, udp_approx_vnf.get_stats())
def test_instantiate(self, ssh, *args): mock_ssh(ssh) udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0, 'task_id') udp_replay_approx_vnf.q_out.put("Replay>") udp_replay_approx_vnf.WAIT_TIME = 0 udp_replay_approx_vnf.setup_helper.setup_vnf_environment = mock.Mock() udp_replay_approx_vnf.deploy_helper = mock.MagicMock() udp_replay_approx_vnf.deploy_vnfs = mock.MagicMock() self.assertIsNone( udp_replay_approx_vnf.instantiate(self.SCENARIO_CFG, self.CONTEXT_CFG)) udp_replay_approx_vnf._vnf_process.is_alive = mock.Mock(return_value=1) udp_replay_approx_vnf._vnf_process.exitcode = 0 self.assertEqual(udp_replay_approx_vnf.wait_for_instantiate(), 0)
def test_collect_kpi(self, ssh, mock_time, _): mock_ssh(ssh) vnfd = self.VNFD_0 result = "stats\r\r\n\r\nUDP_Replay stats:\r\n--------------\r\n" \ "Port\t\tRx Packet\t\tTx Packet\t\tRx Pkt Drop\t\tTx Pkt Drop \r\n"\ "0\t\t7374156\t\t7374136\t\t\t0\t\t\t0\r\n" \ "1\t\t7374316\t\t7374315\t\t\t0\t\t\t0\r\n\r\nReplay>\r\r\nReplay>" udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) udp_replay_approx_vnf.q_in = mock.MagicMock() udp_replay_approx_vnf.q_out = mock.MagicMock() udp_replay_approx_vnf.q_out.qsize = mock.Mock(return_value=0) udp_replay_approx_vnf.all_ports = ["xe0", "xe1"] udp_replay_approx_vnf.get_stats = mock.Mock(return_value=result) result = { 'collect_stats': {}, 'packets_dropped': 0, 'packets_fwd': 14748451, 'packets_in': 14748472 } self.assertEqual(result, udp_replay_approx_vnf.collect_kpi())
def test__build_config(self, ssh, mock_context, *args): mock_ssh(ssh) udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0) udp_replay_approx_vnf.queue_wrapper = mock.MagicMock() udp_replay_approx_vnf.nfvi_context = mock_context udp_replay_approx_vnf.nfvi_context.attrs = {'nfvi_type': 'baremetal'} udp_replay_approx_vnf.setup_helper.bound_pci = [] udp_replay_approx_vnf.ssh_helper.provision_tool = mock.MagicMock( return_value="tool_path") udp_replay_approx_vnf.scenario_helper = ScenarioHelper(name='vnf__1') udp_replay_approx_vnf.scenario_helper.scenario_cfg = self.SCENARIO_CFG cmd_line = udp_replay_approx_vnf._build_config() expected = \ "sudo tool_path --log-level=5 -c 0x7 -n 4 -w -- -p 0x3 --config='(0,0,1),(1,0,2)'" self.assertEqual(cmd_line, expected)
def test_scale(self, _): udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0) flavor = "" self.assertRaises(NotImplementedError, udp_replay_approx_vnf.scale, flavor)
def test___init__(self, *args): udp_replay_approx_vnf = UdpReplayApproxVnf(NAME, self.VNFD_0) self.assertIsNone(udp_replay_approx_vnf._vnf_process)
def test_scale(self, mock_process): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] udp_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) flavor = "" self.assertRaises(NotImplementedError, udp_approx_vnf.scale, flavor)
def test__build_pipeline_kwargs(self, mock_open, mock_process): with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) ssh.from_node.return_value = ssh_mock vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] udp_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) udp_approx_vnf._build_config = mock.MagicMock() udp_approx_vnf.queue_wrapper = mock.MagicMock() udp_approx_vnf.nfvi_type = "baremetal" udp_approx_vnf.bound_pci = [] udp_approx_vnf.all_ports = [0, 1] udp_approx_vnf.ssh_helper = mock.MagicMock( **{"provision_tool.return_value": "tool_path"}) udp_approx_vnf.vnf_cfg = { 'lb_config': 'SW', 'lb_count': 1, 'worker_config': '1C/1T', 'worker_threads': 1 } udp_approx_vnf.options = { 'traffic_type': '4', 'topology': 'nsb_test_case.yaml' } udp_approx_vnf._build_pipeline_kwargs() self.assertEqual( udp_approx_vnf.pipeline_kwargs, { 'config': '(0, 0, 1)(1, 0, 2)', 'cpu_mask_hex': '0x6', 'hw_csum': '', 'ports_len_hex': '0x3', 'tool_path': 'tool_path', 'whitelist': '' })
def test___init__(self, mock_process): vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] udp_approx_vnf = UdpReplayApproxVnf(NAME, vnfd) self.assertIsNone(udp_approx_vnf._vnf_process)