diff options
Diffstat (limited to 'tests/unit/network_services')
13 files changed, 319 insertions, 224 deletions
diff --git a/tests/unit/network_services/helpers/test_dpdkbindnic_helper.py b/tests/unit/network_services/helpers/test_dpdkbindnic_helper.py index 9bb5ed3a7..e30aee854 100644 --- a/tests/unit/network_services/helpers/test_dpdkbindnic_helper.py +++ b/tests/unit/network_services/helpers/test_dpdkbindnic_helper.py @@ -117,7 +117,7 @@ Other crypto devices self.assertEqual(conn, dpdk_bind_helper.ssh_helper) self.assertEqual(self.CLEAN_STATUS, dpdk_bind_helper.dpdk_status) self.assertIsNone(dpdk_bind_helper.status_nic_row_re) - self.assertIsNone(dpdk_bind_helper._dpdk_nic_bind_attr) + self.assertIsNone(dpdk_bind_helper._dpdk_devbind) self.assertIsNone(dpdk_bind_helper._status_cmd_attr) def test__dpdk_execute(self): diff --git a/tests/unit/network_services/traffic_profile/test_ixia_rfc2544.py b/tests/unit/network_services/traffic_profile/test_ixia_rfc2544.py index 616921e33..f13945abf 100644 --- a/tests/unit/network_services/traffic_profile/test_ixia_rfc2544.py +++ b/tests/unit/network_services/traffic_profile/test_ixia_rfc2544.py @@ -179,9 +179,7 @@ class TestIXIARFC2544Profile(unittest.TestCase): "dst_mac_0": "00:00:00:00:00:03", "dst_mac_1": "00:00:00:00:00:04", "dst_mac_2": "00:00:00:00:00:04"} - result = r_f_c2544_profile._get_ixia_traffic_profile( - self.PROFILE, mac, xfile="tmp", - static_traffic=STATIC_TRAFFIC) + result = r_f_c2544_profile._get_ixia_traffic_profile(self.PROFILE, mac) self.assertIsNotNone(result) def test_get_ixia_traffic_profile(self): @@ -225,7 +223,6 @@ class TestIXIARFC2544Profile(unittest.TestCase): "proto": "udp", "srcip4": "152.16.40.20", "ttl": 32, - "count": "1" }, "outer_l4": { "dstport": "2001", @@ -260,7 +257,6 @@ class TestIXIARFC2544Profile(unittest.TestCase): "proto": "udp", "srcip4": "152.16.40.20", "ttl": 32, - "count": "1" }, "outer_l3v6": { "count": 1024, @@ -269,7 +265,6 @@ class TestIXIARFC2544Profile(unittest.TestCase): "proto": "udp", "srcip4": "152.16.40.20", "ttl": 32, - "count": "1" }, "outer_l4": { "dstport": "1234", @@ -289,12 +284,11 @@ class TestIXIARFC2544Profile(unittest.TestCase): "dst_mac_0": "00:00:00:00:00:03", "dst_mac_1": "00:00:00:00:00:04", "dst_mac_2": "00:00:00:00:00:04"} - result = r_f_c2544_profile._get_ixia_traffic_profile( - self.PROFILE, mac, xfile="tmp", static_traffic=STATIC_TRAFFIC) + result = r_f_c2544_profile._get_ixia_traffic_profile(self.PROFILE, mac) self.assertIsNotNone(result) @mock.patch("yardstick.network_services.traffic_profile.ixia_rfc2544.open") - def test_get_ixia_traffic_profile_v6(self, mock_open): + def test_get_ixia_traffic_profile_v6(self, *args): traffic_generator = mock.Mock(autospec=TrexProfile) traffic_generator.my_ports = [0, 1] traffic_generator.uplink_ports = [-1] @@ -435,8 +429,7 @@ class TestIXIARFC2544Profile(unittest.TestCase): 'outer_l4': {'dstport': '2001', 'srcport': '1234'}}}, 'schema': 'isb:traffic_profile:0.1'} - result = r_f_c2544_profile._get_ixia_traffic_profile( - profile_data, mac, static_traffic=STATIC_TRAFFIC) + result = r_f_c2544_profile._get_ixia_traffic_profile(profile_data, mac) self.assertIsNotNone(result) def test__get_ixia_traffic_profile_default_args(self): @@ -459,8 +452,7 @@ class TestIXIARFC2544Profile(unittest.TestCase): ixia_obj = mock.MagicMock() r_f_c2544_profile = IXIARFC2544Profile(self.TRAFFIC_PROFILE) r_f_c2544_profile.rate = 100 - result = r_f_c2544_profile._ixia_traffic_generate(traffic_generator, - traffic, ixia_obj) + result = r_f_c2544_profile._ixia_traffic_generate(traffic, ixia_obj) self.assertIsNone(result) def test_execute(self): @@ -511,13 +503,6 @@ class TestIXIARFC2544Profile(unittest.TestCase): self.assertEqual(r_f_c2544_profile.ports, ports_expected) def test_get_drop_percentage(self): - traffic_generator = mock.Mock(autospec=TrexProfile) - traffic_generator.networks = { - "uplink_0": ["xe0"], - "downlink_0": ["xe1"], - } - traffic_generator.client = \ - mock.Mock(return_value=True) r_f_c2544_profile = IXIARFC2544Profile(self.TRAFFIC_PROFILE) r_f_c2544_profile.params = self.PROFILE ixia_obj = mock.MagicMock() @@ -541,17 +526,11 @@ class TestIXIARFC2544Profile(unittest.TestCase): "out_packets": 1000} tol_min = 100.0 tolerance = 0.0 - self.assertIsNotNone(r_f_c2544_profile.get_drop_percentage( - traffic_generator, samples, - tol_min, tolerance, ixia_obj)) + self.assertIsNotNone( + r_f_c2544_profile.get_drop_percentage(samples, tol_min, tolerance, + ixia_obj)) def test_get_drop_percentage_update(self): - traffic_generator = mock.Mock(autospec=TrexProfile) - traffic_generator.my_ports = [0, 1] - traffic_generator.uplink_ports = [0] - traffic_generator.downlink_ports = [1] - traffic_generator.client = \ - mock.Mock(return_value=True) r_f_c2544_profile = IXIARFC2544Profile(self.TRAFFIC_PROFILE) r_f_c2544_profile.params = self.PROFILE ixia_obj = mock.MagicMock() @@ -575,17 +554,11 @@ class TestIXIARFC2544Profile(unittest.TestCase): "out_packets": 1002} tol_min = 0.0 tolerance = 1.0 - self.assertIsNotNone(r_f_c2544_profile.get_drop_percentage( - traffic_generator, samples, - tol_min, tolerance, ixia_obj)) + self.assertIsNotNone( + r_f_c2544_profile.get_drop_percentage(samples, tol_min, tolerance, + ixia_obj)) def test_get_drop_percentage_div_zero(self): - traffic_generator = mock.Mock(autospec=TrexProfile) - traffic_generator.my_ports = [0, 1] - traffic_generator.uplink_ports = [0] - traffic_generator.downlink_ports = [1] - traffic_generator.client = \ - mock.Mock(return_value=True) r_f_c2544_profile = IXIARFC2544Profile(self.TRAFFIC_PROFILE) r_f_c2544_profile.params = self.PROFILE ixia_obj = mock.MagicMock() @@ -610,9 +583,9 @@ class TestIXIARFC2544Profile(unittest.TestCase): tol_min = 0.0 tolerance = 0.0 r_f_c2544_profile.tmp_throughput = 0 - self.assertIsNotNone(r_f_c2544_profile.get_drop_percentage( - traffic_generator, samples, - tol_min, tolerance, ixia_obj)) + self.assertIsNotNone( + r_f_c2544_profile.get_drop_percentage(samples, tol_min, tolerance, + ixia_obj)) def test_get_multiplier(self): r_f_c2544_profile = IXIARFC2544Profile(self.TRAFFIC_PROFILE) @@ -638,8 +611,7 @@ class TestIXIARFC2544Profile(unittest.TestCase): r_f_c2544_profile._ixia_traffic_generate = mock.Mock() self.assertEqual( None, - r_f_c2544_profile.start_ixia_latency(traffic_generator, - ixia_obj)) + r_f_c2544_profile.start_ixia_latency(traffic_generator, ixia_obj)) if __name__ == '__main__': diff --git a/tests/unit/network_services/traffic_profile/test_prox_binsearch.py b/tests/unit/network_services/traffic_profile/test_prox_binsearch.py index c1f1c825b..1b4189b48 100644 --- a/tests/unit/network_services/traffic_profile/test_prox_binsearch.py +++ b/tests/unit/network_services/traffic_profile/test_prox_binsearch.py @@ -32,7 +32,7 @@ if stl_patch: class TestProxBinSearchProfile(unittest.TestCase): def test_execute_1(self): - def target(*args, **kwargs): + def target(*args, **_): runs.append(args[2]) if args[2] < 0 or args[2] > 100: raise RuntimeError(' '.join([str(args), str(runs)])) @@ -43,6 +43,8 @@ class TestProxBinSearchProfile(unittest.TestCase): tp_config = { 'traffic_profile': { 'packet_sizes': [200], + 'test_precision': 2.0, + 'tolerated_loss': 0.001, }, } @@ -61,11 +63,47 @@ class TestProxBinSearchProfile(unittest.TestCase): profile.execute_traffic(traffic_generator) self.assertEqual(round(profile.current_lower, 2), 74.69) - self.assertEqual(round(profile.current_upper, 2), 75.39) - self.assertEqual(len(runs), 8) + self.assertEqual(round(profile.current_upper, 2), 76.09) + self.assertEqual(len(runs), 7) + + # Result Samples inc theor_max + result_tuple = {"Result_Actual_throughput": 7.5e-07, + "Result_theor_max_throughput": 0.00012340000000000002, + "Result_pktSize": 200} + profile.queue.put.assert_called_with(result_tuple) + + success_result_tuple = {"Success_CurrentDropPackets": 0.5, + "Success_DropPackets": 0.5, + "Success_LatencyAvg": 5.3, + "Success_LatencyMax": 5.2, + "Success_LatencyMin": 5.1, + "Success_PktSize": 200, + "Success_RxThroughput": 7.5e-07, + "Success_Throughput": 7.5e-07, + "Success_TxThroughput": 0.00012340000000000002} + + calls = profile.queue.put(success_result_tuple) + profile.queue.put.assert_has_calls(calls) + + success_result_tuple2 = {"Success_CurrentDropPackets": 0.5, + "Success_DropPackets": 0.5, + "Success_LatencyAvg": 5.3, + "Success_LatencyMax": 5.2, + "Success_LatencyMin": 5.1, + "Success_PktSize": 200, + "Success_RxThroughput": 7.5e-07, + "Success_Throughput": 7.5e-07, + "Success_TxThroughput": 123.4, + "Success_can_be_lost": 409600, + "Success_drop_total": 20480, + "Success_rx_total": 4075520, + "Success_tx_total": 4096000} + + calls = profile.queue.put(success_result_tuple2) + profile.queue.put.assert_has_calls(calls) def test_execute_2(self): - def target(*args, **kwargs): + def target(*args, **_): runs.append(args[2]) if args[2] < 0 or args[2] > 100: raise RuntimeError(' '.join([str(args), str(runs)])) @@ -77,6 +115,7 @@ class TestProxBinSearchProfile(unittest.TestCase): 'traffic_profile': { 'packet_sizes': [200], 'test_precision': 2.0, + 'tolerated_loss': 0.001, }, } @@ -97,3 +136,50 @@ class TestProxBinSearchProfile(unittest.TestCase): self.assertEqual(round(profile.current_lower, 2), 24.06) self.assertEqual(round(profile.current_upper, 2), 25.47) self.assertEqual(len(runs), 7) + + def test_execute_3(self): + def target(*args, **_): + runs.append(args[2]) + if args[2] < 0 or args[2] > 100: + raise RuntimeError(' '.join([str(args), str(runs)])) + if args[2] > 75.0: + return fail_tuple, {} + return success_tuple, {} + + tp_config = { + 'traffic_profile': { + 'packet_sizes': [200], + 'test_precision': 2.0, + 'tolerated_loss': 0.001, + }, + } + + runs = [] + success_tuple = ProxTestDataTuple(10.0, 1, 2, 3, 4, [5.1, 5.2, 5.3], 995, 1000, 123.4) + fail_tuple = ProxTestDataTuple(10.0, 1, 2, 3, 4, [5.6, 5.7, 5.8], 850, 1000, 123.4) + + traffic_generator = mock.MagicMock() + + profile_helper = mock.MagicMock() + profile_helper.run_test = target + + profile = ProxBinSearchProfile(tp_config) + profile.init(mock.MagicMock()) + profile._profile_helper = profile_helper + + profile.upper_bound = 100.0 + profile.lower_bound = 99.0 + profile.execute_traffic(traffic_generator) + + + # Result Samples + result_tuple = {"Result_theor_max_throughput": 0, "Result_pktSize": 200} + profile.queue.put.assert_called_with(result_tuple) + + # Check for success_ tuple (None expected) + calls = profile.queue.put.mock_calls + for call in calls: + for call_detail in call[1]: + for k in call_detail: + if "Success_" in k: + self.assertRaises(AttributeError) diff --git a/tests/unit/network_services/traffic_profile/test_traffic_profile.py b/tests/unit/network_services/traffic_profile/test_traffic_profile.py index 8355c85b6..37b9a08d0 100644 --- a/tests/unit/network_services/traffic_profile/test_traffic_profile.py +++ b/tests/unit/network_services/traffic_profile/test_traffic_profile.py @@ -13,15 +13,15 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# -from __future__ import absolute_import +import ipaddress -import unittest import mock +import six +import unittest from tests.unit import STL_MOCKS - +from yardstick.common import exceptions as y_exc STLClient = mock.MagicMock() stl_patch = mock.patch.dict("sys.modules", STL_MOCKS) @@ -56,79 +56,90 @@ class TestTrexProfile(unittest.TestCase): EXAMPLE_IP_ADDR = "10.0.0.1" EXAMPLE_IPv6_ADDR = "0064:ff9b:0:0:0:0:9810:6414" - PROFILE = {'description': 'Traffic profile to run RFC2544 latency', - 'name': 'rfc2544', - 'traffic_profile': {'traffic_type': 'RFC2544Profile', - 'frame_rate': 100}, - TrafficProfile.DOWNLINK: {'ipv4': {'outer_l2': {'framesize': {'64B': '100', - '1518B': '0', - '128B': '0', - '1400B': '0', - '256B': '0', - '373b': '0', - '570B': '0'}, - "srcmac": "00:00:00:00:00:02", - "dstmac": "00:00:00:00:00:01"}, - 'outer_l3v4': {'dstip4': '1.1.1.1-1.1.2.2', - 'proto': 'udp', - 'srcip4': '9.9.1.1-90.1.2.2', - 'dscp': 0, 'ttl': 32, - 'count': 1}, - 'outer_l4': {'srcport': '2001', - 'dsrport': '1234', - 'count': 1}}}, - TrafficProfile.UPLINK: {'ipv4': - {'outer_l2': {'framesize': - {'64B': '100', '1518B': '0', - '128B': '0', '1400B': '0', - '256B': '0', '373b': '0', - '570B': '0'}, - "srcmac": "00:00:00:00:00:01", - "dstmac": "00:00:00:00:00:02"}, - 'outer_l3v4': {'dstip4': '9.9.1.1-90.105.255.255', - 'proto': 'udp', - 'srcip4': '1.1.1.1-1.15.255.255', - 'dscp': 0, 'ttl': 32, 'count': 1}, - 'outer_l4': {'dstport': '2001', - 'srcport': '1234', - 'count': 1}}}, - 'schema': 'isb:traffic_profile:0.1'} - PROFILE_v6 = {'description': 'Traffic profile to run RFC2544 latency', - 'name': 'rfc2544', - 'traffic_profile': {'traffic_type': 'RFC2544Profile', - 'frame_rate': 100}, - TrafficProfile.DOWNLINK: {'ipv6': {'outer_l2': {'framesize': - {'64B': '100', '1518B': '0', - '128B': '0', '1400B': '0', - '256B': '0', '373b': '0', - '570B': '0'}, - "srcmac": "00:00:00:00:00:02", - "dstmac": "00:00:00:00:00:01"}, - 'outer_l3v4': {'dstip6': '0064:ff9b:0:0:0:0:9810:6414-0064:ff9b:0:0:0:0:9810:6420', - 'proto': 'udp', - 'srcip6': '0064:ff9b:0:0:0:0:9810:2814-0064:ff9b:0:0:0:0:9810:2820', - 'dscp': 0, 'ttl': 32, - 'count': 1}, - 'outer_l4': {'srcport': '2001', - 'dsrport': '1234', - 'count': 1}}}, - TrafficProfile.UPLINK: - {'ipv6': {'outer_l2': {'framesize': - {'64B': '100', '1518B': '0', - '128B': '0', '1400B': '0', - '256B': '0', '373b': '0', - '570B': '0'}, - "srcmac": "00:00:00:00:00:01", - "dstmac": "00:00:00:00:00:02"}, - 'outer_l3v4': {'dstip6': '0064:ff9b:0:0:0:0:9810:2814-0064:ff9b:0:0:0:0:9810:2820', - 'proto': 'udp', - 'srcip6': '0064:ff9b:0:0:0:0:9810:6414-0064:ff9b:0:0:0:0:9810:6420', - 'dscp': 0, 'ttl': 32, - 'count': 1}, - 'outer_l4': {'dstport': '2001', - 'srcport': '1234', - 'count': 1}}}, - 'schema': 'isb:traffic_profile:0.1'} + PROFILE = { + 'description': 'Traffic profile to run RFC2544 latency', + 'name': 'rfc2544', + 'traffic_profile': {'traffic_type': 'RFC2544Profile', + 'frame_rate': 100}, + TrafficProfile.DOWNLINK: { + 'ipv4': {'outer_l2': {'framesize': {'64B': '100', + '1518B': '0', + '128B': '0', + '1400B': '0', + '256B': '0', + '373b': '0', + '570B': '0'}, + "srcmac": "00:00:00:00:00:02", + "dstmac": "00:00:00:00:00:01"}, + 'outer_l3v4': {'dstip4': '1.1.1.1-1.1.2.2', + 'proto': 'udp', + 'srcip4': '9.9.1.1-90.1.2.2', + 'dscp': 0, 'ttl': 32, + 'count': 1}, + 'outer_l4': {'srcport': '2001', + 'dsrport': '1234', + 'count': 1}}}, + TrafficProfile.UPLINK: { + 'ipv4': + {'outer_l2': {'framesize': + {'64B': '100', '1518B': '0', + '128B': '0', '1400B': '0', + '256B': '0', '373b': '0', + '570B': '0'}, + "srcmac": "00:00:00:00:00:01", + "dstmac": "00:00:00:00:00:02"}, + 'outer_l3v4': {'dstip4': '9.9.1.1-90.105.255.255', + 'proto': 'udp', + 'srcip4': '1.1.1.1-1.15.255.255', + 'dscp': 0, 'ttl': 32, 'count': 1}, + 'outer_l4': {'dstport': '2001', + 'srcport': '1234', + 'count': 1}}}, + 'schema': 'isb:traffic_profile:0.1'} + PROFILE_v6 = { + 'description': 'Traffic profile to run RFC2544 latency', + 'name': 'rfc2544', + 'traffic_profile': {'traffic_type': 'RFC2544Profile', + 'frame_rate': 100}, + TrafficProfile.DOWNLINK: { + 'ipv6': {'outer_l2': {'framesize': + {'64B': '100', '1518B': '0', + '128B': '0', '1400B': '0', + '256B': '0', '373b': '0', + '570B': '0'}, + "srcmac": "00:00:00:00:00:02", + "dstmac": "00:00:00:00:00:01"}, + 'outer_l3v4': { + 'dstip6': + '0064:ff9b:0:0:0:0:9810:6414-0064:ff9b:0:0:0:0:9810:6420', + 'proto': 'udp', + 'srcip6': + '0064:ff9b:0:0:0:0:9810:2814-0064:ff9b:0:0:0:0:9810:2820', + 'dscp': 0, 'ttl': 32, + 'count': 1}, + 'outer_l4': {'srcport': '2001', + 'dsrport': '1234', + 'count': 1}}}, + TrafficProfile.UPLINK: { + 'ipv6': {'outer_l2': {'framesize': + {'64B': '100', '1518B': '0', + '128B': '0', '1400B': '0', + '256B': '0', '373b': '0', + '570B': '0'}, + "srcmac": "00:00:00:00:00:01", + "dstmac": "00:00:00:00:00:02"}, + 'outer_l3v4': { + 'dstip6': + '0064:ff9b:0:0:0:0:9810:2814-0064:ff9b:0:0:0:0:9810:2820', + 'proto': 'udp', + 'srcip6': + '0064:ff9b:0:0:0:0:9810:6414-0064:ff9b:0:0:0:0:9810:6420', + 'dscp': 0, 'ttl': 32, + 'count': 1}, + 'outer_l4': {'dstport': '2001', + 'srcport': '1234', + 'count': 1}}}, + 'schema': 'isb:traffic_profile:0.1'} def test___init__(self): TrafficProfile.params = self.PROFILE @@ -205,22 +216,76 @@ class TestTrexProfile(unittest.TestCase): TrexProfile(TrafficProfile) self.assertEqual({}, trex_profile.generate_imix_data(False)) - def test__get_start_end_ipv6(self): - trex_profile = \ - TrexProfile(TrafficProfile) - self.assertRaises(SystemExit, trex_profile._get_start_end_ipv6, - "1.1.1.3", "1.1.1.1") + def test__count_ip_ipv4(self): + start, end, count = TrexProfile._count_ip('1.1.1.1', '1.2.3.4') + self.assertEqual('1.1.1.1', str(start)) + self.assertEqual('1.2.3.4', str(end)) + diff = (int(ipaddress.IPv4Address(six.u('1.2.3.4'))) - + int(ipaddress.IPv4Address(six.u('1.1.1.1')))) + self.assertEqual(diff, count) + + def test__count_ip_ipv6(self): + start_ip = '0064:ff9b:0:0:0:0:9810:6414' + end_ip = '0064:ff9b:0:0:0:0:9810:6420' + start, end, count = TrexProfile._count_ip(start_ip, end_ip) + self.assertEqual(0x98106414, start) + self.assertEqual(0x98106420, end) + self.assertEqual(0x98106420 - 0x98106414, count) + + def test__count_ip_ipv6_exception(self): + start_ip = '0064:ff9b:0:0:0:0:9810:6420' + end_ip = '0064:ff9b:0:0:0:0:9810:6414' + with self.assertRaises(y_exc.IPv6RangeError): + TrexProfile._count_ip(start_ip, end_ip) + + def test__dscp_range_action_partial_actual_count_zero(self): + traffic_profile = TrexProfile(TrafficProfile) + dscp_partial = traffic_profile._dscp_range_action_partial() + + flow_vars_initial_length = len(traffic_profile.vm_flow_vars) + dscp_partial('1', '1', 'unneeded') + self.assertEqual(len(traffic_profile.vm_flow_vars), flow_vars_initial_length + 2) + + def test__dscp_range_action_partial_count_greater_than_actual(self): + traffic_profile = TrexProfile(TrafficProfile) + dscp_partial = traffic_profile._dscp_range_action_partial() + + flow_vars_initial_length = len(traffic_profile.vm_flow_vars) + dscp_partial('1', '10', '100') + self.assertEqual(len(traffic_profile.vm_flow_vars), flow_vars_initial_length + 2) + + def test__udp_range_action_partial_actual_count_zero(self): + traffic_profile = TrexProfile(TrafficProfile) + traffic_profile.udp['field1'] = 'value1' + udp_partial = traffic_profile._udp_range_action_partial('field1') + + flow_vars_initial_length = len(traffic_profile.vm_flow_vars) + udp_partial('1', '1', 'unneeded') + self.assertEqual(len(traffic_profile.vm_flow_vars), flow_vars_initial_length + 2) + + def test__udp_range_action_partial_count_greater_than_actual(self): + traffic_profile = TrexProfile(TrafficProfile) + traffic_profile.udp['field1'] = 'value1' + udp_partial = traffic_profile._udp_range_action_partial('field1', 'not_used_count') + + flow_vars_initial_length = len(traffic_profile.vm_flow_vars) + udp_partial('1', '10', '100') + self.assertEqual(len(traffic_profile.vm_flow_vars), flow_vars_initial_length + 2) def test__general_single_action_partial(self): trex_profile = TrexProfile(TrafficProfile) - trex_profile._general_single_action_partial(ETHERNET)(SRC)(self.EXAMPLE_ETHERNET_ADDR) - self.assertEqual(self.EXAMPLE_ETHERNET_ADDR, trex_profile.ether_packet.src) + trex_profile._general_single_action_partial(ETHERNET)(SRC)( + self.EXAMPLE_ETHERNET_ADDR) + self.assertEqual(self.EXAMPLE_ETHERNET_ADDR, + trex_profile.ether_packet.src) - trex_profile._general_single_action_partial(IP)(DST)(self.EXAMPLE_IP_ADDR) + trex_profile._general_single_action_partial(IP)(DST)( + self.EXAMPLE_IP_ADDR) self.assertEqual(self.EXAMPLE_IP_ADDR, trex_profile.ip_packet.dst) - trex_profile._general_single_action_partial(IPv6)(DST)(self.EXAMPLE_IPv6_ADDR) + trex_profile._general_single_action_partial(IPv6)(DST)( + self.EXAMPLE_IPv6_ADDR) self.assertEqual(self.EXAMPLE_IPv6_ADDR, trex_profile.ip6_packet.dst) trex_profile._general_single_action_partial(UDP)(SRC_PORT)(5060) diff --git a/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py index 2a2647a91..f9a10149e 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_acl_vnf.py @@ -343,6 +343,6 @@ class TestAclApproxVnf(unittest.TestCase): acl_approx_vnf.used_drivers = {"01:01.0": "i40e", "01:01.1": "i40e"} acl_approx_vnf.vnf_execute = mock.MagicMock() - acl_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py" + acl_approx_vnf.dpdk_devbind = "dpdk-devbind.py" acl_approx_vnf._resource_collect_stop = mock.Mock() self.assertEqual(None, acl_approx_vnf.terminate()) diff --git a/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py index f2ce18fb3..62b3c7440 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py @@ -392,22 +392,6 @@ class TestCgnaptApproxVnf(unittest.TestCase): @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time") @mock.patch(SSH_HELPER) - def test_terminate(self, ssh, *args): - mock_ssh(ssh) - - vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] - cgnapt_approx_vnf = CgnaptApproxVnf(name, vnfd) - cgnapt_approx_vnf._vnf_process = mock.MagicMock() - cgnapt_approx_vnf._vnf_process.terminate = mock.Mock() - cgnapt_approx_vnf.used_drivers = {"01:01.0": "i40e", - "01:01.1": "i40e"} - cgnapt_approx_vnf.vnf_execute = mock.MagicMock() - cgnapt_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py" - cgnapt_approx_vnf._resource_collect_stop = mock.Mock() - self.assertEqual(None, cgnapt_approx_vnf.terminate()) - - @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time") - @mock.patch(SSH_HELPER) def test__vnf_up_post(self, ssh, *args): mock_ssh(ssh) diff --git a/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py b/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py index 0ac46c632..ac67cc52c 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_prox_helpers.py @@ -1730,7 +1730,7 @@ class TestProxProfileHelper(unittest.TestCase): } self.assertIsNone(helper._test_cores) - expected = [12, 23] + expected = [3, 4] result = helper.test_cores self.assertEqual(result, expected) self.assertIs(result, helper._test_cores) @@ -1787,7 +1787,7 @@ class TestProxProfileHelper(unittest.TestCase): } self.assertIsNone(helper._latency_cores) - expected = [12, 23] + expected = [3, 4] result = helper.latency_cores self.assertEqual(result, expected) self.assertIs(result, helper._latency_cores) @@ -1842,7 +1842,7 @@ class TestProxProfileHelper(unittest.TestCase): } } - expected = [7, 8] + expected = [3, 4] result = helper.get_cores(helper.PROX_CORE_GEN_MODE) self.assertEqual(result, expected) @@ -1984,8 +1984,8 @@ class TestProxMplsProfileHelper(unittest.TestCase): } } - expected_tagged = [7] - expected_plain = [8] + expected_tagged = [3] + expected_plain = [4] self.assertIsNone(helper._cores_tuple) self.assertEqual(helper.tagged_cores, expected_tagged) self.assertEqual(helper.plain_cores, expected_plain) @@ -2060,10 +2060,10 @@ class TestProxBngProfileHelper(unittest.TestCase): } } - expected_cpe = [7] - expected_inet = [8] - expected_arp = [4, 3] - expected_arp_task = [0, 4] + expected_cpe = [3] + expected_inet = [4] + expected_arp = [6, 9] + expected_arp_task = [0, 6] expected_combined = (expected_cpe, expected_inet, expected_arp, expected_arp_task) self.assertIsNone(helper._cores_tuple) @@ -2131,8 +2131,8 @@ class TestProxVpeProfileHelper(unittest.TestCase): } } - expected_cpe = [7] - expected_inet = [8] + expected_cpe = [3] + expected_inet = [4] expected_combined = (expected_cpe, expected_inet) self.assertIsNone(helper._cores_tuple) @@ -2245,8 +2245,8 @@ class TestProxlwAFTRProfileHelper(unittest.TestCase): } } - expected_tun = [7] - expected_inet = [8] + expected_tun = [3] + expected_inet = [4] expected_combined = (expected_tun, expected_inet) self.assertIsNone(helper._cores_tuple) diff --git a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py index 769279066..08be4865b 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py @@ -131,6 +131,8 @@ class TestProxApproxVnf(unittest.TestCase): 'packets_in', 'packets_fwd', 'packets_dropped', + 'curr_packets_fwd', + 'curr_packets_in' ], }, 'connection-point': [ @@ -329,7 +331,7 @@ class TestProxApproxVnf(unittest.TestCase): 'packets_in': 0, 'packets_dropped': 0, 'packets_fwd': 0, - 'collect_stats': {'core': {}}, + 'collect_stats': {'core': {}} } result = prox_approx_vnf.collect_kpi() self.assertEqual(result, expected) @@ -352,7 +354,11 @@ class TestProxApproxVnf(unittest.TestCase): 'collect_stats': {'core': {'result': 234}}, } result = prox_approx_vnf.collect_kpi() - self.assertEqual(result, expected) + self.assertEqual(result['packets_in'], expected['packets_in']) + self.assertEqual(result['packets_dropped'], expected['packets_dropped']) + self.assertEqual(result['packets_fwd'], expected['packets_fwd']) + self.assertNotEqual(result['packets_fwd'], 0) + self.assertNotEqual(result['packets_fwd'], 0) @mock.patch(SSH_HELPER) def test_collect_kpi_error(self, ssh, *args): diff --git a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py index 1799353c4..cc4ffa5f7 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py @@ -609,37 +609,34 @@ class TestDpdkVnfSetupEnvHelper(unittest.TestCase): dpdk_vnf_setup_env_helper.setup_vnf_environment(), ResourceProfile) - def test__setup_dpdk_early_success(self): - vnfd_helper = VnfdHelper(self.VNFD_0) + def test__setup_dpdk(self): ssh_helper = mock.Mock() - ssh_helper.execute.return_value = 0, 'output', '' - ssh_helper.join_bin_path.return_value = 'joined_path' - ssh_helper.provision_tool.return_value = 'provision string' - scenario_helper = mock.Mock() - dpdk_setup_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper) - dpdk_setup_helper._setup_hugepages = mock.Mock() - - self.assertIsNone(dpdk_setup_helper._setup_dpdk()) - self.assertEqual(dpdk_setup_helper.ssh_helper.execute.call_count, 2) - - @mock.patch('yardstick.ssh.SSH') - def test__setup_dpdk_short(self, _): - def execute_side(cmd): - if 'joined_path' in cmd: - return 0, 'output', '' - return 1, 'bad output', 'error output' + ssh_helper.execute = mock.Mock() + ssh_helper.execute.return_value = (0, 0, 0) + dpdk_setup_helper = DpdkVnfSetupEnvHelper(mock.ANY, ssh_helper, mock.ANY) + with mock.patch.object(dpdk_setup_helper, '_setup_hugepages') as \ + mock_setup_hp: + dpdk_setup_helper._setup_dpdk() + mock_setup_hp.assert_called_once() + ssh_helper.execute.assert_has_calls([ + mock.call('sudo modprobe uio && sudo modprobe igb_uio'), + mock.call('lsmod | grep -i igb_uio') + ]) - vnfd_helper = VnfdHelper(self.VNFD_0) + def test__setup_dpdk_igb_uio_not_loaded(self): ssh_helper = mock.Mock() - ssh_helper.execute.side_effect = execute_side - ssh_helper.join_bin_path.return_value = 'joined_path' - ssh_helper.provision_tool.return_value = 'provision string' - scenario_helper = mock.Mock() - dpdk_setup_helper = DpdkVnfSetupEnvHelper(vnfd_helper, ssh_helper, scenario_helper) - dpdk_setup_helper._setup_hugepages = mock.Mock() - - self.assertIsNone(dpdk_setup_helper._setup_dpdk()) - self.assertEqual(dpdk_setup_helper.ssh_helper.execute.call_count, 3) + ssh_helper.execute = mock.Mock() + ssh_helper.execute.side_effect = [(0, 0, 0), (1, 0, 0)] + dpdk_setup_helper = DpdkVnfSetupEnvHelper(mock.ANY, ssh_helper, mock.ANY) + with mock.patch.object(dpdk_setup_helper, '_setup_hugepages') as \ + mock_setup_hp: + with self.assertRaises(y_exceptions.DPDKSetupDriverError): + dpdk_setup_helper._setup_dpdk() + mock_setup_hp.assert_called_once() + ssh_helper.execute.assert_has_calls([ + mock.call('sudo modprobe uio && sudo modprobe igb_uio'), + mock.call('lsmod | grep -i igb_uio') + ]) @mock.patch('yardstick.ssh.SSH') def test__setup_resources(self, _): diff --git a/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py b/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py index e6e4b882e..d77068137 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_tg_ixload.py @@ -151,6 +151,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.shutil") def test_instantiate(self, call, shutil, mock_makedirs): + # pylint: disable=unused-argument with mock.patch("yardstick.ssh.SSH") as ssh: ssh_mock = mock.Mock(autospec=ssh.SSH) ssh_mock.execute = \ @@ -174,7 +175,8 @@ class TestIxLoadTrafficGen(unittest.TestCase): '1C/1T', 'worker_threads': 1}} }}) - with mock.patch('yardstick.benchmark.scenarios.networking.vnf_generic.open', create=True) as mock_open: + with mock.patch('yardstick.benchmark.scenarios.networking.vnf_generic.open', + create=True) as mock_open: mock_open.return_value = mock.MagicMock() ixload_traffic_gen.instantiate(scenario_cfg, {}) @@ -185,6 +187,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.max") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.len") def test_run_traffic(self, call, shutil, main_open, min, max, len): + # pylint: disable=unused-argument mock_traffic_profile = mock.Mock(autospec=TrafficProfile) mock_traffic_profile.get_traffic_definition.return_value = "64" mock_traffic_profile.params = self.TRAFFIC_PROFILE @@ -216,6 +219,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.max") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.len") def test_run_traffic_csv(self, call, shutil, main_open, min, max, len): + # pylint: disable=unused-argument mock_traffic_profile = mock.Mock(autospec=TrafficProfile) mock_traffic_profile.get_traffic_definition.return_value = "64" mock_traffic_profile.params = self.TRAFFIC_PROFILE @@ -243,7 +247,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): self.assertIsNone(result) @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") - def test_terminate(self, call): + def test_terminate(self, *args): with mock.patch("yardstick.ssh.SSH") as ssh: vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] ssh_mock = mock.Mock(autospec=ssh.SSH) @@ -256,6 +260,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): @mock.patch("yardstick.ssh.SSH") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") def test_parse_csv_read(self, mock_call, mock_ssh): + # pylint: disable=unused-argument vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] kpi_data = { 'HTTP Total Throughput (Kbps)': 1, @@ -280,6 +285,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): @mock.patch("yardstick.ssh.SSH") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") def test_parse_csv_read_value_error(self, mock_call, mock_ssh): + # pylint: disable=unused-argument vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] http_reader = [{ 'HTTP Total Throughput (Kbps)': 1, @@ -302,6 +308,7 @@ class TestIxLoadTrafficGen(unittest.TestCase): @mock.patch("yardstick.ssh.SSH") @mock.patch("yardstick.network_services.vnf_generic.vnf.tg_ixload.call") def test_parse_csv_read_error(self, mock_call, mock_ssh): + # pylint: disable=unused-argument vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] http_reader = [{ 'HTTP Total Throughput (Kbps)': 1, diff --git a/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py b/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py index cda3852fe..472052b0a 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_udp_replay.py @@ -462,15 +462,3 @@ class TestUdpReplayApproxVnf(unittest.TestCase): self.assertIsNone(udp_replay_approx_vnf.instantiate(self.SCENARIO_CFG, self.CONTEXT_CFG)) with self.assertRaises(RuntimeError): udp_replay_approx_vnf.wait_for_instantiate() - - @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time") - @mock.patch(SSH_HELPER) - 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()) diff --git a/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py index d128db0b4..f0a56665c 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_vfw_vnf.py @@ -348,18 +348,3 @@ pipeline> 'rules': ""}} self.scenario_cfg.update({"nodes": {"vnf__1": ""}}) self.assertIsNone(vfw_approx_vnf.instantiate(self.scenario_cfg, self.context_cfg)) - - @mock.patch("yardstick.network_services.vnf_generic.vnf.sample_vnf.time") - @mock.patch(SSH_HELPER) - def test_terminate(self, ssh, *args): - mock_ssh(ssh) - - vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0] - vfw_approx_vnf = FWApproxVnf(name, vnfd) - vfw_approx_vnf._vnf_process = mock.MagicMock() - vfw_approx_vnf.used_drivers = {"01:01.0": "i40e", - "01:01.1": "i40e"} - vfw_approx_vnf.vnf_execute = mock.Mock() - vfw_approx_vnf.dpdk_nic_bind = "dpdk_nic_bind.py" - vfw_approx_vnf._resource_collect_stop = mock.Mock() - self.assertIsNone(vfw_approx_vnf.terminate()) diff --git a/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py index 1abc53688..c074dfb4c 100644 --- a/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py +++ b/tests/unit/network_services/vnf_generic/vnf/test_vpe_vnf.py @@ -163,6 +163,11 @@ class TestConfigCreate(unittest.TestCase): self.assertEqual(config_create.downlink_ports, ['xe1']) self.assertEqual(config_create.socket, 2) + def test_dpdk_port_to_link_id(self): + vnfd_helper = VnfdHelper(self.VNFD_0) + config_create = ConfigCreate(vnfd_helper, 2) + self.assertEqual(config_create.dpdk_port_to_link_id_map, {'xe0': 0, 'xe1': 1}) + def test_vpe_initialize(self): vnfd_helper = VnfdHelper(self.VNFD_0) config_create = ConfigCreate(vnfd_helper, 2) @@ -633,7 +638,7 @@ class TestVpeApproxVnf(unittest.TestCase): def test_build_config(self, ssh, *args): mock_ssh(ssh) vpe_approx_vnf = VpeApproxSetupEnvHelper(mock.MagicMock(), - mock.MagicMock, mock.MagicMock) + mock.MagicMock(), mock.MagicMock()) vpe_approx_vnf.tc_file_name = get_file_abspath(TEST_FILE_YAML) vpe_approx_vnf.generate_port_pairs = mock.Mock() vpe_approx_vnf.vnf_cfg = { |