session: API cleanup
[vpp.git] / test / framework.py
index 7ff7978..872dd45 100644 (file)
@@ -381,6 +381,7 @@ class VppTestCase(unittest.TestCase):
                            "prefix", cls.shm_prefix, "}", "cpu", "{",
                            "main-core", str(cpu_core_number),
                            cls.worker_config, "}",
+                           "physmem", "{", "max-size", "32m", "}",
                            "statseg", "{", "socket-name", cls.stats_sock, "}",
                            "socksvr", "{", "socket-name", cls.api_sock, "}",
                            "plugins",
@@ -445,8 +446,7 @@ class VppTestCase(unittest.TestCase):
         try:
             cls.vpp = subprocess.Popen(cmdline,
                                        stdout=subprocess.PIPE,
-                                       stderr=subprocess.PIPE,
-                                       bufsize=1)
+                                       stderr=subprocess.PIPE)
         except subprocess.CalledProcessError as e:
             cls.logger.critical("Subprocess returned with non-0 return code: ("
                                 "%s)", e.returncode)
@@ -1133,9 +1133,9 @@ class VppTestCase(unittest.TestCase):
                 "Finished sleep (%s) - slept %es (wanted %es)",
                 remark, after - before, timeout)
 
-    def pg_send(self, intf, pkts):
+    def pg_send(self, intf, pkts, worker=None):
         self.vapi.cli("clear trace")
-        intf.add_stream(pkts)
+        intf.add_stream(pkts, worker=worker)
         self.pg_enable_capture(self.pg_interfaces)
         self.pg_start()
 
@@ -1148,10 +1148,10 @@ class VppTestCase(unittest.TestCase):
             i.assert_nothing_captured(remark=remark)
             timeout = 0.1
 
-    def send_and_expect(self, intf, pkts, output, n_rx=None):
+    def send_and_expect(self, intf, pkts, output, n_rx=None, worker=None):
         if not n_rx:
             n_rx = len(pkts)
-        self.pg_send(intf, pkts)
+        self.pg_send(intf, pkts, worker=worker)
         rx = output.get_capture(n_rx)
         return rx
 
@@ -1495,16 +1495,17 @@ class VppTestRunner(unittest.TextTestRunner):
 
 
 class Worker(Thread):
-    def __init__(self, args, logger, env=None):
+    def __init__(self, executable_args, logger, env=None, *args, **kwargs):
+        super(Worker, self).__init__(*args, **kwargs)
         self.logger = logger
-        self.args = args
+        self.args = executable_args
         if hasattr(self, 'testcase') and self.testcase.debug_all:
             if self.testcase.debug_gdbserver:
                 self.args = ['/usr/bin/gdbserver', 'localhost:{port}'
                              .format(port=self.testcase.gdbserver_port)] + args
             elif self.testcase.debug_gdb and hasattr(self, 'wait_for_gdb'):
                 self.args.append(self.wait_for_gdb)
-        self.app_bin = args[0]
+        self.app_bin = executable_args[0]
         self.app_name = os.path.basename(self.app_bin)
         if hasattr(self, 'role'):
             self.app_name += ' {role}'.format(role=self.role)
@@ -1512,7 +1513,6 @@ class Worker(Thread):
         self.result = None
         env = {} if env is None else env
         self.env = copy.deepcopy(env)
-        super(Worker, self).__init__()
 
     def wait_for_enter(self):
         if not hasattr(self, 'testcase'):