()
| 83 | |
| 84 | |
| 85 | def serve(): |
| 86 | range_start = 8900 |
| 87 | parser = argparse.ArgumentParser() |
| 88 | parser.add_argument("--host", |
| 89 | help="runner's host, by default it uses localhost", |
| 90 | default="localhost", |
| 91 | action="store") |
| 92 | parser.add_argument("--port", |
| 93 | help="runner's port, by default it uses values >=%s" % range_start, |
| 94 | action="store") |
| 95 | parser.add_argument("--dispatcher-server", |
| 96 | help="dispatcher host:port, by default it uses " \ |
| 97 | "localhost:8888", |
| 98 | default="localhost:8888", |
| 99 | action="store") |
| 100 | parser.add_argument("repo", metavar="REPO", type=str, |
| 101 | help="path to the repository this will observe") |
| 102 | args = parser.parse_args() |
| 103 | |
| 104 | runner_host = args.host |
| 105 | runner_port = None |
| 106 | tries = 0 |
| 107 | if not args.port: |
| 108 | runner_port = range_start |
| 109 | while tries < 100: |
| 110 | try: |
| 111 | server = ThreadingTCPServer((runner_host, runner_port), |
| 112 | TestHandler) |
| 113 | print server |
| 114 | print runner_port |
| 115 | break |
| 116 | except socket.error as e: |
| 117 | if e.errno == errno.EADDRINUSE: |
| 118 | tries += 1 |
| 119 | runner_port = runner_port + tries |
| 120 | continue |
| 121 | else: |
| 122 | raise e |
| 123 | else: |
| 124 | raise Exception("Could not bind to ports in range %s-%s" % (range_start, range_start+tries)) |
| 125 | else: |
| 126 | runner_port = int(args.port) |
| 127 | server = ThreadingTCPServer((runner_host, runner_port), TestHandler) |
| 128 | server.repo_folder = args.repo |
| 129 | |
| 130 | dispatcher_host, dispatcher_port = args.dispatcher_server.split(":") |
| 131 | server.dispatcher_server = {"host":dispatcher_host, "port":dispatcher_port} |
| 132 | response = helpers.communicate(server.dispatcher_server["host"], |
| 133 | int(server.dispatcher_server["port"]), |
| 134 | "register:%s:%s" % |
| 135 | (runner_host, runner_port)) |
| 136 | if response != "OK": |
| 137 | raise Exception("Can't register with dispatcher!") |
| 138 | |
| 139 | def dispatcher_checker(server): |
| 140 | # Checks if the dispatcher went down. If it is down, we will shut down |
| 141 | # if since the dispatcher may not have the same host/port |
| 142 | # when it comes back up. |
no test coverage detected