suite-scheduler: Add skylab_model limit.
Add skylab_model entry support in lab_config.ini. This limits the models
which could run the given suites in skylab.
BUG=chromium:914467
TEST=Ran unittest.
Change-Id: Ia40d67adde1cee72673f8ee4de84e22753a16a6e
Reviewed-on: https://chromium-review.googlesource.com/1398402
Commit-Ready: Xixuan Wu <xixuan@chromium.org>
Tested-by: Xixuan Wu <xixuan@chromium.org>
Reviewed-by: Xixuan Wu <xixuan@chromium.org>
diff --git a/trigger_receiver_unittest.py b/trigger_receiver_unittest.py
index 671917c..4729422 100644
--- a/trigger_receiver_unittest.py
+++ b/trigger_receiver_unittest.py
@@ -144,6 +144,10 @@
"""Mock config_reader.LabConfig.get_skylab_suite_list."""
return set(['ent-nightly'])
+ def get_skylab_model_map(self):
+ """Mock config_reader.LabConfig.get_skylab_model_map."""
+ return {'coral': ['santa']}
+
def get_firmware_ro_build_list(self, release_board):
"""Mock config_reader.LabConfig.get_firmware_ro_build_list."""
del release_board # unused
@@ -608,6 +612,32 @@
self.assertNotIn('model=santa', tasks[0].payload)
self.assertIn('model=astronaut', tasks[0].payload)
+ def testNewBuildWithModelsInSkylab(self):
+ """Test the new_build suite in skylab."""
+ normal_suite = 'FakeModelsInSkylab'
+ self.fake_config.add_section(normal_suite)
+ self.fake_config.set(normal_suite, 'run_on', 'new_build')
+ self.fake_config.set(normal_suite, 'suite', 'ent-nightly')
+ self.fake_config.set(normal_suite, 'exclude_boards', 'link, zako')
+ self._mock_config_reader.return_value = self.fake_config
+
+ queue = taskqueue.Queue(task_executor.SUITES_QUEUE)
+ suite_trigger = trigger_receiver.TriggerReceiver()
+ suite_trigger.cron()
+
+ self.assertEqual(len(suite_trigger.event_results), 1)
+ self.assertEqual(suite_trigger.event_results['new_build'],
+ [normal_suite])
+ self.assertIn('new_build', suite_trigger.event_results)
+ tasks = queue.lease_tasks(3600, 10, deadline=0.5)
+ self.assertEqual(len(tasks), 2)
+ for t in tasks:
+ if 'model=santa' in t.payload:
+ self.assertIn('is_skylab=True', t.payload)
+
+ if 'model=astronaut' in t.payload:
+ self.assertIn('is_skylab=False', t.payload)
+
def testNewBuildWithNoModelList(self):
"""Test the new_build suite with models and empty board_model mapping."""
normal_suite = 'FakeModelsExcludeModelsNewBuildTask'