tests: fix DEBUG=attach functionality
[vpp.git] / test / framework.py
index 1c81e8a..8065518 100644 (file)
@@ -524,10 +524,13 @@ class VppTestCase(CPUInterface, unittest.TestCase):
 
     @classmethod
     def get_tempdir(cls):
-        tmpdir = f"{config.tmp_dir}/vpp-unittest-{cls.__name__}"
-        if config.wipe_tmp_dir:
-            shutil.rmtree(tmpdir, ignore_errors=True)
-        os.mkdir(tmpdir)
+        if cls.debug_attach:
+            tmpdir = f"{config.tmp_dir}/unittest-attach-gdb"
+        else:
+            tmpdir = f"{config.tmp_dir}/vpp-unittest-{cls.__name__}"
+            if config.wipe_tmp_dir:
+                shutil.rmtree(tmpdir, ignore_errors=True)
+            os.mkdir(tmpdir)
         return tmpdir
 
     @classmethod
@@ -1310,8 +1313,7 @@ class VppTestCase(CPUInterface, unittest.TestCase):
             if not timeout:
                 timeout = 1
             for i in self.pg_interfaces:
-                i.get_capture(0, timeout=timeout)
-                i.assert_nothing_captured(remark=remark)
+                i.assert_nothing_captured(timeout=timeout, remark=remark)
                 timeout = 0.1
         finally:
             if trace:
@@ -1353,6 +1355,17 @@ class VppTestCase(CPUInterface, unittest.TestCase):
             self.logger.debug(self.vapi.cli("show trace"))
         return rxs
 
+    def send_and_expect_some(self, intf, pkts, output,
+                             worker=None,
+                             trace=True):
+        self.pg_send(intf, pkts, worker=worker, trace=trace)
+        rx = output._get_capture(1)
+        if trace:
+            self.logger.debug(self.vapi.cli("show trace"))
+        self.assertTrue(len(rx) > 0)
+        self.assertTrue(len(rx) < len(pkts))
+        return rx
+
     def send_and_expect_only(self, intf, pkts, output, timeout=None,
                              stats_diff=None):
         if stats_diff:
@@ -1365,8 +1378,7 @@ class VppTestCase(CPUInterface, unittest.TestCase):
             timeout = 1
         for i in self.pg_interfaces:
             if i not in outputs:
-                i.get_capture(0, timeout=timeout)
-                i.assert_nothing_captured()
+                i.assert_nothing_captured(timeout=timeout)
                 timeout = 0.1
 
         if stats_diff: