12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#!/usr/bin/env python 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved. 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)# found in the LICENSE file. 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import optparse 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import sys 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import time 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import urllib2 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def PrintAndFlush(s): 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) print s 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sys.stdout.flush() 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)def main(args): 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser = optparse.OptionParser(usage='%prog [options] <URL to load>') 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser.add_option('--post', help='POST to URL.', dest='post', 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) action='store_true') 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser.add_option('--get', help='GET to URL.', dest='get', 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) action='store_true') 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser.add_option('--sleep', 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) help='Number of seconds to sleep after reading URL', 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dest='sleep', default=0) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser.add_option('--expect-to-be-killed', help='If set, the script will warn' 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ' if it isn\'t killed before it finishes sleeping.', 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dest='expect_to_be_killed', action='store_true') 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) options, args = parser.parse_args(args) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if len(args) != 1: 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parser.error('Expected URL to load.') 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrintAndFlush('Starting %s.' % sys.argv[0]) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if options.post: 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) urllib2.urlopen(args[0], data='').read() 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) elif options.get: 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) urllib2.urlopen(args[0]).read() 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else: 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # Do nothing but wait to be killed. 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pass 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) time.sleep(float(options.sleep)) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if options.expect_to_be_killed: 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrintAndFlush('Done sleeping. Expected to be killed.') 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sys.exit(0) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)if __name__ == '__main__': 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sys.exit(main(sys.argv[1:])) 49