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

Unified Diff: sky/sdk/packages/sky/lib/sky_tool

Issue 1112433003: Add start-tracing and stop-tracing commands to sky_tool (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/sdk/packages/sky/lib/sky_tool
diff --git a/sky/sdk/packages/sky/lib/sky_tool b/sky/sdk/packages/sky/lib/sky_tool
index d245deac858b110b430308ddb42cc1ae1fc888e8..fb63e878fbe018f14da6328ba33831ac03a2283c 100755
--- a/sky/sdk/packages/sky/lib/sky_tool
+++ b/sky/sdk/packages/sky/lib/sky_tool
@@ -208,6 +208,51 @@ class StopSky(object):
pids.clear()
+class StartTracing(object):
+ def add_subparser(self, subparsers):
+ start_tracing_parser = subparsers.add_parser('start_tracing',
+ help=('start tracing a running sky instance'))
+ start_tracing_parser.set_defaults(func=self.run)
+
+ def run(self, args, pids):
+ subprocess.check_output([ADB_PATH, 'shell',
+ 'am', 'broadcast',
+ '-a', 'org.domokit.sky.demo.TRACING_START'])
+
+
+TRACE_COMPLETE_REGEXP = re.compile('Trace complete')
+TRACE_FILE_REGEXP = re.compile(r'Saving trace to (?P<path>\S+)')
+
+
+class StopTracing(object):
+ def add_subparser(self, subparsers):
+ stop_tracing_parser = subparsers.add_parser('stop_tracing',
+ help=('stop tracing a running sky instance'))
+ stop_tracing_parser.set_defaults(func=self.run)
+
+ def run(self, args, pids):
+ subprocess.check_output([ADB_PATH, 'logcat', '-c'])
+ subprocess.check_output([ADB_PATH, 'shell',
+ 'am', 'broadcast',
+ '-a', 'org.domokit.sky.demo.TRACING_STOP'])
+ device_path = None
+ is_complete = False
+ while not is_complete:
+ time.sleep(0.2)
+ log = subprocess.check_output([ADB_PATH, 'logcat', '-d'])
+ if device_path is None:
+ result = TRACE_FILE_REGEXP.search(log)
+ if result:
+ device_path = result.group('path')
+ is_complete = TRACE_COMPLETE_REGEXP.search(log) is not None
+
+ print 'Downloading trace %s ...' % os.path.basename(device_path)
+
+ if device_path:
+ subprocess.check_output([ADB_PATH, 'pull', device_path])
+ subprocess.check_output([ADB_PATH, 'shell', 'rm', device_path])
+
+
class SkyShellRunner(object):
def _check_for_adb(self):
try:
@@ -217,7 +262,6 @@ class SkyShellRunner(object):
return False
return True
-
def main(self):
logging.basicConfig(level=logging.WARNING)
if not self._check_for_adb():
@@ -226,7 +270,7 @@ class SkyShellRunner(object):
parser = argparse.ArgumentParser(description='Sky Demo Runner')
subparsers = parser.add_subparsers(help='sub-command help')
- for command in [StartSky(), StopSky()]:
+ for command in [StartSky(), StopSky(), StartTracing(), StopTracing()]:
command.add_subparser(subparsers)
args = parser.parse_args()
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698