fixed buffer issue: buffer can overflow when called lazily, for some reason. looking into it next.

This commit is contained in:
Matthias Bisping 2022-05-06 19:15:02 +02:00
parent dca3eaaa54
commit 5760a6f354
2 changed files with 12 additions and 7 deletions

View File

@ -1,8 +1,11 @@
import logging
from collections import deque
from typing import Any
from funcy import repeatedly
logger = logging.getLogger()
def bufferize(fn, buffer_size=3, persist_fn=lambda x: x):
def buffered_fn(item: Any, final=False):
@ -11,7 +14,8 @@ def bufferize(fn, buffer_size=3, persist_fn=lambda x: x):
return response_payload
def buffer_full(current_buffer_size):
assert current_buffer_size <= buffer_size
if current_buffer_size > buffer_size:
logger.warning(f"Overfull buffer: size: {current_buffer_size}; intended capacity: {buffer_size}")
return current_buffer_size == buffer_size
def n_items_to_pop(buffer, final):

View File

@ -1,12 +1,13 @@
import pytest
from pyinfra.server.receiver.receivers.rest import RestReceiver
from pyinfra.server.dispatcher.dispatchers.rest import RestDispatcher
from pyinfra.server.receiver.receivers.rest import RestReceiver
@pytest.mark.parametrize("batched", [True, False])
@pytest.mark.parametrize("item_type", ["string", "image", "pdf"])
def test_rest_rest_receiver(url, packages, server_process):
dispatcher = RestDispatcher(f"{url}/process")
# @pytest.mark.parametrize("item_type", ["string"])
# @pytest.mark.parametrize("batched", [False])
def test_rest_receiver(endpoint, packages, server_process):
dispatcher = RestDispatcher(endpoint)
receiver = RestReceiver()
assert all((isinstance(r, list) for r in receiver(dispatcher(packages))))
output = list(receiver(dispatcher(packages)))
assert all((isinstance(o, str) for o in output))