| #!/usr/bin/env python |
| |
| # Copyright (c) 2009 The Chromium OS 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 that's used by the |
| # libcurl_http_fetcher_unittest, though it could be used by others. In |
| # general, you can fork off this server, repeatedly request /test or |
| # some URL until that URL succeeds; then you know the server is |
| # running. The url /big returns 100,000 bytes of predictable data. The |
| # url /quitquitquit causes the server to exit. |
| |
| import SimpleHTTPServer, BaseHTTPServer, httplib |
| |
| class TestHttpRequestHandler (SimpleHTTPServer.SimpleHTTPRequestHandler): |
| def do_GET(self): |
| # Exit the server |
| if self.path == '/quitquitquit': |
| self.server.stop = True |
| |
| # Write 100,000 bytes out |
| if self.path == '/big': |
| self.send_response(200, 'OK') |
| self.send_header('Content-type', 'text/html') |
| self.end_headers() |
| for i in range(0, 10000): |
| try: |
| self.wfile.write('abcdefghij'); # 10 characters |
| except IOError: |
| return |
| return |
| |
| # Everything else |
| self.send_response(200, 'OK') |
| self.send_header('Content-type', 'text/html') |
| self.end_headers() |
| self.wfile.write('unhandled path') |
| |
| class TestHttpServer (BaseHTTPServer.HTTPServer): |
| def serve_forever(self): |
| self.stop = False |
| while not self.stop: |
| self.handle_request() |
| |
| def main(): |
| # TODO(adlr): Choose a port that works with build bots and report it to |
| # caller. |
| # WARNING, if you update this, you must also update http_fetcher_unittest.cc |
| port = 8080 |
| server = TestHttpServer(('', 8080), TestHttpRequestHandler) |
| server.serve_forever() |
| |
| if __name__ == '__main__': |
| main() |