Add test case for aborting a synchronous job while it's throttled in the 
Starting state.  Was trying to repro a bug.  It doesn't repro, indicating that 
maybe the bug has already been fixed (or maybe this test case is missing 
something).  Either way, it's good to have another test case around.

Also fixing a little test bug where we need to mock out a new global config 
value.

Signed-off-by: Steve Howard <[email protected]>

--- autotest/scheduler/monitor_db_functional_test.py    2009-12-18 
14:32:48.000000000 -0800
+++ autotest/scheduler/monitor_db_functional_test.py    2009-12-21 
18:14:05.000000000 -0800
@@ -51,13 +51,14 @@
 # the SpecialTask names here must match the suffixes used on the SpecialTask
 # results directories
 _PidfileType = enum.Enum('verify', 'cleanup', 'repair', 'job', 'gather',
-                         'parse')
+                         'parse', 'archive')
 
 
 _PIDFILE_TO_PIDFILE_TYPE = {
         monitor_db._AUTOSERV_PID_FILE: _PidfileType.JOB,
         monitor_db._CRASHINFO_PID_FILE: _PidfileType.GATHER,
         monitor_db._PARSER_PID_FILE: _PidfileType.PARSE,
+        monitor_db._ARCHIVER_PID_FILE: _PidfileType.ARCHIVE,
         }
 
 
@@ -341,6 +342,8 @@
     def _set_global_config_values(self):
         self.mock_config.set_config_value('SCHEDULER', 'pidfile_timeout_mins',
                                           1)
+        self.mock_config.set_config_value('SCHEDULER', 
'gc_stats_interval_mins',
+                                          999999)
 
 
     def _initialize_test(self):
@@ -526,14 +529,18 @@
         self._check_statuses(queue_entry, HqeStatus.PARSING,
                              HostStatus.CLEANING)
         self._ensure_post_job_process_is_paired(queue_entry, 
_PidfileType.PARSE)
-        self._finish_parsing_and_cleanup()
+        self._finish_parsing_and_cleanup(queue_entry)
 
 
-    def _finish_parsing_and_cleanup(self):
+    def _finish_parsing_and_cleanup(self, queue_entry):
         self.mock_drone_manager.finish_process(_PidfileType.CLEANUP)
         self.mock_drone_manager.finish_process(_PidfileType.PARSE)
         self._run_dispatcher()
 
+        self._check_statuses(queue_entry, HqeStatus.ARCHIVING, 
HostStatus.READY)
+        self.mock_drone_manager.finish_process(_PidfileType.ARCHIVE)
+        self._run_dispatcher()
+
 
     def _create_reverify_request(self):
         host = self.hosts[0]
@@ -650,7 +657,8 @@
                 _PidfileType.JOB))
         self.mock_drone_manager.finish_process(_PidfileType.GATHER)
         self._run_dispatcher() # launches parsing + cleanup
-        self._finish_parsing_and_cleanup()
+        queue_entry = job.hostqueueentry_set.all()[0]
+        self._finish_parsing_and_cleanup(queue_entry)
 
 
     def test_no_pidfile_leaking(self):
@@ -830,7 +838,7 @@
         self._run_dispatcher() # gathering must start
         self.mock_drone_manager.finish_process(_PidfileType.GATHER)
         self._run_dispatcher() # parsing and cleanup
-        self._finish_parsing_and_cleanup()
+        self._finish_parsing_and_cleanup(queue_entry)
         self._run_dispatcher() # now reverify runs
         self._check_statuses(queue_entry, HqeStatus.FAILED,
                              HostStatus.VERIFYING)
@@ -930,6 +938,23 @@
                             HqeStatus.PARSING)
 
 
+    def test_abort_starting_while_throttling(self):
+        self._initialize_test()
+        job = self._create_job(hosts=[1,2], synchronous=True)
+        queue_entry = job.hostqueueentry_set.all()[0]
+        job.run_verify = False
+        job.reboot_after = models.RebootAfter.NEVER
+        job.save()
+
+        self.mock_drone_manager.process_capacity = 0
+        self._run_dispatcher() # go to starting, but don't start job
+        self._check_statuses(queue_entry, HqeStatus.STARTING,
+                             HostStatus.PENDING)
+
+        job.hostqueueentry_set.update(aborted=True)
+        self._run_dispatcher()
+
+
     def test_simple_atomic_group_job(self):
         job = self._create_job(atomic_group=1)
         self._run_dispatcher() # expand + verify
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to