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

Unified Diff: build/android/test_wrapper/logdog_wrapper.py

Issue 2695963003: Use logdog butler subcommand to run tests. (Closed)
Patch Set: fixes Created 3 years, 10 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 | « build/android/test_runner.py ('k') | tools/mb/mb.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/test_wrapper/logdog_wrapper.py
diff --git a/build/android/test_wrapper/logdog_wrapper.py b/build/android/test_wrapper/logdog_wrapper.py
index 14ed7d138b432d0a2e856ce7f3ae8aa8b6b2e209..51977f1734bed1ecf8fe87da87aac1444a9519e2 100755
--- a/build/android/test_wrapper/logdog_wrapper.py
+++ b/build/android/test_wrapper/logdog_wrapper.py
@@ -11,81 +11,65 @@ import os
import signal
import subprocess
import sys
-import urllib
+from devil.utils import signal_handler
+from py_utils import tempfile_ext
+
+PROJECT = 'chromium'
+OUTPUT = 'logdog,service="services"'
+COORDINATOR_HOST = 'luci-logdog.appspot.com'
def CommandParser():
# Parses the command line arguments being passed in
parser = argparse.ArgumentParser()
+ parser.add_argument('--target', required=True,
+ help='The test target to be run.')
parser.add_argument('--logdog-bin-cmd', required=True,
- help='Command for running logdog butler binary')
- parser.add_argument('--project', required=True,
- help='Name of logdog project')
- parser.add_argument('--logdog-server',
- default='services-dot-luci-logdog.appspot.com',
- help='URL of logdog server, https:// is assumed.')
- parser.add_argument('--service-account-json', required=True,
- help='Location of authentication json')
- parser.add_argument('--prefix', required=True,
- help='Prefix to be used for logdog stream')
- parser.add_argument('--source', required=True,
- help='Location of file for logdog to stream')
- parser.add_argument('--name', required=True,
- help='Name to be used for logdog stream')
+ help='The logdog bin cmd.')
return parser
-
-def CreateUrl(server, project, prefix, name):
- stream_name = '%s/%s/+/%s' % (project, prefix, name)
- return 'https://%s/v/?s=%s' % (server, urllib.quote_plus(stream_name))
-
-
-def CreateSignalForwarder(proc):
- def handler(signum, _frame):
+def CreateStopTestsMethod(proc):
+ def StopTests(signum, _frame):
logging.error('Forwarding signal %s to test process', str(signum))
proc.send_signal(signum)
-
- return handler
-
+ return StopTests
def main():
parser = CommandParser()
- args, test_cmd = parser.parse_known_args(sys.argv[1:])
+ args = parser.parse_args(sys.argv[1:])
+
logging.basicConfig(level=logging.INFO)
- if not test_cmd:
- parser.error('Must specify command to run after the logdog flags')
- test_proc = subprocess.Popen(test_cmd)
- original_sigterm_handler = signal.signal(
- signal.SIGTERM, CreateSignalForwarder(test_proc))
- try:
- result = test_proc.wait()
- finally:
- signal.signal(signal.SIGTERM, original_sigterm_handler)
- if '${SWARMING_TASK_ID}' in args.prefix:
- args.prefix = args.prefix.replace('${SWARMING_TASK_ID}',
- os.environ.get('SWARMING_TASK_ID'))
- url = CreateUrl('luci-logdog.appspot.com', args.project, args.prefix,
- args.name)
- logdog_cmd = [args.logdog_bin_cmd, '-project', args.project,
- '-output', 'logdog,host=%s' % args.logdog_server,
- '-prefix', args.prefix,
- '-service-account-json', args.service_account_json,
- 'stream', '-source', args.source,
- '-stream', '-name=%s' % args.name]
- if not os.path.exists(args.logdog_bin_cmd):
- logging.error(
- 'Logdog binary %s unavailable. Unable to upload logcats.',
- args.logdog_bin_cmd)
- elif not os.path.exists(args.source):
- logging.error(
- 'Logcat sources not found at %s. Unable to upload logcats.',
- args.source)
- else:
- subprocess.call(logdog_cmd)
- logging.info('Logcats are located at: %s', url)
- return result
+ test_cmd = [
+ os.path.join('bin', 'run_%s' % args.target),
+ '--logcat-output-file', '${ISOLATED_OUTDIR}/logcats',
mikecase (-- gone --) 2017/03/01 18:15:32 Btw, martiniss@ said that swarming will automatica
BigBossZhiling 2017/03/02 23:17:14 Done.
+ '--target-devices-file', '${SWARMING_BOT_FILE}',
+ '-v']
+
+ with tempfile_ext.NamedTemporaryDirectory(
+ prefix='tmp_android_logdog_wrapper') as temp_directory:
+ if not os.path.exists(args.logdog_bin_cmd):
+ logging.error(
+ 'Logdog binary %s unavailable. Unable to create logdog client',
+ args.logdog_bin_cmd)
+ else:
+ streamserver_uri = 'unix:%s' % os.path.join(temp_directory,
+ 'butler.sock')
+ prefix = 'android/swarming/logcats/${SWARMING_TASK_ID}'
+
+ # Call test_cmdline through logdog butler subcommand.
+ test_cmd = [
+ args.logdog_bin_cmd, '-project', PROJECT,
+ '-output', OUTPUT,
+ '-prefix', prefix,
+ '-coordinator-host', COORDINATOR_HOST,
+ 'run', '-streamserver-uri', streamserver_uri, '--'] + test_cmd
+ test_proc = subprocess.Popen(test_cmd)
+ with signal_handler.SignalHandler(signal.SIGTERM,
+ CreateStopTestsMethod(test_proc)):
+ result = test_proc.wait()
+ return result
if __name__ == '__main__':
sys.exit(main())
« no previous file with comments | « build/android/test_runner.py ('k') | tools/mb/mb.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698