| Index: swarm_client/example/run_example_swarm.py
|
| ===================================================================
|
| --- swarm_client/example/run_example_swarm.py (revision 235167)
|
| +++ swarm_client/example/run_example_swarm.py (working copy)
|
| @@ -1,177 +0,0 @@
|
| -#!/usr/bin/env python
|
| -# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -"""Runs hello_world.py, through hello_world.isolate, remotely on a Swarm slave.
|
| -"""
|
| -
|
| -import datetime
|
| -import getpass
|
| -import hashlib
|
| -import optparse
|
| -import os
|
| -import shutil
|
| -import subprocess
|
| -import sys
|
| -import tempfile
|
| -
|
| -
|
| -ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
|
| -
|
| -# Mapping of the sys.platform value into Swarm OS value.
|
| -OSES = {'win32': 'win', 'linux2': 'linux', 'darwin': 'mac'}
|
| -
|
| -
|
| -def run(cmd, verbose):
|
| - cmd = cmd[:]
|
| - cmd.extend(['--verbose'] * verbose)
|
| - print('Running: %s' % ' '.join(cmd))
|
| - cmd = [sys.executable, os.path.join(ROOT_DIR, '..', cmd[0])] + cmd[1:]
|
| - if sys.platform != 'win32':
|
| - cmd = ['time', '-p'] + cmd
|
| - subprocess.check_call(cmd)
|
| -
|
| -
|
| -def simple(isolate_server, swarming_server, prefix, os_slave, verbose):
|
| - try:
|
| - # All the files are put in a temporary directory. This is optional and
|
| - # simply done so the current directory doesn't have the following files
|
| - # created:
|
| - # - hello_world.isolated
|
| - # - hello_world.isolated.state
|
| - tempdir = tempfile.mkdtemp(prefix='hello_world')
|
| - isolated = os.path.join(tempdir, 'hello_world.isolated')
|
| -
|
| - run(
|
| - [
|
| - 'isolate.py',
|
| - 'check',
|
| - '--isolate', os.path.join(ROOT_DIR, 'hello_world.isolate'),
|
| - '--isolated', isolated,
|
| - # Manually override the OS.
|
| - '--variable', 'OS', OSES[os_slave],
|
| - ],
|
| - verbose)
|
| -
|
| - run(
|
| - [
|
| - 'swarming.py',
|
| - 'run',
|
| - '--os', os_slave,
|
| - '--swarming', swarming_server,
|
| - '--task-prefix', prefix,
|
| - '--isolate-server', isolate_server,
|
| - isolated,
|
| - ],
|
| - verbose)
|
| - return 0
|
| - finally:
|
| - shutil.rmtree(tempdir)
|
| -
|
| -
|
| -def involved(isolate_server, swarming_server, prefix, os_slave, verbose):
|
| - """Runs all the steps involved individually, for demonstration purposes."""
|
| - try:
|
| - # All the files are put in a temporary directory. This is optional and
|
| - # simply done so the current directory doesn't have the following files
|
| - # created:
|
| - # - hello_world.isolated
|
| - # - hello_world.isolated.state
|
| - tempdir = tempfile.mkdtemp(prefix='hello_world')
|
| - isolated = os.path.join(tempdir, 'hello_world.isolated')
|
| -
|
| - print('Archiving')
|
| - run(
|
| - [
|
| - 'isolate.py',
|
| - 'archive',
|
| - '--isolate', os.path.join(ROOT_DIR, 'hello_world.isolate'),
|
| - '--isolated', isolated,
|
| - '--outdir', isolate_server,
|
| - # Manually override the OS.
|
| - '--variable', 'OS', OSES[os_slave],
|
| - ],
|
| - verbose)
|
| - hashval = hashlib.sha1(open(isolated, 'rb').read()).hexdigest()
|
| - finally:
|
| - shutil.rmtree(tempdir)
|
| -
|
| - print('\nRunning')
|
| - run(
|
| - [
|
| - 'swarming.py',
|
| - 'trigger',
|
| - '--os', os_slave,
|
| - '--isolate-server', isolate_server,
|
| - '--swarming', swarming_server,
|
| - '--task-prefix', prefix,
|
| - '--task',
|
| - hashval,
|
| - 'hello_world',
|
| - # Number of shards.
|
| - '1',
|
| - '*',
|
| - ],
|
| - verbose)
|
| -
|
| - print('\nGetting results')
|
| - run(
|
| - [
|
| - 'swarming.py',
|
| - 'collect',
|
| - '--swarming', swarming_server,
|
| - prefix + 'hello_world',
|
| - ],
|
| - verbose)
|
| - return 0
|
| -
|
| -
|
| -def main():
|
| - parser = optparse.OptionParser(description=sys.modules[__name__].__doc__)
|
| - parser.add_option(
|
| - '-I', '--isolate-server',
|
| - metavar='URL', default='',
|
| - help='Isolate server to use')
|
| - parser.add_option(
|
| - '-S', '--swarming',
|
| - metavar='URL', default='',
|
| - help='Swarming server to use')
|
| - parser.add_option('-v', '--verbose', action='count', default=0)
|
| - parser.add_option(
|
| - '-o', '--os', default=sys.platform,
|
| - help='Swarm OS image to request. Should be one of the valid sys.platform '
|
| - 'values like darwin, linux2 or win32 default: %default.')
|
| - parser.add_option(
|
| - '--short', action='store_true',
|
| - help='Use \'swarming.py run\' instead of running each step manually')
|
| - options, args = parser.parse_args()
|
| - if args:
|
| - parser.error('Unsupported argument %s' % args)
|
| - if not options.isolate_server:
|
| - parser.error('--isolate-server is required.')
|
| - if not options.swarming:
|
| - parser.error('--swarming is required.')
|
| -
|
| - prefix = getpass.getuser() + '-' + datetime.datetime.now().isoformat() + '-'
|
| - try:
|
| - if options.short:
|
| - return simple(
|
| - options.isolate_server,
|
| - options.swarming,
|
| - prefix,
|
| - options.os,
|
| - options.verbose)
|
| - else:
|
| - return involved(
|
| - options.isolate_server,
|
| - options.swarming,
|
| - prefix,
|
| - options.os,
|
| - options.verbose)
|
| - except subprocess.CalledProcessError as e:
|
| - print e.returncode or 1
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - sys.exit(main())
|
|
|