xref: /aosp_15_r20/frameworks/base/tests/JankBench/scripts/adbutil.py (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Workerimport subprocess
2*d57664e9SAndroid Build Coastguard Workerimport re
3*d57664e9SAndroid Build Coastguard Workerimport threading
4*d57664e9SAndroid Build Coastguard Worker
5*d57664e9SAndroid Build Coastguard WorkerATRACE_PATH="/android/catapult/systrace/systrace/systrace.py"
6*d57664e9SAndroid Build Coastguard Worker
7*d57664e9SAndroid Build Coastguard Workerclass AdbError(RuntimeError):
8*d57664e9SAndroid Build Coastguard Worker    def __init__(self, arg):
9*d57664e9SAndroid Build Coastguard Worker        self.args = arg
10*d57664e9SAndroid Build Coastguard Worker
11*d57664e9SAndroid Build Coastguard Workerdef am(serial, cmd, args):
12*d57664e9SAndroid Build Coastguard Worker    if not isinstance(args, list):
13*d57664e9SAndroid Build Coastguard Worker        args = [args]
14*d57664e9SAndroid Build Coastguard Worker    full_args = ["am"] + [cmd] + args
15*d57664e9SAndroid Build Coastguard Worker    __call_adb(serial, full_args, False)
16*d57664e9SAndroid Build Coastguard Worker
17*d57664e9SAndroid Build Coastguard Workerdef pm(serial, cmd, args):
18*d57664e9SAndroid Build Coastguard Worker    if not isinstance(args, list):
19*d57664e9SAndroid Build Coastguard Worker        args = [args]
20*d57664e9SAndroid Build Coastguard Worker    full_args = ["pm"] + [cmd] + args
21*d57664e9SAndroid Build Coastguard Worker    __call_adb(serial, full_args, False)
22*d57664e9SAndroid Build Coastguard Worker
23*d57664e9SAndroid Build Coastguard Workerdef dumpsys(serial, topic):
24*d57664e9SAndroid Build Coastguard Worker    return __call_adb(serial, ["dumpsys"] + [topic], True)
25*d57664e9SAndroid Build Coastguard Worker
26*d57664e9SAndroid Build Coastguard Workerdef trace(serial,
27*d57664e9SAndroid Build Coastguard Worker        tags = ["gfx", "sched", "view", "freq", "am", "wm", "power", "load", "memreclaim"],
28*d57664e9SAndroid Build Coastguard Worker        time = "10"):
29*d57664e9SAndroid Build Coastguard Worker    args = [ATRACE_PATH, "-e", serial, "-t" + time, "-b32768"] + tags
30*d57664e9SAndroid Build Coastguard Worker    subprocess.call(args)
31*d57664e9SAndroid Build Coastguard Worker
32*d57664e9SAndroid Build Coastguard Workerdef wake(serial):
33*d57664e9SAndroid Build Coastguard Worker    output = dumpsys(serial, "power")
34*d57664e9SAndroid Build Coastguard Worker    wakefulness = re.search('mWakefulness=([a-zA-Z]+)', output)
35*d57664e9SAndroid Build Coastguard Worker    if wakefulness.group(1) != "Awake":
36*d57664e9SAndroid Build Coastguard Worker        __call_adb(serial, ["input", "keyevent", "KEYCODE_POWER"], False)
37*d57664e9SAndroid Build Coastguard Worker
38*d57664e9SAndroid Build Coastguard Workerdef root(serial):
39*d57664e9SAndroid Build Coastguard Worker    subprocess.call(["adb", "-s", serial, "root"])
40*d57664e9SAndroid Build Coastguard Worker
41*d57664e9SAndroid Build Coastguard Workerdef pull(serial, path, dest):
42*d57664e9SAndroid Build Coastguard Worker    subprocess.call(["adb", "-s", serial, "wait-for-device", "pull"] + [path] + [dest])
43*d57664e9SAndroid Build Coastguard Worker
44*d57664e9SAndroid Build Coastguard Workerdef shell(serial, cmd):
45*d57664e9SAndroid Build Coastguard Worker    __call_adb(serial, cmd, False)
46*d57664e9SAndroid Build Coastguard Worker
47*d57664e9SAndroid Build Coastguard Workerdef track_logcat(serial, awaited_string, callback):
48*d57664e9SAndroid Build Coastguard Worker    threading.Thread(target=__track_logcat, name=serial + "-waiter", args=(serial, awaited_string, callback)).start()
49*d57664e9SAndroid Build Coastguard Worker
50*d57664e9SAndroid Build Coastguard Workerdef __call_adb(serial, args, block):
51*d57664e9SAndroid Build Coastguard Worker    full_args = ["adb", "-s", serial, "wait-for-device", "shell"] + args
52*d57664e9SAndroid Build Coastguard Worker    print full_args
53*d57664e9SAndroid Build Coastguard Worker    output = None
54*d57664e9SAndroid Build Coastguard Worker    try:
55*d57664e9SAndroid Build Coastguard Worker        if block:
56*d57664e9SAndroid Build Coastguard Worker            output = subprocess.check_output(full_args)
57*d57664e9SAndroid Build Coastguard Worker        else:
58*d57664e9SAndroid Build Coastguard Worker            subprocess.call(full_args)
59*d57664e9SAndroid Build Coastguard Worker    except subprocess.CalledProcessError:
60*d57664e9SAndroid Build Coastguard Worker        raise AdbError("Error calling " + " ".join(args))
61*d57664e9SAndroid Build Coastguard Worker
62*d57664e9SAndroid Build Coastguard Worker    return output
63