From dcf8aa87f04ffd14f0cab5b39fa1915627824cad Mon Sep 17 00:00:00 2001 From: Myron Sosyak Date: Thu, 6 Sep 2018 10:29:13 +0100 Subject: Added traffic update capability to Ixload TG Allow yardstick to update IP/MAX of Net traffic - Implemented functionality for updating traffics IP/MAC address in ixloadconfiguration. - Extended http_ixload.py with functions for update IP/MAC address of netTraffic. - In HTTP-vFW_IPv4_2Ports_Concurrency.rxf changed name's of networks from "client network" to "uplink_0 and the same for server JIRA: YARDSTICK-1418 Change-Id: I28ef68b77466fff15af589954e3ef63e8099428f Signed-off-by: Myron Sosyak Signed-off-by: Taras Chornyi --- .../network_services/traffic_profile/test_http.py | 10 +- .../traffic_profile/test_http_ixload.py | 129 +++++++++++++++++++++ .../vnf_generic/vnf/test_tg_ixload.py | 17 +++ 3 files changed, 155 insertions(+), 1 deletion(-) (limited to 'yardstick/tests') diff --git a/yardstick/tests/unit/network_services/traffic_profile/test_http.py b/yardstick/tests/unit/network_services/traffic_profile/test_http.py index d44fab2b5..874ec37d4 100644 --- a/yardstick/tests/unit/network_services/traffic_profile/test_http.py +++ b/yardstick/tests/unit/network_services/traffic_profile/test_http.py @@ -19,13 +19,21 @@ from yardstick.network_services.traffic_profile import http class TestTrafficProfileGenericHTTP(unittest.TestCase): - TP_CONFIG = {'traffic_profile': {'duration': 10}} + TP_CONFIG = {'traffic_profile': {'duration': 10}, + "uplink_0": {}, "downlink_0": {}} def test___init__(self): tp_generic_http = http.TrafficProfileGenericHTTP( self.TP_CONFIG) self.assertIsNotNone(tp_generic_http) + def test_get_links_param(self): + tp_generic_http = http.TrafficProfileGenericHTTP( + self.TP_CONFIG) + + links = tp_generic_http.get_links_param() + self.assertEqual({"uplink_0": {}, "downlink_0": {}}, links) + def test_execute(self): tp_generic_http = http.TrafficProfileGenericHTTP( self.TP_CONFIG) diff --git a/yardstick/tests/unit/network_services/traffic_profile/test_http_ixload.py b/yardstick/tests/unit/network_services/traffic_profile/test_http_ixload.py index 57de6602d..1adab48bc 100644 --- a/yardstick/tests/unit/network_services/traffic_profile/test_http_ixload.py +++ b/yardstick/tests/unit/network_services/traffic_profile/test_http_ixload.py @@ -17,6 +17,7 @@ import mock from oslo_serialization import jsonutils +from yardstick.common import exceptions from yardstick.network_services.traffic_profile import http_ixload from yardstick.network_services.traffic_profile.http_ixload import \ join_non_strings, validate_non_string_sequence @@ -45,6 +46,26 @@ class TestJoinNonStrings(unittest.TestCase): class TestIxLoadTrafficGen(unittest.TestCase): + def setUp(self): + ports = [1, 2, 3] + self.test_input = { + "remote_server": "REMOTE_SERVER", + "ixload_cfg": "IXLOAD_CFG", + "result_dir": "RESULT_DIR", + "ixia_chassis": "IXIA_CHASSIS", + "IXIA": { + "card": "CARD", + "ports": ports, + }, + 'links_param': { + "uplink_0": { + "ip": {"address": "address", + "gateway": "gateway", + "subnet_prefix": "subnet_prefix", + "mac": "mac" + }}} + } + def test_parse_run_test(self): ports = [1, 2, 3] test_input = { @@ -56,6 +77,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): "card": "CARD", "ports": ports, }, + 'links_param': {} } j = jsonutils.dump_as_bytes(test_input) ixload = http_ixload.IXLOADHttpTest(j) @@ -66,6 +88,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): ["IXIA_CHASSIS", "CARD", 2], ["IXIA_CHASSIS", "CARD", 3], ]) + self.assertEqual({}, ixload.links_param) def test_format_ports_for_reassignment(self): ports = [ @@ -91,6 +114,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): "card": "CARD", "ports": ports, }, + 'links_param': {} } j = jsonutils.dump_as_bytes(test_input) ixload = http_ixload.IXLOADHttpTest(j) @@ -112,6 +136,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): "card": "CARD", "ports": ports, }, + 'links_param': {} } j = jsonutils.dump_as_bytes(test_input) ixload = http_ixload.IXLOADHttpTest(j) @@ -160,6 +185,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): "card": "CARD", "ports": ports, }, + 'links_param': {} } j = jsonutils.dump_as_bytes(test_input) ixload = http_ixload.IXLOADHttpTest(j) @@ -178,6 +204,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): "card": "CARD", "ports": ports, }, + 'links_param': {} } j = jsonutils.dump_as_bytes(test_input) ixload = http_ixload.IXLOADHttpTest(j) @@ -198,6 +225,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): "card": "CARD", "ports": ports, }, + 'links_param': {} } j = jsonutils.dump_as_bytes(test_input) @@ -211,6 +239,105 @@ class TestIxLoadTrafficGen(unittest.TestCase): with self.assertRaises(RuntimeError): ixload.start_http_test() + def test_update_config(self): + net_taraffic_0 = mock.Mock() + net_taraffic_0.name = "HTTP client@uplink_0" + net_taraffic_1 = mock.Mock() + net_taraffic_1.name = "HTTP client@uplink_1" + + community_list = [net_taraffic_0, net_taraffic_1, Exception] + ixload = http_ixload.IXLOADHttpTest( + jsonutils.dump_as_bytes(self.test_input)) + + ixload.links_param = {"uplink_0": {"ip": {}}} + + ixload.test = mock.Mock() + ixload.test.communityList = community_list + + ixload.update_network_param = mock.Mock() + + ixload.update_config() + + ixload.update_network_param.assert_called_once_with(net_taraffic_0, {}) + + def test_update_network_mac_address(self): + ethernet = mock.MagicMock() + net_traffic = mock.Mock() + net_traffic.network.getL1Plugin.return_value = ethernet + + ixload = http_ixload.IXLOADHttpTest( + jsonutils.dump_as_bytes(self.test_input)) + + ix_net_l2_ethernet_plugin = ethernet.childrenList[0] + ix_net_ip_v4_v6_plugin = ix_net_l2_ethernet_plugin.childrenList[0] + ix_net_ip_v4_v6_range = ix_net_ip_v4_v6_plugin.rangeList[0] + + ixload.update_network_mac_address(net_traffic, "auto") + ix_net_ip_v4_v6_range.config.assert_called_once_with( + autoMacGeneration=True) + + ixload.update_network_mac_address(net_traffic, "00:00:00:00:00:01") + ix_net_ip_v4_v6_range.config.assert_called_with( + autoMacGeneration=False) + mac_range = ix_net_ip_v4_v6_range.getLowerRelatedRange("MacRange") + mac_range.config.assert_called_once_with(mac="00:00:00:00:00:01") + + net_traffic.network.getL1Plugin.return_value = Exception + + with self.assertRaises(exceptions.InvalidRxfFile): + ixload.update_network_mac_address(net_traffic, "auto") + + def test_update_network_address(self): + ethernet = mock.MagicMock() + net_traffic = mock.Mock() + net_traffic.network.getL1Plugin.return_value = ethernet + + ixload = http_ixload.IXLOADHttpTest( + jsonutils.dump_as_bytes(self.test_input)) + + ix_net_l2_ethernet_plugin = ethernet.childrenList[0] + ix_net_ip_v4_v6_plugin = ix_net_l2_ethernet_plugin.childrenList[0] + ix_net_ip_v4_v6_range = ix_net_ip_v4_v6_plugin.rangeList[0] + + ixload.update_network_address(net_traffic, "address", "gateway", + "prefix") + ix_net_ip_v4_v6_range.config.assert_called_once_with( + prefix="prefix", + ipAddress="address", + gatewayAddress="gateway") + + net_traffic.network.getL1Plugin.return_value = Exception + + with self.assertRaises(exceptions.InvalidRxfFile): + ixload.update_network_address(net_traffic, "address", "gateway", + "prefix") + + def test_update_network_param(self): + net_traffic = mock.Mock() + + ixload = http_ixload.IXLOADHttpTest( + jsonutils.dump_as_bytes(self.test_input)) + + ixload.update_network_address = mock.Mock() + ixload.update_network_mac_address = mock.Mock() + + param = {"address": "address", + "gateway": "gateway", + "subnet_prefix": "subnet_prefix", + "mac": "mac" + } + + ixload.update_network_param(net_traffic, param) + + ixload.update_network_address.assert_called_once_with(net_traffic, + "address", + "gateway", + "subnet_prefix") + + ixload.update_network_mac_address.assert_called_once_with( + net_traffic, + "mac") + @mock.patch('yardstick.network_services.traffic_profile.http_ixload.IxLoad') @mock.patch('yardstick.network_services.traffic_profile.http_ixload.StatCollectorUtils') def test_start_http_test(self, *args): @@ -224,6 +351,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): "card": "CARD", "ports": ports, }, + 'links_param': {} } j = jsonutils.dump_as_bytes(test_input) @@ -248,6 +376,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): "card": "CARD", "ports": ports, }, + 'links_param': {} } j = jsonutils.dump_as_bytes(test_input) diff --git a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py index 53474b96e..e7f6206eb 100644 --- a/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py +++ b/yardstick/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py @@ -57,6 +57,7 @@ class TestIxLoadTrafficGen(ut_base.BaseUnitTestCase): 'external-interface': [{'virtual-interface': {'dst_mac': '00:00:00:00:00:04', + 'vld_id': 'uplink_0', 'vpci': '0000:05:00.0', 'local_ip': '152.16.100.19', 'type': 'PCI-PASSTHROUGH', @@ -71,6 +72,7 @@ class TestIxLoadTrafficGen(ut_base.BaseUnitTestCase): 'name': 'xe0'}, {'virtual-interface': {'dst_mac': '00:00:00:00:00:03', + 'vld_id': 'downlink_0', 'vpci': '0000:05:00.1', 'local_ip': '152.16.40.19', 'type': 'PCI-PASSTHROUGH', @@ -129,6 +131,17 @@ class TestIxLoadTrafficGen(ut_base.BaseUnitTestCase): ixload_traffic_gen = tg_ixload.IxLoadTrafficGen(NAME, vnfd, 'task_id') self.assertIsNone(ixload_traffic_gen.resource_helper.data) + def test_update_gateways(self): + vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] + ixload_traffic_gen = tg_ixload.IxLoadTrafficGen(NAME, vnfd, 'task_id') + links = {'uplink_0': {'ip': {}}, + 'downlink_1': {'ip': {}}} + + ixload_traffic_gen.update_gateways(links) + + self.assertEqual("152.16.100.20", links["uplink_0"]["ip"]["gateway"]) + self.assertEqual("0.0.0.0", links["downlink_1"]["ip"]["gateway"]) + @mock.patch.object(ctx_base.Context, 'get_physical_node_from_server', return_value='mock_node') def test_collect_kpi(self, *args): @@ -189,6 +202,8 @@ class TestIxLoadTrafficGen(ut_base.BaseUnitTestCase): def test_run_traffic(self, *args): mock_traffic_profile = mock.Mock(autospec=tp_base.TrafficProfile) mock_traffic_profile.get_traffic_definition.return_value = '64' + mock_traffic_profile.get_links_param.return_value = { + 'uplink_0': {'ip': {}}} mock_traffic_profile.params = self.TRAFFIC_PROFILE vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] vnfd['mgmt-interface'].update({'tg-config': {}}) @@ -208,6 +223,8 @@ class TestIxLoadTrafficGen(ut_base.BaseUnitTestCase): def test_run_traffic_csv(self, *args): mock_traffic_profile = mock.Mock(autospec=tp_base.TrafficProfile) mock_traffic_profile.get_traffic_definition.return_value = '64' + mock_traffic_profile.get_links_param.return_value = { + 'uplink_0': {'ip': {}}} mock_traffic_profile.params = self.TRAFFIC_PROFILE vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] vnfd['mgmt-interface'].update({'tg-config': {}}) -- cgit 1.2.3-korg