| OLD | NEW |
| (Empty) |
| 1 #!/usr/bin/env python | |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 3 # Use of this source code is governed by a BSD-style license that can be | |
| 4 # found in the LICENSE file. | |
| 5 | |
| 6 """This is a simple HTTP server for manually testing exponential | |
| 7 back-off functionality in Chrome. | |
| 8 """ | |
| 9 | |
| 10 | |
| 11 import BaseHTTPServer | |
| 12 import sys | |
| 13 import urlparse | |
| 14 | |
| 15 | |
| 16 AJAX_TEST_PAGE = ''' | |
| 17 <html> | |
| 18 <head> | |
| 19 <script> | |
| 20 | |
| 21 function reportResult(txt) { | |
| 22 var element = document.createElement('p'); | |
| 23 element.innerHTML = txt; | |
| 24 document.body.appendChild(element); | |
| 25 } | |
| 26 | |
| 27 function fetch() { | |
| 28 var response_code = document.getElementById('response_code'); | |
| 29 | |
| 30 xmlhttp = new XMLHttpRequest(); | |
| 31 xmlhttp.open("GET", | |
| 32 "http://%s:%d/%s?code=" + response_code.value, | |
| 33 true); | |
| 34 xmlhttp.onreadystatechange = function() { | |
| 35 reportResult( | |
| 36 'readyState=' + xmlhttp.readyState + ', status=' + xmlhttp.status); | |
| 37 } | |
| 38 try { | |
| 39 xmlhttp.send(null); | |
| 40 } catch (e) { | |
| 41 reportResult('Exception: ' + e); | |
| 42 } | |
| 43 } | |
| 44 | |
| 45 </script> | |
| 46 </head> | |
| 47 <body> | |
| 48 <form action="javascript:fetch()"> | |
| 49 Response code to get: <input id="response_code" type="text" value="503"> | |
| 50 <input type="submit"> | |
| 51 </form> | |
| 52 </body> | |
| 53 </html>''' | |
| 54 | |
| 55 | |
| 56 class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): | |
| 57 keep_running = True | |
| 58 local_ip = '' | |
| 59 port = 0 | |
| 60 | |
| 61 def do_GET(self): | |
| 62 if self.path == '/quitquitquit': | |
| 63 self.send_response(200) | |
| 64 self.send_header('Content-Type', 'text/plain') | |
| 65 self.end_headers() | |
| 66 self.wfile.write('QUITTING') | |
| 67 RequestHandler.keep_running = False | |
| 68 return | |
| 69 | |
| 70 if self.path.startswith('/ajax/'): | |
| 71 self.send_response(200) | |
| 72 self.send_header('Content-Type', 'text/html') | |
| 73 self.end_headers() | |
| 74 self.wfile.write(AJAX_TEST_PAGE % (self.local_ip, | |
| 75 self.port, | |
| 76 self.path[6:])) | |
| 77 return | |
| 78 | |
| 79 params = urlparse.parse_qs(urlparse.urlparse(self.path).query) | |
| 80 | |
| 81 if not params or not 'code' in params or params['code'][0] == '200': | |
| 82 self.send_response(200) | |
| 83 self.send_header('Content-Type', 'text/plain') | |
| 84 self.end_headers() | |
| 85 self.wfile.write('OK') | |
| 86 else: | |
| 87 status_code = int(params['code'][0]) | |
| 88 self.send_response(status_code) | |
| 89 self.end_headers() | |
| 90 self.wfile.write('Error %d' % int(status_code)) | |
| 91 | |
| 92 | |
| 93 def main(): | |
| 94 if len(sys.argv) != 3: | |
| 95 print "Usage: %s LOCAL_IP PORT" % sys.argv[0] | |
| 96 sys.exit(1) | |
| 97 RequestHandler.local_ip = sys.argv[1] | |
| 98 port = int(sys.argv[2]) | |
| 99 RequestHandler.port = port | |
| 100 print "To stop the server, go to http://localhost:%d/quitquitquit" % port | |
| 101 httpd = BaseHTTPServer.HTTPServer(('', port), RequestHandler) | |
| 102 while RequestHandler.keep_running: | |
| 103 httpd.handle_request() | |
| 104 | |
| 105 | |
| 106 if __name__ == '__main__': | |
| 107 main() | |
| OLD | NEW |