Index: frontend/planner/rpc_utils_unittest.py |
diff --git a/frontend/planner/rpc_utils_unittest.py b/frontend/planner/rpc_utils_unittest.py |
index 4a9aa747bc1b1e935cfe5adb98546b738f45a380..fbcf8d1fe56d9934eaf2a1b861fa7fd2a8f424ac 100644 |
--- a/frontend/planner/rpc_utils_unittest.py |
+++ b/frontend/planner/rpc_utils_unittest.py |
@@ -5,8 +5,7 @@ import common |
from autotest_lib.frontend import setup_django_environment |
from autotest_lib.frontend.planner import planner_test_utils |
from autotest_lib.frontend.afe import model_logic, models as afe_models |
-from autotest_lib.frontend.afe import rpc_interface as afe_rpc_interface |
-from autotest_lib.frontend.planner import models, rpc_utils |
+from autotest_lib.frontend.planner import models, rpc_utils, failure_actions |
from autotest_lib.client.common_lib import utils, host_queue_entry_states |
@@ -108,7 +107,7 @@ class RpcUtilsTest(unittest.TestCase, |
hqe.save() |
self.assertEqual( |
- test_config.id, |
+ test_config, |
rpc_utils.compute_next_test_config(self._plan, |
self._planner_host)) |
self.assertFalse(self._planner_host.complete) |
@@ -133,5 +132,88 @@ class RpcUtilsTest(unittest.TestCase, |
self.assertTrue(self._planner_host.complete) |
+ def _replace_site_process_host_action(self, replacement): |
+ self.god.stub_function(utils, 'import_site_function') |
+ utils.import_site_function.expect_any_call().and_return(replacement) |
+ |
+ |
+ def _remove_site_process_host_action(self): |
+ def _site_process_host_action_dummy(host, action): |
+ return False |
+ self._replace_site_process_host_action(_site_process_host_action_dummy) |
+ |
+ |
+ def test_process_host_action_block(self): |
+ self._remove_site_process_host_action() |
+ host = models.Host.objects.create(plan=self._plan, host=self.hosts[0], |
+ blocked=False) |
+ assert not host.blocked |
+ |
+ rpc_utils.process_host_action(host, failure_actions.HostAction.BLOCK) |
+ host = models.Host.objects.get(id=host.id) |
+ |
+ self.assertTrue(host.blocked) |
+ self.god.check_playback() |
+ |
+ |
+ def test_process_host_action_unblock(self): |
+ self._remove_site_process_host_action() |
+ host = models.Host.objects.create(plan=self._plan, host=self.hosts[0], |
+ blocked=True) |
+ assert host.blocked |
+ |
+ rpc_utils.process_host_action(host, failure_actions.HostAction.UNBLOCK) |
+ host = models.Host.objects.get(id=host.id) |
+ |
+ self.assertFalse(host.blocked) |
+ self.god.check_playback() |
+ |
+ |
+ def test_process_host_action_site(self): |
+ self._remove_site_process_host_action |
+ action = object() |
+ failure_actions.HostAction.values.append(action) |
+ host = models.Host.objects.create(plan=self._plan, host=self.hosts[0]) |
+ |
+ self.assertRaises(AssertionError, rpc_utils.process_host_action, |
+ host, action) |
+ self.god.check_playback() |
+ |
+ self._called = False |
+ def _site_process_host_action(host, action): |
+ self._called = True |
+ return True |
+ self._replace_site_process_host_action(_site_process_host_action) |
+ |
+ rpc_utils.process_host_action(host, action) |
+ |
+ self.assertTrue(self._called) |
+ self.god.check_playback() |
+ |
+ |
+ def test_process_test_action_skip(self): |
+ self._setup_active_plan() |
+ planner_job = self._planner_job |
+ assert not planner_job.requires_rerun |
+ |
+ rpc_utils.process_test_action(planner_job, |
+ failure_actions.TestAction.SKIP) |
+ planner_job = models.Job.objects.get(id=planner_job.id) |
+ |
+ self.assertFalse(planner_job.requires_rerun) |
+ |
+ |
+ def test_process_test_action_rerun(self): |
+ self._setup_active_plan() |
+ planner_job = self._planner_job |
+ assert not planner_job.requires_rerun |
+ |
+ rpc_utils.process_test_action(planner_job, |
+ failure_actions.TestAction.RERUN) |
+ planner_job = models.Job.objects.get(id=planner_job.id) |
+ |
+ self.assertTrue(planner_job.requires_rerun) |
+ |
+ |
if __name__ == '__main__': |
unittest.main() |