MCPcopy Create free account
hub / github.com/ddnet/ddnet / TestEnvironment

Class TestEnvironment

scripts/integration_test.py:190–271  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

188
189
190class TestEnvironment:
191 def __init__(self, runner, name, tmp_dir, timeout):
192 self.runner = runner
193 self.tmp_dir = tmp_dir
194 with open(os.path.join(self.tmp_dir, "storage.cfg"), "w", encoding="utf-8") as f:
195 f.write(f"""\
196add_path .
197add_path {relpath(self.runner.data_dir, tmp_dir)}
198""")
199 self.ddnet = os.path.relpath(runner.ddnet, self.tmp_dir)
200 self.ddnet_server = os.path.relpath(runner.ddnet_server, self.tmp_dir)
201 self.ddnet_mastersrv = os.path.relpath(runner.ddnet_mastersrv, self.tmp_dir) if runner.ddnet_mastersrv is not None else None
202 self.run_prefix_args = []
203 if self.runner.valgrind_memcheck:
204 self.run_prefix_args = [
205 "valgrind",
206 "--tool=memcheck",
207 "--gen-suppressions=all",
208 "--suppressions={}".format(relpath(os.path.join(runner.repo_dir, "memcheck.supp"), self.tmp_dir)),
209 "--track-origins=yes",
210 ]
211 self.name = name
212 self.num_clients = 0
213 self.num_servers = 0
214 self.num_mastersrvs = 0
215 self.processes = []
216 self.run_id = uuid4()
217 self.full_stdouts_stderrs = []
218 self.test_timeout_queue = Queue()
219 run_test_timeout_thread(f"{self.name}_timeout", self, self.test_timeout_queue, TimeoutParam(timeout, f"{self.name} test"))
220
221 def __del__(self):
222 self.kill_all()
223
224 def register_process(self, process, name, full_stdout, full_stderr):
225 self.processes.append(process)
226 self.full_stdouts_stderrs.append((name, full_stdout, full_stderr))
227
228 def register_events_queue(self, queue):
229 self.test_timeout_queue.put(queue)
230
231 def server(self, *args, **kwargs):
232 return Server(self, *args, **kwargs)
233
234 def client(self, *args, **kwargs):
235 return Client(self, *args, **kwargs)
236
237 def mastersrv(self, *args, **kwargs):
238 return Mastersrv(self, *args, **kwargs)
239
240 def kill_all(self):
241 for process in self.processes:
242 if process.poll() is None:
243 # print("warning: process hasn't terminated") # TODO
244 process.kill()
245 while self.processes:
246 self.processes.pop().wait()
247

Callers 1

run_testMethod · 0.85

Calls

no outgoing calls

Tested by 1

run_testMethod · 0.68