Sometimes, autotest might abort (autotest bug, job error) and
there will be some /tmp/autotest_results_dir.XXX files lying
around. If there are such files lying around, if a program
segfaults, the crash handler will re-create some of the old
debugdirs, that might clash with the debugdirs of the tests
being executed on the new job. Make sure we clean up all old
files prior to autotest execution. Updated the unittests
job_unittest and setup_job_unittest accordingly.

Signed-off-by: Lucas Meneghel Rodrigues <[email protected]>
---
 client/bin/job.py                |   10 ++++++++++
 client/bin/job_unittest.py       |    3 +++
 client/bin/setup_job.py          |    1 +
 client/bin/setup_job_unittest.py |    4 +++-
 4 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/client/bin/job.py b/client/bin/job.py
index d7df004..5adbc00 100644
--- a/client/bin/job.py
+++ b/client/bin/job.py
@@ -158,6 +158,7 @@ class base_client_job(base_job.base_job):
         self.harness and of course self._logger.
         """
         if not options.cont:
+            self._cleanup_debugdir_files()
             self._cleanup_results_dir()
 
         logging_manager.configure_logging(
@@ -316,6 +317,15 @@ class base_client_job(base_job.base_job):
                 os.remove(f)
 
 
+    def _cleanup_debugdir_files(self):
+        """
+        Delete any leftover debugdir files
+        """
+        list_files = glob.glob("/tmp/autotest_results_dir.*")
+        for f in list_files:
+            os.remove(f)
+
+
     def disable_warnings(self, warning_type):
         self.record("INFO", None, None,
                     "disabling %s warnings" % warning_type,
diff --git a/client/bin/job_unittest.py b/client/bin/job_unittest.py
index bbacbd9..24c0501 100755
--- a/client/bin/job_unittest.py
+++ b/client/bin/job_unittest.py
@@ -153,6 +153,8 @@ class test_base_job(unittest.TestCase):
         self.god.stub_class(boottool, 'boottool')
         self.god.stub_class(sysinfo, 'sysinfo')
 
+        self.god.stub_class_method(job.base_client_job,
+                                   '_cleanup_debugdir_files')
         self.god.stub_class_method(job.base_client_job, '_cleanup_results_dir')
 
         self.god.stub_with(job.base_job.job_directory, '_ensure_valid',
@@ -170,6 +172,7 @@ class test_base_job(unittest.TestCase):
         resultdir = os.path.join(self.autodir, 'results', self.jobtag)
         tmpdir = os.path.join(self.autodir, 'tmp')
         if not cont:
+            job.base_client_job._cleanup_debugdir_files.expect_call()
             job.base_client_job._cleanup_results_dir.expect_call()
 
         self.job._load_state.expect_call()
diff --git a/client/bin/setup_job.py b/client/bin/setup_job.py
index 95f54db..b4b5305 100644
--- a/client/bin/setup_job.py
+++ b/client/bin/setup_job.py
@@ -30,6 +30,7 @@ class setup_job(client_job.job):
                         See all options defined on client/bin/autotest.
         """
         base_job.base_job.__init__(self, options=options)
+        self._cleanup_debugdir_files()
         self._cleanup_results_dir()
         self.pkgmgr = packages.PackageManager(
             self.autodir, run_function_dargs={'timeout':3600})
diff --git a/client/bin/setup_job_unittest.py b/client/bin/setup_job_unittest.py
index d34918b..f901bac 100644
--- a/client/bin/setup_job_unittest.py
+++ b/client/bin/setup_job_unittest.py
@@ -135,8 +135,9 @@ class test_setup_job(unittest.TestCase):
         self.god.stub_function(setup_job, 'open')
         self.god.stub_function(utils, 'system')
 
+        self.god.stub_class_method(job.base_client_job,
+                                   '_cleanup_debugdir_files')
         self.god.stub_class_method(job.base_client_job, '_cleanup_results_dir')
-#        self.god.stub_class_method(setup_job.setup_job, 
'_cleanup_results_dir')
 
         self.god.stub_with(base_job.job_directory, '_ensure_valid',
                            lambda *_: None)
@@ -150,6 +151,7 @@ class test_setup_job(unittest.TestCase):
     def _setup_pre_record_init(self):
         resultdir = os.path.join(self.autodir, 'results', self.jobtag)
         tmpdir = os.path.join(self.autodir, 'tmp')
+        job.base_client_job._cleanup_debugdir_files.expect_call()
         job.base_client_job._cleanup_results_dir.expect_call()
 
         return resultdir
-- 
1.7.1.1

_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to