| 13 | |
| 14 | |
| 15 | class H2TestSetup(HttpdTestSetup): |
| 16 | |
| 17 | def __init__(self, env: 'HttpdTestEnv'): |
| 18 | super().__init__(env=env) |
| 19 | self.add_source_dir(os.path.dirname(inspect.getfile(H2TestSetup))) |
| 20 | self.add_modules(["http2", "proxy_http2", "cgid", "autoindex", "ssl", "include"]) |
| 21 | |
| 22 | def make(self): |
| 23 | super().make() |
| 24 | self._add_h2test() |
| 25 | self._setup_data_1k_1m() |
| 26 | |
| 27 | def _add_h2test(self): |
| 28 | local_dir = os.path.dirname(inspect.getfile(H2TestSetup)) |
| 29 | p = subprocess.run([self.env.apxs, '-c', 'mod_h2test.c'], |
| 30 | capture_output=True, |
| 31 | cwd=os.path.join(local_dir, 'mod_h2test')) |
| 32 | rv = p.returncode |
| 33 | if rv != 0: |
| 34 | log.error(f"compiling md_h2test failed: {p.stderr}") |
| 35 | raise Exception(f"compiling md_h2test failed: {p.stderr}") |
| 36 | |
| 37 | modules_conf = os.path.join(self.env.server_dir, 'conf/modules.conf') |
| 38 | with open(modules_conf, 'a') as fd: |
| 39 | # load our test module which is not installed |
| 40 | fd.write(f"LoadModule h2test_module \"{local_dir}/mod_h2test/.libs/mod_h2test.so\"\n") |
| 41 | |
| 42 | def _setup_data_1k_1m(self): |
| 43 | s90 = "01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678\n" |
| 44 | with open(os.path.join(self.env.gen_dir, "data-1k"), 'w') as f: |
| 45 | for i in range(10): |
| 46 | f.write(f"{i:09d}-{s90}") |
| 47 | with open(os.path.join(self.env.gen_dir, "data-10k"), 'w') as f: |
| 48 | for i in range(100): |
| 49 | f.write(f"{i:09d}-{s90}") |
| 50 | with open(os.path.join(self.env.gen_dir, "data-100k"), 'w') as f: |
| 51 | for i in range(1000): |
| 52 | f.write(f"{i:09d}-{s90}") |
| 53 | with open(os.path.join(self.env.gen_dir, "data-1m"), 'w') as f: |
| 54 | for i in range(10000): |
| 55 | f.write(f"{i:09d}-{s90}") |
| 56 | test1_docs = os.path.join(self.env.server_docs_dir, 'test1') |
| 57 | self.env.mkpath(test1_docs) |
| 58 | for fname in ["data-1k", "data-10k", "data-100k", "data-1m"]: |
| 59 | src = os.path.join(self.env.gen_dir, fname) |
| 60 | dest = os.path.join(test1_docs, fname) |
| 61 | copyfile(src, dest) |
| 62 | |
| 63 | |
| 64 | class H2TestEnv(HttpdTestEnv): |