普通文本  |  66行  |  1.98 KB

#!/usr/bin/python

import optparse
import sys
import time

import adbutil
from devices import DEVICES

def parse_options(argv):
    usage = 'Usage: %prog [options]'
    desc = 'Example: %prog'
    parser = optparse.OptionParser(usage=usage, description=desc)
    parser.add_option("-c", dest='clear', action="store_true")
    parser.add_option("-d", dest='device', action="store",)
    parser.add_option("-t", dest='trace', action="store_true")
    options, categories = parser.parse_args(argv[1:])
    return (options, categories)

def clear_data(device = None):
    if device != None:
        dev = DEVICES[device]
        adbutil.root(dev)
        adbutil.pm(dev, "clear", "com.android.benchmark")
    else:
        for name, dev in DEVICES.iteritems():
            print("Clearing " + name)
            adbutil.root(dev)
            adbutil.pm(dev, "clear", "com.android.benchmark")

def start_device(name, dev):
    print("Go " + name + "!")
    try:
        adbutil.am(dev, "force-stop", "com.android.benchmark")
        adbutil.wake(dev)
        adbutil.am(dev, "start",
            ["-n", "\"com.android.benchmark/.app.RunLocalBenchmarksActivity\"",
            "--eia", "\"com.android.benchmark.EXTRA_ENABLED_BENCHMARK_IDS\"", "\"0,1,2,3,4,5,6\"",
            "--ei", "\"com.android.benchmark.EXTRA_RUN_COUNT\"", "\"5\""])
    except adbutil.AdbError:
        print "Couldn't launch " + name + "."

def start_benchmark(device, trace):
    if device != None:
        start_device(device, DEVICES[device])
        if trace:
            time.sleep(3)
            adbutil.trace(DEVICES[device])
    else:
        if trace:
            print("Note: -t only valid with -d, can't trace")
        for name, dev in DEVICES.iteritems():
            start_device(name, dev)

def main():
    options, categories = parse_options(sys.argv)
    if options.clear:
        print options.device
        clear_data(options.device)
    else:
        start_benchmark(options.device, options.trace)


if __name__ == "__main__":
    main()