fix(tests): flaky test in BucketFallbackMapper tests #104
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 #103
The original implementation launched an HTTP server for the test concurrently in a different goroutine. This poses a race condition between starting the server and running the tests. Sometimes, the test was run before the server was ready and the test failed.
Finding the cause has been tricky because, in case of an error in the HEAD request,
BucketFallbackMapper
swallows the original error and returnsErrKeyNotFound
, masking the real cause of the issue. This error handling has been improved to avoid this.To fix the test, the regular HTTP server being used has been replaced with an
httptest.Server
. It simplifies the test code as handling its shutdown is easier, but the reason it fixes the issue is thathttptest.Server
prepares the network listener synchronously, and then starts the server concurrently. That means that, even in the case the test is run before the server is ready to server requests, the listener will be able to buffer them and prevent the test from failing.