Retry the upload and first poll in test_target_summary - #3563
Merged
Merged
Conversation
The real VWS reports -1 for only a short time after an upload before publishing the image's rating while still processing. A single poll straight after the add can miss that window, which made the Real Vuforia parametrisation flaky. Fixes #3354 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
adamtheturtle
temporarily deployed
to
development
September 7, 2026 15:14 — with
GitHub Actions
Inactive
Rather than loosening the assertion, keep asserting -1 and retry the whole upload and first poll with a fresh target when the window is missed. A rating never returns to -1, so polling the same target again would not help. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
adamtheturtle
temporarily deployed
to
development
September 7, 2026 15:26 — with
GitHub Actions
Inactive
The vws client already seeks to the start of the stream before reading it and restores the position afterwards, so a retried upload reuses the stream without help from the test. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
adamtheturtle
temporarily deployed
to
development
September 7, 2026 15:28 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
adamtheturtle
temporarily deployed
to
vuforia
September 7, 2026 15:29 — with
GitHub Actions
Inactive
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #3354.
test_target_summaryassertedtracking_rating == -1from one summary report taken immediately after adding a target. The real VWS reports -1 for only a short time after an upload before publishing the image's rating while the target is still processing, so a single immediate poll can miss the window and see the settled rating instead. BecauseAssertionErroris not retried bypytest-retry, this made the Real Vuforia job red whenever it happened.The assertion stays strict. The upload and first poll now live in a helper which is retried with
tenacityonAssertionError, up to five attempts, uploading a fresh target each time. A rating never returns to -1 once it has left it, so polling the same target again would be no use. A comment on the helper explains the window and why the retry is there, and notes that this makes a miss unlikely rather than impossible.Ran
tests/mock_vws/test_target_summary.pyagainst the in-memory mock, the in-memory Docker application, and Real Vuforia locally: 20 passed. Also exercised the retry path with a stub client to confirm it re-uploads a fresh target and reraises after the attempts are exhausted.🤖 Generated with Claude Code