tests: share server across tests, suppress probe noise
- Add session-scoped shared_server fixture to avoid 27+ server start/stop cycles - Refactor test_tcp.py and test_features.py to use shared server - Suppress server health-check probe stderr noise in common.py
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
"""TCP transport correctness tests."""
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import pytest
|
||||
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
from common import (
|
||||
PROJECT_ROOT, BUILD_DIR, TEST_DATA_DIR,
|
||||
ServerManager, run_client, run_client_posix,
|
||||
run_client, run_client_posix,
|
||||
generate_test_files, verify_transfer, clean_dir, make_result,
|
||||
get_dest_received_dir, CLIENT_CMD,
|
||||
)
|
||||
@@ -20,22 +21,20 @@ def setup_test_data():
|
||||
generate_test_files(SOURCE_DIR, full=False)
|
||||
clean_dir(DEST_DIR)
|
||||
yield
|
||||
import shutil
|
||||
shutil.rmtree(TEST_DATA_DIR, ignore_errors=True)
|
||||
|
||||
|
||||
def _run_tcp_test(name, flags, use_metadata=True, posix=False):
|
||||
"""Run a single TCP test case with a fresh server."""
|
||||
def _run_tcp_test(name, port, flags, use_metadata=True, posix=False):
|
||||
"""Run a single TCP test case against a shared server."""
|
||||
clean_dir(DEST_DIR)
|
||||
with ServerManager() as server:
|
||||
if posix:
|
||||
result, dur = run_client_posix(SOURCE_DIR, DEST_DIR,
|
||||
flags=(["-M"] if use_metadata else []) + flags,
|
||||
port=server.port)
|
||||
else:
|
||||
result, dur = run_client(SOURCE_DIR, DEST_DIR,
|
||||
flags=(["-M"] if use_metadata else []) + flags,
|
||||
port=server.port)
|
||||
if posix:
|
||||
result, dur = run_client_posix(SOURCE_DIR, DEST_DIR,
|
||||
flags=(["-M"] if use_metadata else []) + flags,
|
||||
port=port)
|
||||
else:
|
||||
result, dur = run_client(SOURCE_DIR, DEST_DIR,
|
||||
flags=(["-M"] if use_metadata else []) + flags,
|
||||
port=port)
|
||||
|
||||
if result.returncode != 0:
|
||||
return make_result(name, False, dur, f"Exit {result.returncode}: {(result.stderr or result.stdout)[:100]}")
|
||||
@@ -50,62 +49,62 @@ def _run_tcp_test(name, flags, use_metadata=True, posix=False):
|
||||
|
||||
|
||||
class TestTCPStandard:
|
||||
def test_standard(self):
|
||||
r = _run_tcp_test("Standard", [])
|
||||
def test_standard(self, shared_server):
|
||||
r = _run_tcp_test("Standard", shared_server.port, [])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_posix_args(self):
|
||||
r = _run_tcp_test("Posix Args", [], posix=True)
|
||||
def test_posix_args(self, shared_server):
|
||||
r = _run_tcp_test("Posix Args", shared_server.port, [], posix=True)
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_no_metadata(self):
|
||||
r = _run_tcp_test("Standard (no metadata)", [], use_metadata=False)
|
||||
def test_no_metadata(self, shared_server):
|
||||
r = _run_tcp_test("Standard (no metadata)", shared_server.port, [], use_metadata=False)
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
|
||||
class TestTCPFlags:
|
||||
def test_multithreading(self):
|
||||
r = _run_tcp_test("Multithreading (-m)", ["-m"])
|
||||
def test_multithreading(self, shared_server):
|
||||
r = _run_tcp_test("Multithreading (-m)", shared_server.port, ["-m"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_compression(self):
|
||||
r = _run_tcp_test("Compression (-c)", ["-c"])
|
||||
def test_compression(self, shared_server):
|
||||
r = _run_tcp_test("Compression (-c)", shared_server.port, ["-c"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_chunk_serialization(self):
|
||||
r = _run_tcp_test("Chunk Serialization (-s)", ["-s"])
|
||||
def test_chunk_serialization(self, shared_server):
|
||||
r = _run_tcp_test("Chunk Serialization (-s)", shared_server.port, ["-s"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_compression_chunk(self):
|
||||
r = _run_tcp_test("Compression + Chunk (-c -s)", ["-c", "-s"])
|
||||
def test_compression_chunk(self, shared_server):
|
||||
r = _run_tcp_test("Compression + Chunk (-c -s)", shared_server.port, ["-c", "-s"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_multithread_compression(self):
|
||||
r = _run_tcp_test("Multithreading + Compression (-m -c)", ["-m", "-c"])
|
||||
def test_multithread_compression(self, shared_server):
|
||||
r = _run_tcp_test("Multithreading + Compression (-m -c)", shared_server.port, ["-m", "-c"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_multithread_chunk(self):
|
||||
r = _run_tcp_test("Multithreading + Chunk (-m -s)", ["-m", "-s"])
|
||||
def test_multithread_chunk(self, shared_server):
|
||||
r = _run_tcp_test("Multithreading + Chunk (-m -s)", shared_server.port, ["-m", "-s"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_all_flags(self):
|
||||
r = _run_tcp_test("Multithread + Compression + Chunk (-m -c -s)", ["-m", "-c", "-s"])
|
||||
def test_all_flags(self, shared_server):
|
||||
r = _run_tcp_test("Multithread + Compression + Chunk (-m -c -s)", shared_server.port, ["-m", "-c", "-s"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_sendfile(self):
|
||||
r = _run_tcp_test("Sendfile (-f)", ["-f"])
|
||||
def test_sendfile(self, shared_server):
|
||||
r = _run_tcp_test("Sendfile (-f)", shared_server.port, ["-f"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_sendfile_multithread(self):
|
||||
r = _run_tcp_test("Sendfile + Multithreading (-f -m)", ["-f", "-m"])
|
||||
def test_sendfile_multithread(self, shared_server):
|
||||
r = _run_tcp_test("Sendfile + Multithreading (-f -m)", shared_server.port, ["-f", "-m"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
|
||||
class TestTCPChunkSize:
|
||||
def test_custom_chunk_size(self):
|
||||
r = _run_tcp_test("Chunk size 5MB", ["--chunk-size", "5242880"])
|
||||
def test_custom_chunk_size(self, shared_server):
|
||||
r = _run_tcp_test("Chunk size 5MB", shared_server.port, ["--chunk-size", "5242880"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
def test_small_chunk_size(self):
|
||||
r = _run_tcp_test("Chunk size 1KB", ["--chunk-size", "1024"])
|
||||
def test_small_chunk_size(self, shared_server):
|
||||
r = _run_tcp_test("Chunk size 1KB", shared_server.port, ["--chunk-size", "1024"])
|
||||
assert r["status"] == "Success", r["error"]
|
||||
|
||||
Reference in New Issue
Block a user