From de63f495ca5467e18b8a16c480999fc716c597a0 Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 10:26:41 -0700 Subject: [PATCH 01/11] Add tests for cluster request_update() --- tests/test_cluster.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 3c10f316..7619b07c 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -1,5 +1,6 @@ from aiokafka.cluster import ClusterMetadata from aiokafka.protocol.metadata import MetadataResponse +from tests._testutil import run_until_complete def test_empty_broker_list(): @@ -19,3 +20,8 @@ def test_empty_broker_list(): ) ) assert len(cluster.brokers()) == 2 + +@run_until_complete +async def test_request_update(self): + cluster = ClusterMetadata() + cluster.request_update() From 009cdb424d61210c861d349bf566527ffd3f0a2b Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 10:33:00 -0700 Subject: [PATCH 02/11] Removed @run_until_complete. --- tests/test_cluster.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 7619b07c..41dc892f 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -21,7 +21,7 @@ def test_empty_broker_list(): ) assert len(cluster.brokers()) == 2 -@run_until_complete async def test_request_update(self): cluster = ClusterMetadata() - cluster.request_update() + updated_cluster = await cluster.request_update() + assert updated_cluster == cluster From 2bba0b467fa89f86f94091e14c0b51e52ccaa15e Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 10:41:18 -0700 Subject: [PATCH 03/11] Wrap async test in class --- tests/test_cluster.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 41dc892f..b19e15df 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -1,3 +1,4 @@ +import unittest from aiokafka.cluster import ClusterMetadata from aiokafka.protocol.metadata import MetadataResponse from tests._testutil import run_until_complete @@ -21,7 +22,9 @@ def test_empty_broker_list(): ) assert len(cluster.brokers()) == 2 -async def test_request_update(self): - cluster = ClusterMetadata() - updated_cluster = await cluster.request_update() - assert updated_cluster == cluster +class TestClusterMetadata(unittest.TestCase): + @run_until_complete + async def test_request_update(self): + cluster = ClusterMetadata() + updated_cluster = await cluster.request_update() + assert updated_cluster == cluster From 17e5de13647652498f764801567f7a999d873c35 Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 10:47:46 -0700 Subject: [PATCH 04/11] See if this makes loop available. --- tests/test_cluster.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index b19e15df..06ec435b 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -1,4 +1,6 @@ import unittest + +import pytest from aiokafka.cluster import ClusterMetadata from aiokafka.protocol.metadata import MetadataResponse from tests._testutil import run_until_complete @@ -22,6 +24,7 @@ def test_empty_broker_list(): ) assert len(cluster.brokers()) == 2 +@pytest.mark.usefixtures("setup_test_class_serverless") class TestClusterMetadata(unittest.TestCase): @run_until_complete async def test_request_update(self): From da576d11d8fb14e4b0b0c77e75700b26cbc938b6 Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 10:56:40 -0700 Subject: [PATCH 05/11] Just block on Python future. --- tests/test_cluster.py | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 06ec435b..ba90688f 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -1,9 +1,5 @@ -import unittest - -import pytest from aiokafka.cluster import ClusterMetadata from aiokafka.protocol.metadata import MetadataResponse -from tests._testutil import run_until_complete def test_empty_broker_list(): @@ -24,10 +20,7 @@ def test_empty_broker_list(): ) assert len(cluster.brokers()) == 2 -@pytest.mark.usefixtures("setup_test_class_serverless") -class TestClusterMetadata(unittest.TestCase): - @run_until_complete - async def test_request_update(self): - cluster = ClusterMetadata() - updated_cluster = await cluster.request_update() - assert updated_cluster == cluster +def test_request_update(self): + cluster = ClusterMetadata() + updated_cluster = cluster.request_update().result() + assert updated_cluster == cluster From e19aa7122b40c25bb42120f7ccde3c5fb8f3113f Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 10:59:43 -0700 Subject: [PATCH 06/11] =?UTF-8?q?=F0=9F=A4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_cluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index ba90688f..2c4ec12d 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -20,7 +20,7 @@ def test_empty_broker_list(): ) assert len(cluster.brokers()) == 2 -def test_request_update(self): +def test_request_update(): cluster = ClusterMetadata() updated_cluster = cluster.request_update().result() assert updated_cluster == cluster From d1d24502e2aa13f713bc66fe710d9b79d22d8a78 Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 11:16:03 -0700 Subject: [PATCH 07/11] Explicitly update. --- tests/test_cluster.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 2c4ec12d..9fd83616 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -22,5 +22,11 @@ def test_empty_broker_list(): def test_request_update(): cluster = ClusterMetadata() - updated_cluster = cluster.request_update().result() - assert updated_cluster == cluster + updated_cluster = cluster.request_update() + cluster.update_metadata( + MetadataResponse[0]( + [], # empty brokers + [(17, "foo", []), (17, "bar", [])], # topics w/ error + ) + ) + assert updated_cluster.result() == cluster From 0109130b4e8fbe35ab7ca3cf8b633c0438260b07 Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 11:23:56 -0700 Subject: [PATCH 08/11] Improved request_update tests. --- tests/test_cluster.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 9fd83616..abe4c6dc 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -1,3 +1,4 @@ +from aiokafka import errors from aiokafka.cluster import ClusterMetadata from aiokafka.protocol.metadata import MetadataResponse @@ -20,13 +21,20 @@ def test_empty_broker_list(): ) assert len(cluster.brokers()) == 2 -def test_request_update(): +def test_request_update_expecting_success(): cluster = ClusterMetadata() updated_cluster = cluster.request_update() cluster.update_metadata( - MetadataResponse[0]( + MetadataResponse[0]([(0, "foo", 12), (1, "bar", 34)], []), + ) + assert updated_cluster.result() == cluster + +def test_request_update_expecting_failure(): + cluster = ClusterMetadata() + updated_cluster = cluster.request_update() + test_metadata = MetadataResponse[0]( [], # empty brokers [(17, "foo", []), (17, "bar", [])], # topics w/ error ) - ) - assert updated_cluster.result() == cluster + cluster.update_metadata(test_metadata) + assert updated_cluster.exception() == errors.MetadataEmptyBrokerList(test_metadata) From c95a66239ab6515d0035d7b9d8240406e302f021 Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 11:28:16 -0700 Subject: [PATCH 09/11] Fixed ClusterMetadata future usage. --- aiokafka/cluster.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aiokafka/cluster.py b/aiokafka/cluster.py index 23e688bb..ccee5636 100644 --- a/aiokafka/cluster.py +++ b/aiokafka/cluster.py @@ -209,7 +209,7 @@ def failed_update(self, exception): f = self._future self._future = None if f: - f.failure(exception) + f.set_exception(exception) self._last_refresh_ms = time.time() * 1000 def update_metadata(self, metadata): @@ -307,7 +307,7 @@ def update_metadata(self, metadata): self._last_successful_refresh_ms = now if f: - f.success(self) + f.set_result(self) log.debug("Updated cluster metadata to %s", self) for listener in self._listeners: From 710890a81f5a9220e2969e8e598b14b13d06dd77 Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 11:36:08 -0700 Subject: [PATCH 10/11] Simplified test. --- tests/test_cluster.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index abe4c6dc..14212ffe 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -1,4 +1,3 @@ -from aiokafka import errors from aiokafka.cluster import ClusterMetadata from aiokafka.protocol.metadata import MetadataResponse @@ -37,4 +36,4 @@ def test_request_update_expecting_failure(): [(17, "foo", []), (17, "bar", [])], # topics w/ error ) cluster.update_metadata(test_metadata) - assert updated_cluster.exception() == errors.MetadataEmptyBrokerList(test_metadata) + assert updated_cluster.exception() is not None From 3fe7787c7c47ddf8ddbdd562f14eb522e8572b2b Mon Sep 17 00:00:00 2001 From: Jack Leow Date: Sat, 12 Oct 2024 11:40:10 -0700 Subject: [PATCH 11/11] black fml. --- tests/test_cluster.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/test_cluster.py b/tests/test_cluster.py index 14212ffe..8af2583b 100644 --- a/tests/test_cluster.py +++ b/tests/test_cluster.py @@ -20,6 +20,7 @@ def test_empty_broker_list(): ) assert len(cluster.brokers()) == 2 + def test_request_update_expecting_success(): cluster = ClusterMetadata() updated_cluster = cluster.request_update() @@ -28,12 +29,13 @@ def test_request_update_expecting_success(): ) assert updated_cluster.result() == cluster + def test_request_update_expecting_failure(): cluster = ClusterMetadata() updated_cluster = cluster.request_update() test_metadata = MetadataResponse[0]( - [], # empty brokers - [(17, "foo", []), (17, "bar", [])], # topics w/ error - ) + [], # empty brokers + [(17, "foo", []), (17, "bar", [])], # topics w/ error + ) cluster.update_metadata(test_metadata) assert updated_cluster.exception() is not None