tests: remove shm handling
[vpp.git] / test / run_tests.py
index 66118ca..59c9d83 100644 (file)
@@ -28,12 +28,9 @@ from util import check_core_path, get_core_path, is_core_present
 
 # timeout which controls how long the child has to finish after seeing
 # a core dump in test temporary directory. If this is exceeded, parent assumes
-# that child process is stuck (e.g. waiting for shm mutex, which will never
-# get unlocked) and kill the child
+# that child process is stuck (e.g. waiting for event from vpp) and kill
+# the child
 core_timeout = 3
-min_req_shm = 536870912  # min 512MB shm required
-# 128MB per extra process
-shm_per_process = 134217728
 
 
 class StreamQueue(Queue):
@@ -272,6 +269,8 @@ def handle_failed_suite(logger, last_test_temp_dir, vpp_pid):
             except Exception as e:
                 logger.exception("Unexpected error running `file' utility "
                                  "on core-file")
+            logger.error("gdb %s %s" %
+                         (os.getenv('VPP_BIN', 'vpp'), core_path))
 
     if vpp_pid:
         # Copy api post mortem
@@ -337,7 +336,7 @@ def run_forked(testcase_suites):
     while total_test_runners < concurrent_tests:
         if testcase_suites:
             a_suite = testcase_suites.pop(0)
-            if a_suite.force_solo:
+            if a_suite.is_tagged_run_solo:
                 solo_testcase_suites.append(a_suite)
                 continue
             wrapped_testcase_suite = TestCaseWrapper(a_suite,
@@ -473,7 +472,7 @@ def run_forked(testcase_suites):
                         results.append(TestResult(testcase_suites.pop(0)))
                 elif testcase_suites:
                     a_testcase = testcase_suites.pop(0)
-                    while a_testcase and a_testcase.force_solo:
+                    while a_testcase and a_testcase.is_tagged_run_solo:
                         solo_testcase_suites.append(a_testcase)
                         if testcase_suites:
                             a_testcase = testcase_suites.pop(0)
@@ -485,14 +484,13 @@ def run_forked(testcase_suites):
                         wrapped_testcase_suites.add(new_testcase)
                         total_test_runners = total_test_runners + 1
                         unread_testcases.add(new_testcase)
-                else:
-                    if solo_testcase_suites and total_test_runners == 0:
-                        a_testcase = solo_testcase_suites.pop(0)
-                        new_testcase = TestCaseWrapper(a_testcase,
-                                                       manager)
-                        wrapped_testcase_suites.add(new_testcase)
-                        total_test_runners = total_test_runners + 1
-                        unread_testcases.add(new_testcase)
+                if solo_testcase_suites and total_test_runners == 0:
+                    a_testcase = solo_testcase_suites.pop(0)
+                    new_testcase = TestCaseWrapper(a_testcase,
+                                                   manager)
+                    wrapped_testcase_suites.add(new_testcase)
+                    total_test_runners = total_test_runners + 1
+                    unread_testcases.add(new_testcase)
             time.sleep(0.1)
     except Exception:
         for wrapped_testcase_suite in wrapped_testcase_suites:
@@ -521,10 +519,10 @@ class SplitToSuitesCallback:
             self.suite_name = file_name + cls.__name__
             if self.suite_name not in self.suites:
                 self.suites[self.suite_name] = unittest.TestSuite()
-                self.suites[self.suite_name].force_solo = False
+                self.suites[self.suite_name].is_tagged_run_solo = False
             self.suites[self.suite_name].addTest(test_method)
-            if test_method.force_solo():
-                self.suites[self.suite_name].force_solo = True
+            if test_method.is_tagged_run_solo():
+                self.suites[self.suite_name].is_tagged_run_solo = True
 
         else:
             self.filtered.addTest(test_method)
@@ -795,10 +793,8 @@ if __name__ == '__main__':
         num_cpus = len(os.sched_getaffinity(0))
     except AttributeError:
         num_cpus = multiprocessing.cpu_count()
-    shm_free = psutil.disk_usage('/dev/shm').free
 
-    print('OS reports %s available cpu(s). Free shm: %s' % (
-        num_cpus, "{:,}MB".format(shm_free / (1024 * 1024))))
+    print("OS reports %s available cpu(s)." % num_cpus)
 
     test_jobs = os.getenv("TEST_JOBS", "1").lower()  # default = 1 process
     if test_jobs == 'auto':
@@ -806,15 +802,7 @@ if __name__ == '__main__':
             concurrent_tests = 1
             print('Interactive mode required, running on one core')
         else:
-            shm_max_processes = 1
-            if shm_free < min_req_shm:
-                raise Exception('Not enough free space in /dev/shm. Required '
-                                'free space is at least %sM.'
-                                % (min_req_shm >> 20))
-            else:
-                extra_shm = shm_free - min_req_shm
-                shm_max_processes += extra_shm // shm_per_process
-            concurrent_tests = min(cpu_count(), shm_max_processes)
+            concurrent_tests = num_cpus
             print('Found enough resources to run tests with %s cores'
                   % concurrent_tests)
     elif test_jobs.isdigit():