tests/run_tests.py
raw ยท 1439 bytes
#!/usr/bin/env python3
import asyncio
import os
import sys
from .support import SkipTest, raise_fd_limit, run_default_tinyproxy
from . import test_tcp_basic
from . import test_tcp_stress
from . import test_haproxy_proxy_v2
DEFAULT_PROXY_TEST_MODULES = [
test_tcp_basic,
test_tcp_stress,
]
STANDALONE_TEST_MODULES = [
test_haproxy_proxy_v2,
]
async def run_module_tests(module) -> tuple[int, int]:
passed = 0
skipped = 0
for name, test_func in module.TESTS:
print(f"running {name}...")
try:
await test_func()
except SkipTest as exc:
skipped += 1
print(f"skipped {name}: {exc}")
continue
passed += 1
print(f"ok {name}")
return passed, skipped
async def main_async(proxy_bin: str) -> int:
os.environ["TINYPROXY_BIN"] = proxy_bin
fd_limit = int(os.environ.get("FD_LIMIT", "65535"))
raise_fd_limit(fd_limit)
passed = 0
skipped = 0
async with run_default_tinyproxy(proxy_bin):
for module in DEFAULT_PROXY_TEST_MODULES:
p, s = await run_module_tests(module)
passed += p
skipped += s
for module in STANDALONE_TEST_MODULES:
p, s = await run_module_tests(module)
passed += p
skipped += s
print(f"all tests passed: passed={passed} skipped={skipped}")
return 0
def main() -> int:
if len(sys.argv) != 2:
print(f"usage: {sys.argv[0]} tinyproxy", file=sys.stderr)
return 2
return asyncio.run(main_async(sys.argv[1]))
if __name__ == "__main__":
raise SystemExit(main())