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