X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=test%2Ftest_chains.py;h=ebc606ebf7f56a4eef49ab66a258ffabd32d74ea;hb=ed1df5da8e6468ec7a0e25a853fe803bfc0af3f6;hp=e952eb8b31c5a0147d59e7f0a8e9a544a7455741;hpb=c0ef57f8ec086c07053d529510992c869c30c9d2;p=nfvbench.git diff --git a/test/test_chains.py b/test/test_chains.py index e952eb8..ebc606e 100644 --- a/test/test_chains.py +++ b/test/test_chains.py @@ -49,17 +49,17 @@ def setup_module(module): nfvbench.log.setup(mute_stdout=False) nfvbench.log.set_level(debug=True) -def _get_chain_config(sc=ChainType.PVP, scc=1, shared_net=True): +def _get_chain_config(sc=ChainType.PVP, scc=1, shared_net=True, rate='1Mpps'): config, _ = load_default_config() config.vm_image_file = 'nfvbenchvm-0.0.qcow2' config.service_chain_count = scc config.service_chain = sc config.service_chain_shared_net = shared_net - config.rate = '1Mpps' + config.rate = rate config['traffic_generator']['generator_profile'] = [{'name': 'dummy', 'tool': 'dummy', 'ip': '127.0.0.1', - 'intf_speed': None, + 'intf_speed': '10Gbps', 'interfaces': [{'port': 0, 'pci': '0.0'}, {'port': 1, 'pci': '0.0'}]}] config.ndr_run = False @@ -78,8 +78,28 @@ def test_chain_runner_ext_no_openstack(): config.vlans = [100, 200] config['traffic_generator']['mac_addrs_left'] = ['00:00:00:00:00:00'] config['traffic_generator']['mac_addrs_right'] = ['00:00:00:00:01:00'] - runner = ChainRunner(config, None, specs, BasicFactory()) - runner.close() + + for shared_net in [True, False]: + for no_arp in [False, True]: + for vlan_tag in [False, True]: + for scc in [1, 2]: + config = _get_chain_config(ChainType.EXT, scc, shared_net) + config.no_arp = no_arp + if no_arp: + # If EXT and no arp, the config must provide mac (1 pair per chain) + config['traffic_generator']['mac_addrs_left'] = ['00:00:00:00:00:00'] * scc + config['traffic_generator']['mac_addrs_right'] = ['00:00:00:00:01:00'] * scc + config['vlan_tagging'] = vlan_tag + if vlan_tag: + # these are the 2 valid forms of vlan ranges + if scc == 1: + config.vlans = [100, 200] + else: + config.vlans = [[port * 100 + index for index in range(scc)] + for port in range(2)] + runner = ChainRunner(config, None, specs, BasicFactory()) + runner.close() + def _mock_find_image(self, image_name): return True @@ -129,7 +149,11 @@ def _test_ext_chain(config, cred, mock_glance, mock_neutron, mock_client): runner.close() def test_ext_chain_runner(): - """Test openstack+EXT chain runner.""" + """Test openstack+EXT chain runner. + + Test 8 combinations of configs: + shared/not shared net x arp/no_arp x scc 1 or 2 + """ cred = MagicMock(spec=nfvbench.credentials.Credentials) for shared_net in [True, False]: for no_arp in [False, True]: @@ -298,7 +322,7 @@ def test_placer_user_az(): def test_placer_user_hyp(): """Test placement when user provides a hypervisor.""" - check_placer(None, 'comp1', 'comp1') + check_placer(None, 'comp1', ':comp1') check_placer('nova', 'comp1', 'nova:comp1', resolved=True) check_placer(None, 'nova:comp1', 'nova:comp1', resolved=True) # hyp overrides az @@ -332,7 +356,11 @@ CHAIN_STATS = [{0: {'packets': [2000054, 1999996, 1999996]}}, 'total': {'packets': [30000004, 30000004, 30000004, 30000004, 30000004, 30000004]}}, {0: {'packets': [15000002, '', 14000002, 14000002, '', 13000002]}, 1: {'packets': [15000002, '', 15000002, 15000002, '', 15000002]}, - 'total': {'packets': [30000004, 29000004, 29000004, 29000004, 29000004, 28000004]}}] + 'total': {'packets': [30000004, 29000004, 29000004, 29000004, 29000004, 28000004]}}, + # example with non-available rx count in last position + {0: {'packets': [2000054, 1999996, None]}, + 1: {'packets': [2000054, 2000054, None]}, + 'total': {'packets': [4000108, 4000050, 4000050]}}] XP_CHAIN_STATS = [{0: {'packets': [2000054, '-58 (-0.0029%)', 1999996]}}, {0: {'packets': [2000054, '-58 (-0.0029%)', 1999996]}, 1: {'packets': [2000054, '=>', 2000054]}, @@ -347,7 +375,10 @@ XP_CHAIN_STATS = [{0: {'packets': [2000054, '-58 (-0.0029%)', 1999996]}}, '-1,000,000 (-7.1429%)']}, 1: {'packets': [15000002, '', '=>', '=>', '', 15000002]}, 'total': {'packets': [30000004, '-1,000,000 (-3.3333%)', '=>', '=>', '=>', - '-1,000,000 (-3.4483%)']}}] + '-1,000,000 (-3.4483%)']}}, + {0: {'packets': [2000054, '-58 (-0.0029%)', 'n/a']}, + 1: {'packets': [2000054, '=>', 'n/a']}, + 'total': {'packets': [4000108, '-58 (-0.0014%)', 4000050]}}] def test_summarizer(): @@ -355,3 +386,27 @@ def test_summarizer(): for stats, exp_stats in zip(CHAIN_STATS, XP_CHAIN_STATS): _annotate_chain_stats(stats) assert stats == exp_stats + +@patch.object(TrafficClient, 'skip_sleep', lambda x: True) +def test_fixed_rate_no_openstack(): + """Test FIxed Rate run - no openstack.""" + config = _get_chain_config(ChainType.EXT, 1, True, rate='100%') + specs = Specs() + config.vlans = [100, 200] + config['traffic_generator']['mac_addrs_left'] = ['00:00:00:00:00:00'] + config['traffic_generator']['mac_addrs_right'] = ['00:00:00:00:01:00'] + config.no_arp = True + config['vlan_tagging'] = True + config['traffic'] = {'profile': 'profile_64', + 'bidirectional': True} + config['traffic_profile'] = [{'name': 'profile_64', 'l2frame_size': ['64']}] + + runner = ChainRunner(config, None, specs, BasicFactory()) + tg = runner.traffic_client.gen + + tg.set_response_curve(lr_dr=0, ndr=100, max_actual_tx=50, max_11_tx=50) + # tx packets should be 50% at requested 50% line rate or higher for 64B and no drops... + results = runner.run() + assert results + # pprint.pprint(results['EXT']['result']['result']['64']) + runner.close()