Enable capability of checking remote test results.

BUG=crosbug:13806
TEST=http://chromeos-autotest.cbf.corp.google.com:8026/waterfall?branch=&builder=x86-mario+mock-canary&committer=&reload=60

Change-Id: I42997a91cbcf813976ae7859c8d9536548b0546e
Reviewed-on: http://gerrit.chromium.org/gerrit/1512
Tested-by: Mike Truty <truty@chromium.org>
Reviewed-by: Mike Truty <truty@chromium.org>
diff --git a/buildbot/cbuildbot.py b/buildbot/cbuildbot.py
index f7d029a..7593372 100755
--- a/buildbot/cbuildbot.py
+++ b/buildbot/cbuildbot.py
@@ -96,6 +96,9 @@
       if options.tests:
         stages.TestStage(bot_id, options, build_config).Run()
 
+      if options.remote_test_status:
+          stages.RemoteTestStatusStage(bot_id, options, build_config).Run()
+
       # Control master / slave logic here.
       if build_config['master']:
         if cbuildbot_comm.HaveSlavesCompleted(cbuildbot_config.config):
@@ -203,6 +206,8 @@
   parser.add_option('--notests', action='store_false', dest='tests',
                     default=True,
                     help='Override values from buildconfig and run no tests.')
+  parser.add_option('--remoteteststatus', dest='remote_test_status',
+                    default=None, help='List of remote jobs to check status')
   parser.add_option('--resume', action='store_true',
                     default=False,
                     help='Skip stages already successfully completed.')
diff --git a/buildbot/cbuildbot_stages.py b/buildbot/cbuildbot_stages.py
index e152d45..e8a198e 100644
--- a/buildbot/cbuildbot_stages.py
+++ b/buildbot/cbuildbot_stages.py
@@ -473,6 +473,20 @@
             self._build_root, test_results_dir)
 
 
+class RemoteTestStatusStage(BuilderStage):
+  """Stage that performs testing steps."""
+  def _PerformStage(self):
+    test_status_cmd = ['./crostools/get_test_status.py',
+                       '--board=%s' % self._build_config['board'],
+                       '--build=%s' % self._options.buildnumber]
+    for job in self._options.remote_test_status.split(','):
+      result = cros_lib.RunCommand(
+          test_status_cmd + ['--category=%s' % job],
+          redirect_stdout=True, print_cmd=False)
+      # Emit annotations for buildbot status updates.
+      print result.output
+
+
 class ArchiveStage(BuilderStage):
   """Archives build and test artifacts for developer consumption."""
   def _PerformStage(self):