Skip to content

Commit b34ad2b

Browse files
committed
fix flaky tests
1 parent 812f9fa commit b34ad2b

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

tests/unit/request_loaders/test_sitemap_request_loader.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,21 @@ def encode_base64(data: bytes) -> str:
4949
return base64.b64encode(data).decode('utf-8')
5050

5151

52+
async def wait_for_sitemap_loader_not_empty(sitemap_loader: SitemapRequestLoader) -> None:
53+
"""
54+
Wait for the sitemap loader to have at least one URL available for processing.
55+
"""
56+
57+
while await sitemap_loader.is_empty() and not await sitemap_loader.is_finished(): # noqa: ASYNC110
58+
await asyncio.sleep(0.1)
59+
60+
5261
async def test_sitemap_traversal(server_url: URL, http_client: HttpClient) -> None:
5362
sitemap_url = (server_url / 'sitemap.xml').with_query(base64=encode_base64(BASIC_SITEMAP.encode()))
5463
sitemap_loader = SitemapRequestLoader([str(sitemap_url)], http_client=http_client)
64+
5565
# Give time to load
56-
await asyncio.sleep(0.2)
66+
await asyncio.wait_for(wait_for_sitemap_loader_not_empty(sitemap_loader), timeout=2)
5767

5868
while not await sitemap_loader.is_finished():
5969
item = await sitemap_loader.fetch_next_request()
@@ -70,8 +80,9 @@ async def test_sitemap_traversal(server_url: URL, http_client: HttpClient) -> No
7080
async def test_is_empty_does_not_depend_on_fetch_next_request(server_url: URL, http_client: HttpClient) -> None:
7181
sitemap_url = (server_url / 'sitemap.xml').with_query(base64=encode_base64(BASIC_SITEMAP.encode()))
7282
sitemap_loader = SitemapRequestLoader([str(sitemap_url)], http_client=http_client)
83+
7384
# Give time to load
74-
await asyncio.sleep(0.2)
85+
await asyncio.wait_for(wait_for_sitemap_loader_not_empty(sitemap_loader), timeout=2)
7586

7687
items = []
7788

@@ -95,7 +106,7 @@ async def test_abort_sitemap_loading(server_url: URL, http_client: HttpClient) -
95106
sitemap_url = (server_url / 'sitemap.xml').with_query(base64=encode_base64(BASIC_SITEMAP.encode()))
96107
sitemap_loader = SitemapRequestLoader([str(sitemap_url)], max_buffer_size=2, http_client=http_client)
97108
# Give time to load
98-
await asyncio.sleep(0.2)
109+
await asyncio.wait_for(wait_for_sitemap_loader_not_empty(sitemap_loader), timeout=2)
99110

100111
item = await sitemap_loader.fetch_next_request()
101112
assert item is not None
@@ -135,7 +146,8 @@ async def test_data_persistence_for_sitemap_loading(
135146
sitemap_url = (server_url / 'sitemap.xml').with_query(base64=encode_base64(BASIC_SITEMAP.encode()))
136147
persist_key = 'data_persist_state'
137148
sitemap_loader = SitemapRequestLoader([str(sitemap_url)], http_client=http_client, persist_state_key=persist_key)
138-
await asyncio.sleep(0.2)
149+
# Give time to load
150+
await asyncio.wait_for(wait_for_sitemap_loader_not_empty(sitemap_loader), timeout=2)
139151

140152
await sitemap_loader.close()
141153

@@ -153,7 +165,8 @@ async def test_recovery_data_persistence_for_sitemap_loading(
153165
sitemap_url = (server_url / 'sitemap.xml').with_query(base64=encode_base64(BASIC_SITEMAP.encode()))
154166
persist_key = 'recovery_persist_state'
155167
sitemap_loader = SitemapRequestLoader([str(sitemap_url)], http_client=http_client, persist_state_key=persist_key)
156-
await asyncio.sleep(0.2)
168+
# Give time to load
169+
await asyncio.wait_for(wait_for_sitemap_loader_not_empty(sitemap_loader), timeout=2)
157170

158171
item = await sitemap_loader.fetch_next_request()
159172

@@ -168,7 +181,8 @@ async def test_recovery_data_persistence_for_sitemap_loading(
168181
next_item_in_kvs = state_data['urlQueue'][0]
169182

170183
sitemap_loader = SitemapRequestLoader([str(sitemap_url)], http_client=http_client, persist_state_key=persist_key)
171-
await asyncio.sleep(0.2)
184+
# Give time to load
185+
await asyncio.wait_for(wait_for_sitemap_loader_not_empty(sitemap_loader), timeout=2)
172186
item = await sitemap_loader.fetch_next_request()
173187

174188
assert item is not None

0 commit comments

Comments
 (0)