Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: tools/skpbench/_hardware_android.py

Issue 2360473002: Add hardware monitoring to skpbench (Closed)
Patch Set: Add hardware monitoring to skpbench Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/skpbench/_hardware.py ('k') | tools/skpbench/parseskpbench.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright 2016 Google Inc.
2 #
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 from __future__ import print_function
7 from _hardware import Hardware
8 import sys
9 import time
10
11 class HardwareAndroid(Hardware):
12 def __init__(self, adb):
13 Hardware.__init__(self)
14 self.kick_in_time = 5
15 self._adb = adb
16 self._is_root = self._adb.attempt_root()
17 if self._is_root:
18 self._adb.remount()
19 self._initial_airplane_mode = None
20 self._initial_location_providers = None
21 self._initial_ASLR = None
22
23 def __enter__(self):
24 # turn on airplane mode.
25 self._initial_airplane_mode = \
26 self._adb.check('settings get global airplane_mode_on')
27 self._adb.shell('settings put global airplane_mode_on 1')
28
29 # disable GPS.
30 self._initial_location_providers = \
31 self._adb.check('settings get secure location_providers_allowed')
32 self._initial_location_providers = \
33 self._initial_location_providers.replace(',', ' ')
34 self._adb.shell('''\
35 for PROVIDER in %s; do
36 settings put secure location_providers_allowed -$PROVIDER
37 done''' % self._initial_location_providers)
38
39 if self._is_root:
40 # disable bluetooth, wifi, and mobile data.
41 # TODO: can we query these initial values?
42 self._adb.shell('''\
43 service call bluetooth_manager 8 &&
44 svc wifi disable &&
45 svc data disable''')
46
47 # kill the gui.
48 self._adb.shell('''\
49 setprop ctl.stop media &&
50 setprop ctl.stop zygote &&
51 setprop ctl.stop surfaceflinger &&
52 setprop ctl.stop drm''')
53
54 # disable ASLR.
55 self._initial_ASLR = \
56 self._adb.check('cat /proc/sys/kernel/randomize_va_space')
57 self._adb.shell('echo 0 > /proc/sys/kernel/randomize_va_space')
58 else:
59 print("WARNING: no adb root access; results may be unreliable.",
60 file=sys.stderr)
61
62 return Hardware.__enter__(self)
63
64 def __exit__(self, exception_type, exception_value, traceback):
65 Hardware.__exit__(self, exception_type, exception_value, traceback)
66
67 if self._is_root:
68 # restore ASLR.
69 self._adb.shell('echo %s > /proc/sys/kernel/randomize_va_space' %
70 self._initial_ASLR)
71
72 # revive the gui.
73 self._adb.shell('''\
74 setprop ctl.start drm &&
75 setprop ctl.start surfaceflinger &&
76 setprop ctl.start zygote &&
77 setprop ctl.start media''')
78
79 # restore GPS (doesn't seem to work if we killed the gui).
80 self._adb.shell('''\
81 for PROVIDER in %s; do
82 settings put secure location_providers_allowed +$PROVIDER
83 done''' % self._initial_location_providers)
84
85 # restore airplane mode (doesn't seem to work if we killed the gui).
86 self._adb.shell('settings put global airplane_mode_on %s' %
87 self._initial_airplane_mode)
88
89 def sanity_check(self):
90 Hardware.sanity_check(self)
91
92 def sleep(self, sleeptime):
93 Hardware.sleep(self, sleeptime)
OLDNEW
« no previous file with comments | « tools/skpbench/_hardware.py ('k') | tools/skpbench/parseskpbench.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698