Skip to content

Commit 01dd790

Browse files
NO-SNOW: wiremock async tests cleanup (#2715)
1 parent bd8e1a4 commit 01dd790

File tree

1 file changed

+34
-93
lines changed

1 file changed

+34
-93
lines changed

test/unit/aio/test_proxies_async.py

Lines changed: 34 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -85,24 +85,11 @@ async def test_basic_query_through_proxy_async(
8585
finally:
8686
await conn.close()
8787

88-
async with aiohttp.ClientSession() as session:
89-
async with session.get(
90-
f"{proxy_wm.http_host_with_port}/__admin/requests"
91-
) as resp:
92-
proxy_reqs = await resp.json()
93-
assert any(
94-
"/queries/v1/query-request" in r["request"]["url"]
95-
for r in proxy_reqs["requests"]
96-
)
88+
# Ensure proxy saw query
89+
assert proxy_wm.saw_urls_matching(["/queries/v1/query-request"])
9790

98-
async with session.get(
99-
f"{target_wm.http_host_with_port}/__admin/requests"
100-
) as resp:
101-
target_reqs = await resp.json()
102-
assert any(
103-
"/queries/v1/query-request" in r["request"]["url"]
104-
for r in target_reqs["requests"]
105-
)
91+
# Ensure backend saw query
92+
assert target_wm.saw_urls_matching(["/queries/v1/query-request"])
10693

10794

10895
@pytest.mark.skipolddriver
@@ -165,49 +152,37 @@ async def test_large_query_through_proxy_async(
165152

166153

167154
async def _execute_large_query(connect_kwargs, row_count: int):
155+
"""Execute a large query using connection kwargs.
156+
157+
Creates a connection, executes the large query, and validates it uses multiple batches.
158+
"""
168159
conn = await async_connect(**connect_kwargs)
169160
try:
170161
cur = conn.cursor()
171-
await cur.execute(
172-
f"select seq4() as n from table(generator(rowcount => {row_count}));"
173-
)
162+
await _execute_large_query_on_cursor(cur, row_count)
163+
# Verify that the query used multiple batches (remote storage)
174164
assert len(cur._result_set.batches) > 1
175-
_ = [r async for r in cur]
176165
finally:
177166
await conn.close()
178167

179168

180-
async def _collect_request_flags(proxy_wm, target_wm, storage_wm) -> RequestFlags:
181-
async with aiohttp.ClientSession() as session:
182-
async with session.get(
183-
f"{proxy_wm.http_host_with_port}/__admin/requests"
184-
) as resp:
185-
proxy_reqs = await resp.json()
186-
async with session.get(
187-
f"{target_wm.http_host_with_port}/__admin/requests"
188-
) as resp:
189-
target_reqs = await resp.json()
190-
async with session.get(
191-
f"{storage_wm.http_host_with_port}/__admin/requests"
192-
) as resp:
193-
storage_reqs = await resp.json()
194-
195-
proxy_saw_db = any(
196-
"/queries/v1/query-request" in r["request"]["url"]
197-
for r in proxy_reqs["requests"]
169+
async def _execute_large_query_on_cursor(cursor, row_count: int = 100000):
170+
await cursor.execute(
171+
f"SELECT seq4() as n FROM TABLE(GENERATOR(ROWCOUNT => {row_count}))"
198172
)
199-
target_saw_db = any(
200-
"/queries/v1/query-request" in r["request"]["url"]
201-
for r in target_reqs["requests"]
202-
)
203-
proxy_saw_storage = any(
204-
"/amazonaws/test/s3testaccount/stage/results/" in r["request"]["url"]
205-
for r in proxy_reqs["requests"]
173+
return [r async for r in cursor]
174+
175+
176+
async def _collect_request_flags(proxy_wm, target_wm, storage_wm) -> RequestFlags:
177+
proxy_saw_db = proxy_wm.saw_urls_matching(["/queries/v1/query-request"])
178+
target_saw_db = target_wm.saw_urls_matching(["/queries/v1/query-request"])
179+
proxy_saw_storage = proxy_wm.saw_urls_matching(
180+
["/amazonaws/test/s3testaccount/stage/results/"]
206181
)
207-
storage_saw_storage = any(
208-
"/amazonaws/test/s3testaccount/stage/results/" in r["request"]["url"]
209-
for r in storage_reqs["requests"]
182+
storage_saw_storage = storage_wm.saw_urls_matching(
183+
["/amazonaws/test/s3testaccount/stage/results/"]
210184
)
185+
211186
return RequestFlags(
212187
proxy_saw_db=proxy_saw_db,
213188
target_saw_db=target_saw_db,
@@ -217,56 +192,22 @@ async def _collect_request_flags(proxy_wm, target_wm, storage_wm) -> RequestFlag
217192

218193

219194
async def _collect_db_request_flags_only(proxy_wm, target_wm) -> DbRequestFlags:
220-
async with aiohttp.ClientSession() as session:
221-
async with session.get(
222-
f"{proxy_wm.http_host_with_port}/__admin/requests"
223-
) as resp:
224-
proxy_reqs = await resp.json()
225-
async with session.get(
226-
f"{target_wm.http_host_with_port}/__admin/requests"
227-
) as resp:
228-
target_reqs = await resp.json()
229-
proxy_saw_db = any(
230-
"/queries/v1/query-request" in r["request"]["url"]
231-
for r in proxy_reqs["requests"]
232-
)
233-
target_saw_db = any(
234-
"/queries/v1/query-request" in r["request"]["url"]
235-
for r in target_reqs["requests"]
236-
)
195+
proxy_saw_db = proxy_wm.saw_urls_matching(["/queries/v1/query-request"])
196+
target_saw_db = target_wm.saw_urls_matching(["/queries/v1/query-request"])
237197
return DbRequestFlags(proxy_saw_db=proxy_saw_db, target_saw_db=target_saw_db)
238198

239199

240200
async def _collect_proxy_precedence_flags(
241201
proxy1_wm, proxy2_wm, target_wm
242202
) -> ProxyPrecedenceFlags:
243-
"""Async version of proxy precedence flags collection using aiohttp."""
244-
async with aiohttp.ClientSession() as session:
245-
async with session.get(
246-
f"{proxy1_wm.http_host_with_port}/__admin/requests"
247-
) as resp:
248-
proxy1_reqs = await resp.json()
249-
async with session.get(
250-
f"{proxy2_wm.http_host_with_port}/__admin/requests"
251-
) as resp:
252-
proxy2_reqs = await resp.json()
253-
async with session.get(
254-
f"{target_wm.http_host_with_port}/__admin/requests"
255-
) as resp:
256-
target_reqs = await resp.json()
257-
258-
proxy1_saw_request = any(
259-
"/queries/v1/query-request" in r["request"]["url"]
260-
for r in proxy1_reqs["requests"]
261-
)
262-
proxy2_saw_request = any(
263-
"/queries/v1/query-request" in r["request"]["url"]
264-
for r in proxy2_reqs["requests"]
265-
)
266-
backend_saw_request = any(
267-
"/queries/v1/query-request" in r["request"]["url"]
268-
for r in target_reqs["requests"]
269-
)
203+
"""Collect flags for proxy precedence tests.
204+
205+
Checks which proxy (or target) saw query requests, useful for verifying
206+
that connection parameters take precedence over environment variables.
207+
"""
208+
proxy1_saw_request = proxy1_wm.saw_urls_matching(["/queries/v1/query-request"])
209+
proxy2_saw_request = proxy2_wm.saw_urls_matching(["/queries/v1/query-request"])
210+
backend_saw_request = target_wm.saw_urls_matching(["/queries/v1/query-request"])
270211

271212
return ProxyPrecedenceFlags(
272213
proxy1_saw_request=proxy1_saw_request,

0 commit comments

Comments
 (0)