@@ -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
167154async 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
219194async 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
240200async 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