X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=core%2Fcomponent_factory.py;h=0256b85c19c51cedcb0609086926f0f72312f612;hb=ba1f2ace691c0564965770855b1128eec2f0cb9b;hp=af237e5078e698d160a0a9ac1b20b96f534bf0ef;hpb=9a054248197bdaed71b32e9d9c0ac621bf89c1cd;p=vswitchperf.git diff --git a/core/component_factory.py b/core/component_factory.py index af237e50..0256b85c 100644 --- a/core/component_factory.py +++ b/core/component_factory.py @@ -1,4 +1,4 @@ -# Copyright 2015 Intel Corporation. +# Copyright 2015-2017 Intel Corporation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,9 +16,12 @@ """ from core.traffic_controller_rfc2544 import TrafficControllerRFC2544 +from core.traffic_controller_rfc2889 import TrafficControllerRFC2889 +from core.vswitch_controller_clean import VswitchControllerClean from core.vswitch_controller_p2p import VswitchControllerP2P -from core.vswitch_controller_pvp import VswitchControllerPVP -from core.vswitch_controller_pvvp import VswitchControllerPVVP +from core.vswitch_controller_pxp import VswitchControllerPXP +from core.vswitch_controller_op2p import VswitchControllerOP2P +from core.vswitch_controller_ptunp import VswitchControllerPtunP from core.vnf_controller import VnfController from core.pktfwd_controller import PktFwdController from tools.load_gen.stress.stress import Stress @@ -43,32 +46,49 @@ def create_traffic(traffic_type, trafficgen_class): :param traffic_type: Name of traffic type :param trafficgen_class: Reference to traffic generator class to be used. - :return: A new ITrafficController + :return: A new TrafficController """ - return TrafficControllerRFC2544(trafficgen_class) + if traffic_type.lower().startswith('rfc2889'): + return TrafficControllerRFC2889(trafficgen_class) + else: + return TrafficControllerRFC2544(trafficgen_class) -def create_vswitch(deployment_scenario, vswitch_class, traffic): +def create_vswitch(deployment_scenario, vswitch_class, traffic, + tunnel_operation=None): """Return a new IVSwitchController for the deployment_scenario. The returned controller is configured with the given vSwitch class. - Deployment scenarios: 'p2p', 'pvp' + Deployment scenarios: e.g. 'p2p', 'pvp', 'pvpv12', etc. :param deployment_scenario: The deployment scenario name :param vswitch_class: Reference to vSwitch class to be used. :param traffic: Dictionary with traffic specific details + :param tunnel_operation encapsulation/decapsulation or None :return: IVSwitchController for the deployment_scenario """ + # pylint: disable=too-many-return-statements deployment_scenario = deployment_scenario.lower() - if deployment_scenario.find("p2p") >= 0: + if deployment_scenario.startswith("p2p"): return VswitchControllerP2P(vswitch_class, traffic) - elif deployment_scenario.find("pvp") >= 0: - return VswitchControllerPVP(vswitch_class, traffic) - elif deployment_scenario.find("pvvp") >= 0: - return VswitchControllerPVVP(vswitch_class, traffic) - -def create_vnf(deployment_scenario, vnf_class): + elif deployment_scenario.startswith("pvp"): + return VswitchControllerPXP(deployment_scenario, vswitch_class, traffic) + elif deployment_scenario.startswith("pvvp"): + return VswitchControllerPXP(deployment_scenario, vswitch_class, traffic) + elif deployment_scenario.startswith("pvpv"): + return VswitchControllerPXP(deployment_scenario, vswitch_class, traffic) + elif deployment_scenario.startswith("op2p"): + return VswitchControllerOP2P(vswitch_class, traffic, tunnel_operation) + elif deployment_scenario.startswith("ptunp"): + return VswitchControllerPtunP(vswitch_class, traffic) + elif deployment_scenario.startswith("clean"): + return VswitchControllerClean(vswitch_class, traffic) + else: + raise RuntimeError("Unknown deployment scenario '{}'.".format(deployment_scenario)) + + +def create_vnf(deployment_scenario, vnf_class, extra_vnfs): """Return a new VnfController for the deployment_scenario. The returned controller is configured with the given VNF class. @@ -77,9 +97,13 @@ def create_vnf(deployment_scenario, vnf_class): :param deployment_scenario: The deployment scenario name :param vswitch_class: Reference to vSwitch class to be used. + :param extra_vnfs: The number of VNFs not involved in given + deployment scenario. It will be used to correctly expand + configuration values and initialize shared dirs. This parameter + is used in case, that additional VNFs are executed by TestSteps. :return: VnfController for the deployment_scenario """ - return VnfController(deployment_scenario, vnf_class) + return VnfController(deployment_scenario, vnf_class, extra_vnfs) def create_collector(collector_class, result_dir, test_name): """Return a new Collector of the given class @@ -101,6 +125,7 @@ def create_loadgen(loadgen_type, loadgen_cfg): :param loadgen_class: Reference to load generator class to be used. :return: A new ILoadGenerator class """ + # pylint: disable=too-many-function-args loadgen_type = loadgen_type.lower() if loadgen_type.find("dummy") >= 0: return DummyLoadGen(loadgen_cfg) @@ -109,13 +134,14 @@ def create_loadgen(loadgen_type, loadgen_cfg): elif loadgen_type.find("stress") >= 0: return Stress(loadgen_cfg) -def create_pktfwd(pktfwd_class): +def create_pktfwd(deployment, pktfwd_class): """Return a new packet forwarder controller The returned controller is configured with the given packet forwarder class. :param pktfwd_class: Reference to packet forwarder class to be used. + :param deployment: The deployment scenario name :return: packet forwarder controller """ - return PktFwdController(pktfwd_class) + return PktFwdController(deployment, pktfwd_class)