|  | # Copyright 2015 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. | 
|  |  | 
|  | import argparse | 
|  | import SimpleHTTPServer | 
|  | import SocketServer | 
|  | import sys | 
|  | import threading | 
|  | import time | 
|  |  | 
|  |  | 
|  | class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler): | 
|  |  | 
|  | def do_GET(self): | 
|  | self.wfile.write('SUCCESS!') | 
|  |  | 
|  |  | 
|  | def GetArgs(): | 
|  | """Returns the specified command line args.""" | 
|  | parser = argparse.ArgumentParser() | 
|  | parser.add_argument('--port', required=True, type=int) | 
|  | parser.add_argument('--timeout', type=int, default=60) | 
|  | return parser.parse_args() | 
|  |  | 
|  |  | 
|  | def main(): | 
|  | """Run a webserver until the process is killed.""" | 
|  | server = None | 
|  | args = GetArgs() | 
|  | try: | 
|  | server = SocketServer.TCPServer(('', args.port), Handler) | 
|  | thread = threading.Thread(target=server.serve_forever) | 
|  | thread.start() | 
|  | start = time.time() | 
|  | while time.time() < start + args.timeout: | 
|  | time.sleep(1) | 
|  | finally: | 
|  | if server: | 
|  | server.shutdown() | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(main()) |