1*d57664e9SAndroid Build Coastguard Worker#!/usr/bin/python 2*d57664e9SAndroid Build Coastguard Worker 3*d57664e9SAndroid Build Coastguard Workerimport optparse 4*d57664e9SAndroid Build Coastguard Workerimport sys 5*d57664e9SAndroid Build Coastguard Workerimport time 6*d57664e9SAndroid Build Coastguard Worker 7*d57664e9SAndroid Build Coastguard Workerimport adbutil 8*d57664e9SAndroid Build Coastguard Workerfrom devices import DEVICES 9*d57664e9SAndroid Build Coastguard Worker 10*d57664e9SAndroid Build Coastguard Workerdef parse_options(argv): 11*d57664e9SAndroid Build Coastguard Worker usage = 'Usage: %prog [options]' 12*d57664e9SAndroid Build Coastguard Worker desc = 'Example: %prog' 13*d57664e9SAndroid Build Coastguard Worker parser = optparse.OptionParser(usage=usage, description=desc) 14*d57664e9SAndroid Build Coastguard Worker parser.add_option("-c", dest='clear', action="store_true") 15*d57664e9SAndroid Build Coastguard Worker parser.add_option("-d", dest='device', action="store",) 16*d57664e9SAndroid Build Coastguard Worker parser.add_option("-t", dest='trace', action="store_true") 17*d57664e9SAndroid Build Coastguard Worker options, categories = parser.parse_args(argv[1:]) 18*d57664e9SAndroid Build Coastguard Worker return (options, categories) 19*d57664e9SAndroid Build Coastguard Worker 20*d57664e9SAndroid Build Coastguard Workerdef clear_data(device = None): 21*d57664e9SAndroid Build Coastguard Worker if device != None: 22*d57664e9SAndroid Build Coastguard Worker dev = DEVICES[device] 23*d57664e9SAndroid Build Coastguard Worker adbutil.root(dev) 24*d57664e9SAndroid Build Coastguard Worker adbutil.pm(dev, "clear", "com.android.benchmark") 25*d57664e9SAndroid Build Coastguard Worker else: 26*d57664e9SAndroid Build Coastguard Worker for name, dev in DEVICES.iteritems(): 27*d57664e9SAndroid Build Coastguard Worker print("Clearing " + name) 28*d57664e9SAndroid Build Coastguard Worker adbutil.root(dev) 29*d57664e9SAndroid Build Coastguard Worker adbutil.pm(dev, "clear", "com.android.benchmark") 30*d57664e9SAndroid Build Coastguard Worker 31*d57664e9SAndroid Build Coastguard Workerdef start_device(name, dev): 32*d57664e9SAndroid Build Coastguard Worker print("Go " + name + "!") 33*d57664e9SAndroid Build Coastguard Worker try: 34*d57664e9SAndroid Build Coastguard Worker adbutil.am(dev, "force-stop", "com.android.benchmark") 35*d57664e9SAndroid Build Coastguard Worker adbutil.wake(dev) 36*d57664e9SAndroid Build Coastguard Worker adbutil.am(dev, "start", 37*d57664e9SAndroid Build Coastguard Worker ["-n", "\"com.android.benchmark/.app.RunLocalBenchmarksActivity\"", 38*d57664e9SAndroid Build Coastguard Worker "--eia", "\"com.android.benchmark.EXTRA_ENABLED_BENCHMARK_IDS\"", "\"0,1,2,3,4,5,6\"", 39*d57664e9SAndroid Build Coastguard Worker "--ei", "\"com.android.benchmark.EXTRA_RUN_COUNT\"", "\"5\""]) 40*d57664e9SAndroid Build Coastguard Worker except adbutil.AdbError: 41*d57664e9SAndroid Build Coastguard Worker print "Couldn't launch " + name + "." 42*d57664e9SAndroid Build Coastguard Worker 43*d57664e9SAndroid Build Coastguard Workerdef start_benchmark(device, trace): 44*d57664e9SAndroid Build Coastguard Worker if device != None: 45*d57664e9SAndroid Build Coastguard Worker start_device(device, DEVICES[device]) 46*d57664e9SAndroid Build Coastguard Worker if trace: 47*d57664e9SAndroid Build Coastguard Worker time.sleep(3) 48*d57664e9SAndroid Build Coastguard Worker adbutil.trace(DEVICES[device]) 49*d57664e9SAndroid Build Coastguard Worker else: 50*d57664e9SAndroid Build Coastguard Worker if trace: 51*d57664e9SAndroid Build Coastguard Worker print("Note: -t only valid with -d, can't trace") 52*d57664e9SAndroid Build Coastguard Worker for name, dev in DEVICES.iteritems(): 53*d57664e9SAndroid Build Coastguard Worker start_device(name, dev) 54*d57664e9SAndroid Build Coastguard Worker 55*d57664e9SAndroid Build Coastguard Workerdef main(): 56*d57664e9SAndroid Build Coastguard Worker options, categories = parse_options(sys.argv) 57*d57664e9SAndroid Build Coastguard Worker if options.clear: 58*d57664e9SAndroid Build Coastguard Worker print options.device 59*d57664e9SAndroid Build Coastguard Worker clear_data(options.device) 60*d57664e9SAndroid Build Coastguard Worker else: 61*d57664e9SAndroid Build Coastguard Worker start_benchmark(options.device, options.trace) 62*d57664e9SAndroid Build Coastguard Worker 63*d57664e9SAndroid Build Coastguard Worker 64*d57664e9SAndroid Build Coastguard Workerif __name__ == "__main__": 65*d57664e9SAndroid Build Coastguard Worker main() 66