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,
|
dispatch_http_method_left_and_forward_data_right,
|
||||||
send_data_with_method_to_analyzer,
|
send_data_with_method_to_analyzer,
|
||||||
extract_payload_from_responses,
|
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)
|
return input_data_to_result_data(data)
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
import pytest
|
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("batched", [True, False])
|
||||||
@pytest.mark.parametrize("item_type", ["pdf", "string", "image"])
|
@pytest.mark.parametrize("item_type", ["pdf", "string", "image"])
|
||||||
def test_sending_partial_request(url, input_data_items, metadata, operation, target_data_items, server_process):
|
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))
|
output = lmap(unpack, post_partial(f"{url}/process", input_data_items, metadata))
|
||||||
assert output == target_data_items
|
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
|
return expected
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(params=[0, 1, 2, 5])
|
@pytest.fixture(params=[0, 1, 2, 5, 10])
|
||||||
def n_items(request):
|
def n_items(request):
|
||||||
return request.param
|
return request.param
|
||||||
|
|
||||||
@ -50,10 +50,15 @@ def input_batch(n_items):
|
|||||||
return np.random.random_sample(size=(n_items, 3, 30, 30))
|
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):
|
def images(n_items):
|
||||||
return lmap(compose(image_to_bytes, array_to_image), input_batch(n_items))
|
return lmap(compose(image_to_bytes, array_to_image), input_batch(n_items))
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def metadata():
|
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():
|
def pdf():
|
||||||
pdf = fpdf.FPDF(unit="pt")
|
pdf = fpdf.FPDF(unit="pt")
|
||||||
pdf.add_page()
|
pdf.add_page()
|
||||||
|
pdf.add_page()
|
||||||
|
|
||||||
return pdf_stream(pdf)
|
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
|
return image_to_bytes(im.rotate(90)), metadata
|
||||||
|
|
||||||
def stream_pages(pdf: bytes, metadata):
|
def stream_pages(pdf: bytes, metadata):
|
||||||
for page in fitz.open(stream=pdf):
|
for i, page in enumerate(fitz.open(stream=pdf)):
|
||||||
yield page.get_pixmap().tobytes("png"), metadata
|
# yield page.get_pixmap().tobytes("png"), metadata
|
||||||
|
yield f"page_{i}".encode(), metadata
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return {"string": upper, "image": rotate, "pdf": stream_pages}[item_type]
|
return {"string": upper, "image": rotate, "pdf": stream_pages}[item_type]
|
||||||
@ -85,11 +86,6 @@ def batched(request):
|
|||||||
return request.param
|
return request.param
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(params=[1, 3, 7, 100])
|
|
||||||
def buffer_size(request):
|
|
||||||
return request.param
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def host_and_port(host, port):
|
def host_and_port(host, port):
|
||||||
return {"host": host, "port": port}
|
return {"host": host, "port": port}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user