#!/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. """This is a simple HTTP server for manually testing exponential back-off functionality in Chrome. """ import BaseHTTPServer import sys import urlparse AJAX_TEST_PAGE = '''
''' class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): keep_running = True local_ip = '' port = 0 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 if self.path.startswith('/ajax/'): self.send_response(200) self.send_header('Content-Type', 'text/html') self.end_headers() self.wfile.write(AJAX_TEST_PAGE % (self.local_ip, self.port, self.path[6:])) 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: status_code = int(params['code'][0]) self.send_response(status_code) self.end_headers() self.wfile.write('Error %d' % int(status_code)) def main(): if len(sys.argv) != 3: print "Usage: %s LOCAL_IP PORT" % sys.argv[0] sys.exit(1) RequestHandler.local_ip = sys.argv[1] port = int(sys.argv[2]) RequestHandler.port = port 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()