diff --git a/pyinfra/rest.py b/pyinfra/rest.py index 2bb799e..0d2f715 100644 --- a/pyinfra/rest.py +++ b/pyinfra/rest.py @@ -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) diff --git a/test/exploration_tests/partial_response_test.py b/test/exploration_tests/partial_response_test.py index bcdcbdc..af8747c 100644 --- a/test/exploration_tests/partial_response_test.py +++ b/test/exploration_tests/partial_response_test.py @@ -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) diff --git a/test/fixtures/input.py b/test/fixtures/input.py index d8e3308..92c64d5 100644 --- a/test/fixtures/input.py +++ b/test/fixtures/input.py @@ -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} diff --git a/test/fixtures/pdf.py b/test/fixtures/pdf.py index 82c6e77..7d16f09 100644 --- a/test/fixtures/pdf.py +++ b/test/fixtures/pdf.py @@ -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) diff --git a/test/fixtures/server.py b/test/fixtures/server.py index 64f4c2b..5c66599 100644 --- a/test/fixtures/server.py +++ b/test/fixtures/server.py @@ -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}