make test: Copy api_post_mortem.$$ file tmp test dir for archiving. 06/8606/4
authorDave Wallace <dwallacelf@gmail.com>
Sun, 1 Oct 2017 02:04:21 +0000 (22:04 -0400)
committerFlorin Coras <florin.coras@gmail.com>
Tue, 3 Oct 2017 03:06:12 +0000 (03:06 +0000)
Change-Id: I4baf89ef383dbc2f309081a6b56b13ebcb8fc2df
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
test/framework.py
test/run_tests.py

index 9e1cfbe..f02f2da 100644 (file)
@@ -135,7 +135,7 @@ class KeepAliveReporter(object):
             if not desc:
                 desc = str(test)
 
-        self.pipe.send((desc, test.vpp_bin, test.tempdir))
+        self.pipe.send((desc, test.vpp_bin, test.tempdir, test.vpp.pid))
 
 
 class VppTestCase(unittest.TestCase):
@@ -214,10 +214,10 @@ class VppTestCase(unittest.TestCase):
         except:
             pass
         if coredump_size is None:
-            coredump_size = "full-coredump"
+            coredump_size = "coredump-size unlimited"
         cls.vpp_cmdline = [cls.vpp_bin, "unix",
-                           "{", "nodaemon", debug_cli, coredump_size, "}",
-                           "api-trace", "{", "on", "}",
+                           "{", "nodaemon", debug_cli, "full-coredump",
+                           coredump_size, "}", "api-trace", "{", "on", "}",
                            "api-segment", "{", "prefix", cls.shm_prefix, "}",
                            "plugins", "{", "plugin", "dpdk_plugin.so", "{",
                            "disable", "}", "}"]
@@ -304,11 +304,11 @@ class VppTestCase(unittest.TestCase):
         cls.registry = VppObjectRegistry()
         cls.vpp_startup_failed = False
         cls.reporter = KeepAliveReporter()
-        cls.reporter.send_keep_alive(cls)
         # need to catch exceptions here because if we raise, then the cleanup
         # doesn't get called and we might end with a zombie vpp
         try:
             cls.run_vpp()
+            cls.reporter.send_keep_alive(cls)
             cls.vpp_stdout_deque = deque()
             cls.vpp_stderr_deque = deque()
             cls.pump_thread_stop_flag = Event()
index 999252d..b07a923 100644 (file)
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 
 import sys
+import shutil
 import os
 import select
 import unittest
@@ -50,8 +51,8 @@ def run_forked(suite):
             result = result_parent_end.recv()
         elif keep_alive_parent_end.fileno() in readable:
             while keep_alive_parent_end.poll():
-                last_test, last_test_vpp_binary, last_test_temp_dir =\
-                    keep_alive_parent_end.recv()
+                last_test, last_test_vpp_binary,\
+                    last_test_temp_dir, vpp_pid = keep_alive_parent_end.recv()
         else:
             global_logger.critical("Timeout while waiting for child test "
                                    "runner process (last test running was "
@@ -63,6 +64,11 @@ def run_forked(suite):
             global_logger.error("Creating a link to the failed " +
                                 "test: %s -> %s" % (link_path, lttd))
             os.symlink(last_test_temp_dir, link_path)
+            api_post_mortem_path = "/tmp/api_post_mortem.%d" % vpp_pid
+            if os.path.isfile(api_post_mortem_path):
+                global_logger.error("Copying api_post_mortem.%d to %s" %
+                                    (vpp_pid, last_test_temp_dir))
+                shutil.copy2(api_post_mortem_path, last_test_temp_dir)
             if last_test_temp_dir and last_test_vpp_binary:
                 core_path = "%s/core" % last_test_temp_dir
                 if os.path.isfile(core_path):