Skip to content

Commit

Permalink
increase coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrea Spacca committed Nov 24, 2023
1 parent 81a86c4 commit 412543f
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 50 deletions.
68 changes: 20 additions & 48 deletions share/multiline.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ def __init__(self, max_bytes: int, max_lines: int, skip_newline: bool):
self._processed_lines: int = 0
self._current_length: int = 0

def collect_and_reset(self) -> tuple[bytes, int]:
def collect_and_reset(self) -> tuple[bytes, int, bytes]:
data = self._buffer
current_length = self._current_length

Expand All @@ -85,7 +85,14 @@ def collect_and_reset(self) -> tuple[bytes, int]:

self.previous = b""

return data, current_length
if data.find(b"\r\n") > -1:
newline = b"\r\n"
elif data.find(b"\n") > -1:
newline = b"\n"
else:
newline = b""

return data, current_length, newline

def is_empty(self) -> bool:
return self._buffer_lines == 0
Expand Down Expand Up @@ -179,20 +186,10 @@ def collect(self) -> Iterator[tuple[bytes, int, bytes]]:
or (datetime.datetime.utcnow() - last_iteration_datetime) > timedelta_circuit_breaker
):
self._current_count = 0
content, current_length = self._buffer.collect_and_reset()
yield content, current_length, newline
yield self._buffer.collect_and_reset()

if not self._buffer.is_empty():
content, current_length = self._buffer.collect_and_reset()

if content.find(b"\r\n") > -1:
newline = b"\r\n"
elif content.find(b"\n") > -1:
newline = b"\n"
else:
newline = b""

yield content, current_length, newline
yield self._buffer.collect_and_reset()


WhileMatcherCallable = Callable[[bytes], bool]
Expand Down Expand Up @@ -266,36 +263,24 @@ def collect(self) -> Iterator[tuple[bytes, int, bytes]]:
if not self._matcher(data):
if self._buffer.is_empty():
self._buffer.grow(data, newline)
content, current_length = self._buffer.collect_and_reset()
yield content, current_length, newline
yield self._buffer.collect_and_reset()
else:
content, current_length = self._buffer.collect_and_reset()
content, current_length, _ = self._buffer.collect_and_reset()
self._buffer.grow(data, newline)

yield content, current_length, newline

content, current_length = self._buffer.collect_and_reset()
content, current_length, _ = self._buffer.collect_and_reset()

yield content, current_length, newline
else:
self._buffer.grow(data, newline)
# no pre collect buffer in while multiline, let's check the circuit breaker after at least one grow
if (datetime.datetime.utcnow() - last_iteration_datetime) > timedelta_circuit_breaker:
content, current_length = self._buffer.collect_and_reset()

yield content, current_length, newline
yield self._buffer.collect_and_reset()

if not self._buffer.is_empty():
content, current_length = self._buffer.collect_and_reset()

if content.find(b"\r\n") > -1:
newline = b"\r\n"
elif content.find(b"\n") > -1:
newline = b"\r\n"
else:
newline = b""

yield content, current_length, newline
yield self._buffer.collect_and_reset()


PatternMatcherCallable = Callable[[bytes, bytes], bool]
Expand Down Expand Up @@ -403,32 +388,19 @@ def collect(self) -> Iterator[tuple[bytes, int, bytes]]:
self._buffer.grow(data, newline)
self._pre_collect_buffer = True

content, current_length = self._buffer.collect_and_reset()
yield content, current_length, newline
yield self._buffer.collect_and_reset()
elif (
not self._buffer.is_empty() and self._check_matcher() and not self._matcher(self._buffer.previous, data)
):
content, current_length = self._buffer.collect_and_reset()
content, current_length, _ = self._buffer.collect_and_reset()

self._buffer.grow(data, newline)

yield content, current_length, newline
else:
if (datetime.datetime.utcnow() - last_iteration_datetime) > timedelta_circuit_breaker:
content, current_length = self._buffer.collect_and_reset()

yield content, current_length, newline

yield self._buffer.collect_and_reset()
self._buffer.grow(data, newline)

if not self._buffer.is_empty():
content, current_length = self._buffer.collect_and_reset()

if content.find(b"\r\n") > -1:
newline = b"\r\n"
elif content.find(b"\n") > -1:
newline = b"\n"
else:
newline = b""

yield content, current_length, newline
yield self._buffer.collect_and_reset()
4 changes: 2 additions & 2 deletions tests/share/test_multiline.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def test_collect_buffer_grow(
for i, line in enumerate(lines):
collect_buffer.grow(data=line, newline=newline)

content, content_length = collect_buffer.collect_and_reset()
content, content_length, _ = collect_buffer.collect_and_reset()

assert content == expected_content
assert content_length == expected_content_length
Expand Down Expand Up @@ -100,7 +100,7 @@ def test_collect_buffer_collect(
for i, line in enumerate(lines):
collect_buffer.grow(data=line, newline=newline)

content, content_length = collect_buffer.collect_and_reset()
content, content_length, _ = collect_buffer.collect_and_reset()

assert content == expected_content
assert content_length == expected_content_length
Expand Down

0 comments on commit 412543f

Please sign in to comment.