Skip to content

Commit b017e90

Browse files
whummerclaude
andcommitted
fix insights query test to retry entire query cycle
CloudWatch Logs Insights can complete a query with 0 results if log events weren't indexed when the query started. Retry the entire query cycle (start + poll) if it completes with no results. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 9fe46bc commit b017e90

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

aws-proxy/tests/proxy/test_cloudwatch.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -579,29 +579,35 @@ def test_logs_readonly_insights_query(start_aws_proxy, cleanups):
579579
)
580580

581581
# start_query and get_query_results through local client (proxied)
582-
# should work in read-only mode - use retry to wait for query completion
582+
# Retry the entire query cycle if it completes with no results (events not indexed yet)
583583
def _run_insights_query():
584584
start_time = int((time.time() - 300) * 1000) # 5 minutes ago
585585
end_time = int((time.time() + 60) * 1000) # 1 minute from now
586586

587+
# start_query - should work in read-only mode
587588
query_response = logs_client.start_query(
588589
logGroupName=log_group_name,
589590
startTime=start_time,
590591
endTime=end_time,
591592
queryString="fields @timestamp, @message | limit 10",
592593
)
593594
query_id = query_response["queryId"]
594-
assert query_id is not None
595595

596-
# get_query_results - poll until complete
597-
results = logs_client.get_query_results(queryId=query_id)
598-
if results["status"] not in ["Complete", "Failed", "Cancelled"]:
599-
raise AssertionError(f"Query not complete yet: {results['status']}")
600-
if results["status"] != "Complete" or len(results["results"]) < 1:
596+
# poll get_query_results until complete
597+
for _ in range(30):
598+
results = logs_client.get_query_results(queryId=query_id)
599+
if results["status"] in ["Complete", "Failed", "Cancelled"]:
600+
break
601+
time.sleep(1)
602+
603+
if results["status"] != "Complete":
604+
raise AssertionError(f"Query failed with status: {results['status']}")
605+
if len(results["results"]) < 1:
606+
# Query completed but no results - events may not be indexed yet, retry
601607
raise AssertionError("Query completed but no results found yet")
602608
return results
603609

604-
results = retry(_run_insights_query, retries=30, sleep=2)
610+
results = retry(_run_insights_query, retries=10, sleep=5)
605611
assert results["status"] == "Complete"
606612
assert len(results["results"]) >= 1
607613

0 commit comments

Comments
 (0)