1010import tempfile
1111from datetime import datetime
1212from typing import Callable , List , Tuple
13-
1413import prettytable
1514from termcolor import colored
1615
17- import testcases
16+ import testcases_quic
1817from result import TestResult
19- from testcases import Perspective
18+ from testcase import Perspective
2019
2120
2221class MeasurementResult :
@@ -50,8 +49,8 @@ def __init__(
5049 self ,
5150 implementations : dict ,
5251 client_server_pairs : List [Tuple [str , str ]],
53- tests : List [testcases .TestCase ],
54- measurements : List [testcases .Measurement ],
52+ tests : List [testcases_quic .TestCase ],
53+ measurements : List [testcases_quic .Measurement ],
5554 output : str ,
5655 markdown : bool ,
5756 debug : bool ,
@@ -117,7 +116,7 @@ def _check_impl_is_compliant(self, name: str, role: Perspective) -> bool:
117116 dir = "/tmp" , prefix = "compliance_downloads_"
118117 )
119118
120- testcases .generate_cert_chain (certs_dir .name )
119+ testcases_quic .generate_cert_chain (certs_dir .name )
121120
122121 if role == Perspective .CLIENT :
123122 # check that the client is capable of returning UNSUPPORTED
@@ -305,8 +304,8 @@ def _export_results(self):
305304 }
306305 for x in self ._tests + self ._measurements
307306 },
308- "quic_draft" : testcases .QUIC_DRAFT ,
309- "quic_version" : testcases .QUIC_VERSION ,
307+ "quic_draft" : testcases_quic .QUIC_DRAFT ,
308+ "quic_version" : testcases_quic .QUIC_VERSION ,
310309 "results" : [],
311310 "measurements" : [],
312311 }
@@ -367,7 +366,7 @@ def _copy_logs(self, container: str, dir: tempfile.TemporaryDirectory):
367366 )
368367
369368 def _run_testcase (
370- self , server : str , client : str , test : Callable [[], testcases .TestCase ]
369+ self , server : str , client : str , test : Callable [[], testcases_quic .TestCase ]
371370 ) -> TestResult :
372371 return self ._run_test (server , client , None , test )[0 ]
373372
@@ -376,7 +375,7 @@ def _run_test(
376375 server : str ,
377376 client : str ,
378377 log_dir_prefix : None ,
379- test : Callable [[], testcases .TestCase ],
378+ fn : Callable [[], testcases_quic .TestCase ],
380379 ) -> Tuple [TestResult , float ]:
381380 start_time = datetime .now ()
382381 sim_log_dir = tempfile .TemporaryDirectory (dir = "/tmp" , prefix = "logs_sim_" )
@@ -390,7 +389,7 @@ def _run_test(
390389 log_handler .setFormatter (formatter )
391390 logging .getLogger ().addHandler (log_handler )
392391
393- testcase = test (
392+ test = fn (
394393 sim_log_dir = sim_log_dir ,
395394 client_keylog_file = client_log_dir .name + "/keys.log" ,
396395 server_keylog_file = server_log_dir .name + "/keys.log" ,
@@ -401,27 +400,27 @@ def _run_test(
401400 + ". Client: "
402401 + client
403402 + ". Running test case: "
404- + str (testcase )
403+ + str (test )
405404 )
406405
407- reqs = " " .join ([testcase .urlprefix () + p for p in testcase .get_paths ()])
406+ reqs = " " .join ([test .urlprefix () + p for p in test .get_paths ()])
408407 logging .debug ("Requests: %s" , reqs )
409408 params = (
410409 "WAITFORSERVER=server:443 "
411- "CERTS=" + testcase .certs_dir () + " "
412- "TESTCASE_SERVER=" + testcase .testname (Perspective .SERVER ) + " "
413- "TESTCASE_CLIENT=" + testcase .testname (Perspective .CLIENT ) + " "
414- "WWW=" + testcase .www_dir () + " "
415- "DOWNLOADS=" + testcase .download_dir () + " "
410+ "CERTS=" + test .certs_dir () + " "
411+ "TESTCASE_SERVER=" + test .testname (Perspective .SERVER ) + " "
412+ "TESTCASE_CLIENT=" + test .testname (Perspective .CLIENT ) + " "
413+ "WWW=" + test .www_dir () + " "
414+ "DOWNLOADS=" + test .download_dir () + " "
416415 "SERVER_LOGS=" + server_log_dir .name + " "
417416 "CLIENT_LOGS=" + client_log_dir .name + " "
418417 'SCENARIO="{}" '
419418 "CLIENT=" + self ._implementations [client ]["image" ] + " "
420419 "SERVER=" + self ._implementations [server ]["image" ] + " "
421420 'REQUESTS="' + reqs + '" '
422- ).format (testcase .scenario ())
423- params += " " .join (testcase .additional_envs ())
424- containers = "sim client server " + " " .join (testcase .additional_containers ())
421+ ).format (test .scenario ())
422+ params += " " .join (test .additional_envs ())
423+ containers = "sim client server " + " " .join (test .additional_containers ())
425424 cmd = (
426425 params
427426 + " docker compose --env-file empty.env up --abort-on-container-exit --timeout 1 "
@@ -438,7 +437,7 @@ def _run_test(
438437 shell = True ,
439438 stdout = subprocess .PIPE ,
440439 stderr = subprocess .STDOUT ,
441- timeout = testcase .timeout (),
440+ timeout = test .timeout (),
442441 )
443442 output = r .stdout
444443 except subprocess .TimeoutExpired as ex :
@@ -448,7 +447,7 @@ def _run_test(
448447 logging .debug ("%s" , output .decode ("utf-8" , errors = "replace" ))
449448
450449 if expired :
451- logging .debug ("Test failed: took longer than %ds." , testcase .timeout ())
450+ logging .debug ("Test failed: took longer than %ds." , test .timeout ())
452451 r = subprocess .run (
453452 "docker compose --env-file empty.env stop " + containers ,
454453 shell = True ,
@@ -469,7 +468,7 @@ def _run_test(
469468 status = TestResult .UNSUPPORTED
470469 elif any ("client exited with code 0" in str (line ) for line in lines ):
471470 try :
472- status = testcase .check ()
471+ status = test .check ()
473472 except FileNotFoundError as e :
474473 logging .error (f"testcase.check() threw FileNotFoundError: { e } " )
475474 status = TestResult .FAILED
@@ -478,41 +477,41 @@ def _run_test(
478477 logging .getLogger ().removeHandler (log_handler )
479478 log_handler .close ()
480479 if status == TestResult .FAILED or status == TestResult .SUCCEEDED :
481- log_dir = self ._log_dir + "/" + server + "_" + client + "/" + str (testcase )
480+ log_dir = self ._log_dir + "/" + server + "_" + client + "/" + str (test )
482481 if log_dir_prefix :
483482 log_dir += "/" + log_dir_prefix
484483 shutil .copytree (server_log_dir .name , log_dir + "/server" )
485484 shutil .copytree (client_log_dir .name , log_dir + "/client" )
486485 shutil .copytree (sim_log_dir .name , log_dir + "/sim" )
487486 shutil .copyfile (log_file .name , log_dir + "/output.txt" )
488487 if self ._save_files and status == TestResult .FAILED :
489- shutil .copytree (testcase .www_dir (), log_dir + "/www" )
488+ shutil .copytree (test .www_dir (), log_dir + "/www" )
490489 try :
491- shutil .copytree (testcase .download_dir (), log_dir + "/downloads" )
490+ shutil .copytree (test .download_dir (), log_dir + "/downloads" )
492491 except Exception as exception :
493492 logging .info ("Could not copy downloaded files: %s" , exception )
494493
495- testcase .cleanup ()
494+ test .cleanup ()
496495 server_log_dir .cleanup ()
497496 client_log_dir .cleanup ()
498497 sim_log_dir .cleanup ()
499498 logging .debug (
500499 "Test: %s took %ss, status: %s" ,
501- str (testcase ),
500+ str (test ),
502501 (datetime .now () - start_time ).total_seconds (),
503502 str (status ),
504503 )
505504
506505 # measurements also have a value
507- if hasattr (testcase , "result" ):
508- value = testcase .result ()
506+ if hasattr (test , "result" ):
507+ value = test .result ()
509508 else :
510509 value = None
511510
512511 return status , value
513512
514513 def _run_measurement (
515- self , server : str , client : str , test : Callable [[], testcases .Measurement ]
514+ self , server : str , client : str , test : Callable [[], testcases_quic .Measurement ]
516515 ) -> MeasurementResult :
517516 values = []
518517 for i in range (0 , test .repetitions ()):
0 commit comments