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
