diff options
Diffstat (limited to 'deprecated/automation/clients/chromeos.py')
-rwxr-xr-x | deprecated/automation/clients/chromeos.py | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/deprecated/automation/clients/chromeos.py b/deprecated/automation/clients/chromeos.py new file mode 100755 index 00000000..572320fd --- /dev/null +++ b/deprecated/automation/clients/chromeos.py @@ -0,0 +1,104 @@ +#!/usr/bin/python2 +# +# Copyright 2011 Google Inc. All Rights Reserved. +"""chromeos.py: Build & Test ChromeOS using custom compilers.""" + +__author__ = 'asharif@google.com (Ahmad Sharif)' + +import logging +import optparse +import os +import pickle +import sys +import xmlrpclib + +from automation.clients.helper import jobs +from automation.clients.helper import perforce +from automation.common import command as cmd +from automation.common import job_group +from automation.common import logger + + +class ChromeOSNightlyClient(object): + DEPOT2_DIR = '//depot2/' + P4_CHECKOUT_DIR = 'perforce2/' + P4_VERSION_DIR = os.path.join(P4_CHECKOUT_DIR, 'gcctools/chromeos/v14') + + def __init__(self, board, remote, gcc_githash, p4_snapshot=''): + self._board = board + self._remote = remote + self._gcc_githash = gcc_githash + self._p4_snapshot = p4_snapshot + + def Run(self): + server = xmlrpclib.Server('http://localhost:8000') + server.ExecuteJobGroup(pickle.dumps(self.CreateJobGroup())) + + def CheckoutV14Dir(self): + p4view = perforce.View(self.DEPOT2_DIR, [ + perforce.PathMapping('gcctools/chromeos/v14/...') + ]) + return self.GetP4Snapshot(p4view) + + def GetP4Snapshot(self, p4view): + p4client = perforce.CommandsFactory(self.P4_CHECKOUT_DIR, p4view) + + if self._p4_snapshot: + return p4client.CheckoutFromSnapshot(self._p4_snapshot) + else: + return p4client.SetupAndDo(p4client.Sync(), p4client.Remove()) + + def CreateJobGroup(self): + chain = cmd.Chain( + self.CheckoutV14Dir(), + cmd.Shell('python', + os.path.join(self.P4_VERSION_DIR, 'test_toolchains.py'), + '--force-mismatch', + '--clean', + '--public', # crbug.com/145822 + '--board=%s' % self._board, + '--remote=%s' % self._remote, + '--githashes=%s' % self._gcc_githash)) + label = 'testlabel' + job = jobs.CreateLinuxJob(label, chain, timeout=24 * 60 * 60) + + return job_group.JobGroup(label, [job], True, False) + + +@logger.HandleUncaughtExceptions +def Main(argv): + parser = optparse.OptionParser() + parser.add_option('-b', + '--board', + dest='board', + help='Run performance tests on these boards') + parser.add_option('-r', + '--remote', + dest='remote', + help='Run performance tests on these remotes') + parser.add_option('-g', + '--gcc_githash', + dest='gcc_githash', + help='Use this gcc_githash.') + parser.add_option('-p', + '--p4_snapshot', + dest='p4_snapshot', + default='', + help='Use this p4_snapshot.') + options, _ = parser.parse_args(argv) + + if not all([options.board, options.remote, options.gcc_githash]): + logging.error('Specify a board, remote and gcc_githash') + return 1 + + client = ChromeOSNightlyClient(options.board, + options.remote, + options.gcc_githash, + p4_snapshot=options.p4_snapshot) + client.Run() + return 0 + + +if __name__ == '__main__': + logger.SetUpRootLogger(level=logging.DEBUG, display_flags={'name': False}) + sys.exit(Main(sys.argv)) |