From 8bc61a9449a0a68dc54027f2b6150a3a94130e8f Mon Sep 17 00:00:00 2001 From: Julien Loizelet Date: Fri, 23 Feb 2024 11:28:41 +0900 Subject: [PATCH] fix(send): Do not offset even if no prune as we are taking only not sent signals --- src/cscapi/client.py | 6 +++--- tests/test_client.py | 21 ++++++++++++++++----- tests/test_sql_storage.py | 3 +++ 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/cscapi/client.py b/src/cscapi/client.py index db90e93..e9bccce 100644 --- a/src/cscapi/client.py +++ b/src/cscapi/client.py @@ -120,8 +120,6 @@ def send_signals( unsent_signals_by_machineid, prune_after_send ) total_sent += batch_sent - if not prune_after_send: - offset += batch_size self.logger.info(f"Total sent signals: {total_sent}") return total_sent @@ -177,7 +175,9 @@ def _send_signals_by_machine_id( machine_to_process.token, signals_by_machineid[machine_to_process.machine_id], ) - total_sent += len(sent_signal_ids) + sent_signal_ids_count = len(sent_signal_ids) + total_sent += sent_signal_ids_count + self.logger.info(f"sent {sent_signal_ids_count} signals") except httpx.HTTPStatusError as exc: self.logger.error( f"error while sending signals: {exc} for machine {machine_to_process.machine_id}" diff --git a/tests/test_client.py b/tests/test_client.py index 91e3d86..bee00fd 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -266,13 +266,24 @@ def test_signal_gets_deleted_after_send( method="POST", url=CAPI_BASE_DEV_URL + CAPI_METRICS_ENDPOINT, text="OK" ) - s1 = mock_signals()[0] - client.add_signals([s1]) - assert len(client.storage.get_signals(limit=1000)) == 1 - sent = client.send_signals(prune_after_send=True) - assert sent == 1 + for x in range(5): + client.add_signals(mock_signals()) + time.sleep(0.05) + assert len(client.storage.get_signals(limit=1000)) == 5 + sent = client.send_signals(prune_after_send=True, batch_size=1) + assert sent == 5 assert len(client.storage.get_signals(limit=1000)) == 0 + for x in range(5): + client.add_signals(mock_signals()) + time.sleep(0.05) + assert len(client.storage.get_signals(limit=1000)) == 5 + sent = client.send_signals(prune_after_send=False, batch_size=1) + assert sent == 5 + assert len(client.storage.get_signals(limit=1000)) == 5 + assert len(client.storage.get_signals(limit=1000, sent=True)) == 5 + assert len(client.storage.get_signals(limit=1000, sent=False)) == 0 + def test_signals_from_already_registered_machine( self, httpx_mock: HTTPXMock, client: CAPIClient ): diff --git a/tests/test_sql_storage.py b/tests/test_sql_storage.py index 73c9000..47ff4a9 100644 --- a/tests/test_sql_storage.py +++ b/tests/test_sql_storage.py @@ -125,6 +125,7 @@ def test_get_signals_with_no_machine(self): assert len(self.storage.get_signals(limit=1000)) == 0 for x in range(10): self.client.add_signals(mock_signals()) + time.sleep(0.05) assert len(self.storage.get_signals(limit=1000)) == 10 assert len(self.storage.get_signals(limit=5)) == 5 assert len(self.storage.get_signals(limit=5, offset=8)) == 2 @@ -151,6 +152,7 @@ def test_get_signals_with_machine(self): assert len(self.storage.get_signals(limit=1000)) == 0 for x in range(10): self.client.add_signals(mock_signals()) + time.sleep(0.05) assert len(self.storage.get_signals(limit=1000)) == 10 assert len(self.storage.get_signals(limit=5)) == 5 assert len(self.storage.get_signals(limit=5, offset=8)) == 2 @@ -178,6 +180,7 @@ def test_get_signals_with_failing_machine(self): assert len(self.storage.get_signals(limit=1000)) == 0 for x in range(10): self.client.add_signals(mock_signals()) + time.sleep(0.05) assert len(self.storage.get_signals(limit=1000)) == 10 assert len(self.storage.get_signals(limit=5)) == 5 assert len(self.storage.get_signals(limit=5, offset=8)) == 2