improved 1 -> n test and explanation
This commit is contained in:
parent
ae39ccc8e2
commit
29fb0dda30
@ -89,7 +89,7 @@ def post_partial(url, data: Iterable[bytes], metadata: dict):
|
||||
dispatch_http_method_left_and_forward_data_right,
|
||||
send_data_with_method_to_analyzer,
|
||||
extract_payload_from_responses,
|
||||
flatten, # analysis may be 1 -> 1 or 1 -> n, so flatten
|
||||
flatten, # each analysis call returns an iterable. Can be empty, singleton or multi item. Hence, flatten.
|
||||
)
|
||||
|
||||
return input_data_to_result_data(data)
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
import pytest
|
||||
from funcy import lmap
|
||||
|
||||
from pyinfra.rest import post_partial
|
||||
from pyinfra.rest import post_partial, unpack
|
||||
|
||||
|
||||
@pytest.mark.parametrize("batched", [True, False])
|
||||
@pytest.mark.parametrize("item_type", ["pdf", "string", "image"])
|
||||
def test_sending_partial_request(url, input_data_items, metadata, operation, target_data_items, server_process):
|
||||
output = list(post_partial(f"{url}/process", input_data_items, metadata))
|
||||
assert output == target_data_items
|
||||
output = lmap(unpack, post_partial(f"{url}/process", input_data_items, metadata))
|
||||
assert output == lmap(unpack, target_data_items)
|
||||
|
||||
9
test/fixtures/input.py
vendored
9
test/fixtures/input.py
vendored
@ -37,7 +37,7 @@ def target_data_items(input_data_items, item_type, operation, metadata):
|
||||
return expected
|
||||
|
||||
|
||||
@pytest.fixture(params=[0, 1, 2, 5])
|
||||
@pytest.fixture(params=[0, 1, 2, 5, 10])
|
||||
def n_items(request):
|
||||
return request.param
|
||||
|
||||
@ -50,10 +50,15 @@ def input_batch(n_items):
|
||||
return np.random.random_sample(size=(n_items, 3, 30, 30))
|
||||
|
||||
|
||||
@pytest.fixture(params=[1, 2, 5, 100])
|
||||
def buffer_size(request):
|
||||
return request.param
|
||||
|
||||
|
||||
def images(n_items):
|
||||
return lmap(compose(image_to_bytes, array_to_image), input_batch(n_items))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def metadata():
|
||||
return {"idx": [1, 100, 101], "path": "asd/asd"}
|
||||
return {"dummy": True}
|
||||
|
||||
1
test/fixtures/pdf.py
vendored
1
test/fixtures/pdf.py
vendored
@ -8,5 +8,6 @@ from test.utils.pdf import pdf_stream
|
||||
def pdf():
|
||||
pdf = fpdf.FPDF(unit="pt")
|
||||
pdf.add_page()
|
||||
pdf.add_page()
|
||||
|
||||
return pdf_stream(pdf)
|
||||
|
||||
10
test/fixtures/server.py
vendored
10
test/fixtures/server.py
vendored
@ -65,8 +65,9 @@ def operation(item_type, batched):
|
||||
return image_to_bytes(im.rotate(90)), metadata
|
||||
|
||||
def stream_pages(pdf: bytes, metadata):
|
||||
for page in fitz.open(stream=pdf):
|
||||
yield page.get_pixmap().tobytes("png"), metadata
|
||||
for i, page in enumerate(fitz.open(stream=pdf)):
|
||||
# yield page.get_pixmap().tobytes("png"), metadata
|
||||
yield f"page_{i}".encode(), metadata
|
||||
|
||||
try:
|
||||
return {"string": upper, "image": rotate, "pdf": stream_pages}[item_type]
|
||||
@ -85,11 +86,6 @@ def batched(request):
|
||||
return request.param
|
||||
|
||||
|
||||
@pytest.fixture(params=[1, 3, 7, 100])
|
||||
def buffer_size(request):
|
||||
return request.param
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def host_and_port(host, port):
|
||||
return {"host": host, "port": port}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user