普通文本  |  52行  |  1.35 KB

#!/usr/bin/python2.4
# Copyright (c) 2011 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.

"""This is a simple HTTP server for manually testing exponential
back-off functionality in Chrome.
"""


import BaseHTTPServer
import sys
import urlparse


class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
  keep_running = True

  def do_GET(self):
    if self.path == '/quitquitquit':
      self.send_response(200)
      self.send_header('Content-Type', 'text/plain')
      self.end_headers()
      self.wfile.write('QUITTING')
      RequestHandler.keep_running = False
      return

    params = urlparse.parse_qs(urlparse.urlparse(self.path).query)

    if not params or not 'code' in params or params['code'][0] == '200':
      self.send_response(200)
      self.send_header('Content-Type', 'text/plain')
      self.end_headers()
      self.wfile.write('OK')
    else:
      self.send_error(int(params['code'][0]))


def main():
  if len(sys.argv) != 2:
    print "Usage: %s PORT" % sys.argv[0]
    sys.exit(1)
  port = int(sys.argv[1])
  print "To stop the server, go to http://localhost:%d/quitquitquit" % port
  httpd = BaseHTTPServer.HTTPServer(('', port), RequestHandler)
  while RequestHandler.keep_running:
    httpd.handle_request()


if __name__ == '__main__':
  main()