trafficgen: Postponed call of connect() 77/49277/1
authorMartin Klozik <martinx.klozik@intel.com>
Tue, 19 Dec 2017 08:48:11 +0000 (08:48 +0000)
committerMartin Klozik <martinx.klozik@intel.com>
Tue, 19 Dec 2017 10:10:39 +0000 (10:10 +0000)
In order to support execution of SW traffic generator inside VM,
we have to postpone the call of connect() method from traffic controller.
Currently it is called during initialization phase, when VMs are not
active and thus connect() would always fail. This patch moves the call
of connect() inside configure() method, which is called later when VMs
are up and running.
This modification allows to configure VM to VM scenario, where 1st VM is
running a loopback application and 2nd one executes one of supported SW
traffic generators, i.e. T-Rex or MoonGen.

Change-Id: Ifeb659aadaa2e1cd5975564965e1719c1e72a12e
Signed-off-by: Martin Klozik <martinx.klozik@intel.com>
Reviewed-by: Al Morton <acmorton@att.com>
Reviewed-by: Christian Trautman <ctrautma@redhat.com>
Reviewed-by: Sridhar Rao <sridhar.rao@spirent.com>
Reviewed-by: Trevor Cooper <trevor.cooper@intel.com>
core/traffic_controller.py

index d6e7629..de82ddd 100644 (file)
@@ -43,6 +43,7 @@ class TrafficController(object):
         self._duration = None
         self._lossrate = None
         self._packet_sizes = None
+        self._connected = False
 
         self._mode = str(settings.getValue('mode')).lower()
         self._results = []
@@ -51,6 +52,10 @@ class TrafficController(object):
         """Set configuration values just before test execution so they
            can be changed during runtime by test steps.
         """
+        if not self._connected:
+            self._traffic_gen_class.connect()
+            self._connected = True
+
         self._duration = int(settings.getValue('TRAFFICGEN_DURATION'))
         self._lossrate = float(settings.getValue('TRAFFICGEN_LOSSRATE'))
         self._packet_sizes = settings.getValue('TRAFFICGEN_PKT_SIZES')
@@ -62,7 +67,7 @@ class TrafficController(object):
     def __enter__(self):
         """Call initialisation function.
         """
-        self._traffic_gen_class.connect()
+        pass
 
     def __exit__(self, type_, value, traceback):
         """Stop traffic, clean up.