Make CleanupTask copy results to job dir on failure. Did this by extracting code from VerifyTask into a common superclass.
git-svn-id: http://test.kernel.org/svn/autotest/trunk@2435 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/scheduler/monitor_db_unittest.py b/scheduler/monitor_db_unittest.py
index 9e0256f..0ce17b5 100644
--- a/scheduler/monitor_db_unittest.py
+++ b/scheduler/monitor_db_unittest.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
-import unittest, time, subprocess, os, StringIO, tempfile, datetime
+import unittest, time, subprocess, os, StringIO, tempfile, datetime, shutil
import MySQLdb
import common
from autotest_lib.frontend import setup_django_environment
@@ -815,8 +815,12 @@
self.god = mock.mock_god()
self.god.stub_with(tempfile, 'mkdtemp',
mock.mock_function('mkdtemp', self.TEMP_DIR))
+ self.god.stub_with(os.path, 'exists',
+ mock.mock_function('exists', True))
+ self.god.stub_with(shutil, 'rmtree', mock.mock_function('rmtree', None))
self.god.stub_class_method(monitor_db.RunMonitor, 'run')
self.god.stub_class_method(monitor_db.RunMonitor, 'exit_code')
+ self.god.stub_class_method(monitor_db.PreJobTask, '_move_results')
self.host = self.god.create_mock_class(monitor_db.Host, 'host')
self.host.hostname = self.HOSTNAME
self.host.protection = self.HOST_PROTECTION
@@ -904,8 +908,8 @@
def setup_verify_expects(self, success, use_queue_entry):
if use_queue_entry:
- self.queue_entry.set_status.expect_call('Verifying')
self.queue_entry.clear_results_dir.expect_call()
+ self.queue_entry.set_status.expect_call('Verifying')
self.host.set_status.expect_call('Verifying')
if success:
self.setup_run_monitor(0)
@@ -914,6 +918,9 @@
self.queue_entry.on_pending.expect_call()
else:
self.setup_run_monitor(1)
+ if use_queue_entry and not self.queue_entry.meta_host:
+ self.queue_entry.set_execution_subdir.expect_call()
+ monitor_db.VerifyTask._move_results.expect_call()
def _check_verify_failure_tasks(self, verify_task):
@@ -921,9 +928,8 @@
repair_task = verify_task.failure_tasks[0]
self.assert_(isinstance(repair_task, monitor_db.RepairTask))
self.assertEquals(verify_task.host, repair_task.host)
- if verify_task.queue_entry and not verify_task.queue_entry.meta_host:
- self.assertEquals(repair_task.queue_entry,
- verify_task.queue_entry)
+ if verify_task.queue_entry:
+ self.assertEquals(repair_task.queue_entry, verify_task.queue_entry)
else:
self.assertEquals(repair_task.queue_entry, None)
@@ -956,10 +962,8 @@
def test_verify_task_with_metahost(self):
- self._test_verify_task_helper(True, use_queue_entry=True,
- use_meta_host=True)
- self._test_verify_task_helper(False, use_queue_entry=True,
- use_meta_host=True)
+ self.queue_entry.meta_host = 1
+ self.test_verify_task_with_queue_entry()
def test_abort_task(self):
@@ -1041,6 +1045,7 @@
def _test_cleanup_task_helper(self, success, use_queue_entry=False):
if use_queue_entry:
self.queue_entry.get_host.expect_call().and_return(self.host)
+ self.queue_entry.clear_results_dir.expect_call()
self.host.set_status.expect_call('Cleaning')
if success:
self.setup_run_monitor(0)
@@ -1048,6 +1053,9 @@
self.host.update_field.expect_call('dirty', 0)
else:
self.setup_run_monitor(1)
+ if use_queue_entry and not self.queue_entry.meta_host:
+ self.queue_entry.set_execution_subdir.expect_call()
+ monitor_db.VerifyTask._move_results.expect_call()
if use_queue_entry:
task = monitor_db.CleanupTask(queue_entry=self.queue_entry)