MCPcopy
hub / github.com/aosabook/500lines / serve

Function serve

ci/code/test_runner.py:85–169  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

83
84
85def 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.

Callers 1

test_runner.pyFile · 0.70

Calls 4

intFunction · 0.85
joinMethod · 0.80
ThreadingTCPServerClass · 0.70
startMethod · 0.45

Tested by

no test coverage detected