[autotest] Suite class should pull control files from the dev server

When running a test suite, we should pull build-appropriate control files
from the dev server, instead of finding them in the local, ToT
checkout.

BUG=None
TEST=./server/autoserv test_suites/dev_harness

Change-Id: Icd9061afdb4d86bd84f59ac8842d130211d20afe
Reviewed-on: https://gerrit.chromium.org/gerrit/16371
Commit-Ready: Chris Masone <cmasone@chromium.org>
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
diff --git a/server/cros/dynamic_suite_unittest.py b/server/cros/dynamic_suite_unittest.py
index 2f8e88b..bf8f0f5 100755
--- a/server/cros/dynamic_suite_unittest.py
+++ b/server/cros/dynamic_suite_unittest.py
@@ -29,13 +29,13 @@
     """Unit tests for dynamic_suite.Reimager.
 
     @var _URL: fake image url
-    @var _NAME: fake image name
+    @var _BUILD: fake build
     @var _NUM: fake number of machines to run on
     @var _BOARD: fake board to reimage
     """
 
     _URL = 'http://nothing/%s'
-    _NAME = 'name'
+    _BUILD = 'build'
     _NUM = 4
     _BOARD = 'board'
     _CONFIG = global_config.global_config
@@ -119,8 +119,8 @@
         # The semantics of |results_platform_map| and |test_results| are
         # drawn from frontend.AFE.poll_all_jobs()
         job.results_platform_map = {'netbook': {'Aborted' : [H3],
-                                                  'Completed' : [H1, H4, H5],
-                                                  'Failed':     [H2]
+                                                'Completed' : [H1, H4, H5],
+                                                'Failed':     [H2]
                                                 }
                                     }
         # Gin up fake results for H2 and H3 failure cases.
@@ -157,13 +157,14 @@
                                            'image_url_pattern',
                                            self._URL)
         self.afe.create_job(
-            control_file=mox.And(mox.StrContains(self._NAME),
-                                 mox.StrContains(self._URL % self._NAME)),
-            name=mox.StrContains(self._NAME),
+            control_file=mox.And(mox.StrContains(self._BUILD),
+                                 mox.StrContains(self._URL % self._BUILD)),
+            name=mox.StrContains(self._BUILD),
             control_type='Server',
-            meta_hosts=[self._BOARD] * self._NUM)
+            meta_hosts=['board:'+self._BOARD] * self._NUM,
+            dependencies=[])
         self.mox.ReplayAll()
-        self.reimager._schedule_reimage_job(self._NAME, self._NUM, self._BOARD)
+        self.reimager._schedule_reimage_job(self._BUILD, self._NUM, self._BOARD)
 
 
     def expect_attempt(self, success):
@@ -174,10 +175,10 @@
         """
         canary = FakeJob()
         self.mox.StubOutWithMock(self.reimager, '_ensure_version_label')
-        self.reimager._ensure_version_label(mox.StrContains(self._NAME))
+        self.reimager._ensure_version_label(mox.StrContains(self._BUILD))
 
         self.mox.StubOutWithMock(self.reimager, '_schedule_reimage_job')
-        self.reimager._schedule_reimage_job(self._NAME,
+        self.reimager._schedule_reimage_job(self._BUILD,
                                             self._NUM,
                                             self._BOARD).AndReturn(canary)
         if success is not None:
@@ -199,7 +200,7 @@
         rjob.record('START', mox.IgnoreArg(), mox.IgnoreArg())
         rjob.record('END GOOD', mox.IgnoreArg(), mox.IgnoreArg())
         self.mox.ReplayAll()
-        self.reimager.attempt(self._NAME, self._BOARD, rjob.record)
+        self.reimager.attempt(self._BUILD, self._BOARD, rjob.record)
 
 
     def testFailedReimage(self):
@@ -210,7 +211,7 @@
         rjob.record('START', mox.IgnoreArg(), mox.IgnoreArg())
         rjob.record('END FAIL', mox.IgnoreArg(), mox.IgnoreArg())
         self.mox.ReplayAll()
-        self.reimager.attempt(self._NAME, self._BOARD, rjob.record)
+        self.reimager.attempt(self._BUILD, self._BOARD, rjob.record)
 
 
     def testReimageThatNeverHappened(self):
@@ -222,18 +223,18 @@
         rjob.record('FAIL', mox.IgnoreArg(), canary.name, mox.IgnoreArg())
         rjob.record('END FAIL', mox.IgnoreArg(), mox.IgnoreArg())
         self.mox.ReplayAll()
-        self.reimager.attempt(self._NAME, self._BOARD, rjob.record)
+        self.reimager.attempt(self._BUILD, self._BOARD, rjob.record)
 
 
 class SuiteTest(mox.MoxTestBase):
     """Unit tests for dynamic_suite.Suite.
 
-    @var _NAME: fake image name
+    @var _BUILD: fake build
     @var _TAG: fake suite tag
     """
 
-    _NAME = 'name'
-    _TAG = 'suite tag'
+    _BUILD = 'build'
+    _TAG = 'suite_tag'
 
 
     def setUp(self):
@@ -337,10 +338,11 @@
                 continue
             self.afe.create_job(
                 control_file=test.text,
-                name=mox.And(mox.StrContains(self._NAME),
+                name=mox.And(mox.StrContains(self._BUILD),
                              mox.StrContains(test.name)),
                 control_type=mox.IgnoreArg(),
-                meta_hosts=[dynamic_suite.VERSION_PREFIX+self._NAME])
+                meta_hosts=[dynamic_suite.VERSION_PREFIX + self._BUILD],
+                dependencies=[])
 
 
     def testScheduleTests(self):
@@ -349,9 +351,9 @@
         self.expect_job_scheduling(add_experimental=True)
 
         self.mox.ReplayAll()
-        suite = dynamic_suite.Suite.create_from_name(self._TAG, self.tmpdir,
+        suite = dynamic_suite.Suite.create_from_name(self._TAG, self._BUILD,
                                                      self.afe, self.tko)
-        suite.schedule(self._NAME)
+        suite.schedule()
 
 
     def testScheduleStableTests(self):
@@ -360,9 +362,9 @@
         self.expect_job_scheduling(add_experimental=False)
 
         self.mox.ReplayAll()
-        suite = dynamic_suite.Suite.create_from_name(self._TAG, self.tmpdir,
+        suite = dynamic_suite.Suite.create_from_name(self._TAG, self._BUILD,
                                                      self.afe, self.tko)
-        suite.schedule(self._NAME, add_experimental=False)
+        suite.schedule(add_experimental=False)
 
 
     def expect_result_gathering(self, job):
@@ -379,8 +381,8 @@
 
         @return Suite object, after mocking out behavior needed to create it.
         """
-        self.mox.StubOutWithMock(dynamic_suite.Suite, 'create_fs_getter')
-        dynamic_suite.Suite.create_fs_getter(self.tmpdir).AndReturn(self.getter)
+        self.mox.StubOutWithMock(dynamic_suite.Suite, 'create_cf_getter')
+        dynamic_suite.Suite.create_cf_getter(self.tmpdir).AndReturn(self.getter)
         self.expect_control_file_parsing()
         self.mox.ReplayAll()
         suite = dynamic_suite.Suite.create_from_name(self._TAG, self.tmpdir,
@@ -463,12 +465,12 @@
             recorder.record('END %s' % status, None, test_name)
 
         self.mox.StubOutWithMock(suite, 'schedule')
-        suite.schedule(self._NAME, True)
+        suite.schedule(True)
         self.mox.StubOutWithMock(suite, 'wait_for_results')
         suite.wait_for_results().AndReturn(results)
         self.mox.ReplayAll()
 
-        suite.run_and_wait(self._NAME, recorder.record, True)
+        suite.run_and_wait(recorder.record, True)
 
 
     def testRunAndWaitFailure(self):
@@ -481,12 +483,12 @@
                         mox.StrContains('waiting'))
 
         self.mox.StubOutWithMock(suite, 'schedule')
-        suite.schedule(self._NAME, True)
+        suite.schedule(True)
         self.mox.StubOutWithMock(suite, 'wait_for_results')
         suite.wait_for_results().AndRaise(Exception())
         self.mox.ReplayAll()
 
-        suite.run_and_wait(self._NAME, recorder.record, True)
+        suite.run_and_wait(recorder.record, True)
 
 
     def testRunAndWaitScheduleFailure(self):
@@ -499,10 +501,10 @@
                         mox.StrContains('scheduling'))
 
         self.mox.StubOutWithMock(suite, 'schedule')
-        suite.schedule(self._NAME, True).AndRaise(Exception())
+        suite.schedule(True).AndRaise(Exception())
         self.mox.ReplayAll()
 
-        suite.run_and_wait(self._NAME, recorder.record, True)
+        suite.run_and_wait(recorder.record, True)
 
 
 if __name__ == '__main__':