chromium/native_client_sdk/src/tools/tests/chrome_mock.py

#!/usr/bin/env python
# Copyright 2012 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Mock chrome process used by test code for http server."""

import argparse
import sys
import time
import urllib2

def PrintAndFlush(s):
  sys.stdout.write(s + '\n')
  sys.stdout.flush()

def main(args):
  parser = argparse.ArgumentParser(description=__doc__)
  parser.add_argument('--post', help='POST to URL.', dest='post',
                      action='store_true')
  parser.add_argument('--get', help='GET to URL.', dest='get',
                      action='store_true')
  parser.add_argument('--sleep',
                      help='Number of seconds to sleep after reading URL',
                      dest='sleep', default=0)
  parser.add_argument('--expect-to-be-killed', help='If set, the script will'
                      ' warn if it isn\'t killed before it finishes sleeping.',
                      dest='expect_to_be_killed', action='store_true')
  parser.add_argument('url')

  options = parser.parse_args(args)

  PrintAndFlush('Starting %s.' % sys.argv[0])

  if options.post:
    urllib2.urlopen(options.url, data='').read()
  elif options.get:
    urllib2.urlopen(options.url).read()
  else:
    # Do nothing but wait to be killed.
    pass

  time.sleep(float(options.sleep))

  if options.expect_to_be_killed:
    PrintAndFlush('Done sleeping. Expected to be killed.')
  return 0

if __name__ == '__main__':
  sys.exit(main(sys.argv[1:]))