-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test(command-output): stabilize server jobs test #3194
Merged
nitrocode
merged 2 commits into
runatlantis:main
from
finnag:fix-unstable-server-jobs-test
Mar 7, 2023
Merged
test(command-output): stabilize server jobs test #3194
nitrocode
merged 2 commits into
runatlantis:main
from
finnag:fix-unstable-server-jobs-test
Mar 7, 2023
Conversation
This file contains 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
Use buffered channels in TestProjectCommandOutputHandler The output handler registered with ProjectCommandOutputHandler.Register() needs the channel that is given to not block writes. If the channel blocks writes, the channel is removed from the list of active receivers on that JobID. The tests are set up with unbuffered channels, and there is a race condition where the channel reader does not hit `for msg := range ch` before the message that is sent is handled by AsyncProjectCommandOutputHandler.writeLogLine By making the channel buffered it does not matter that the reader isn't reading yet.
There is a rare race condition where messages come in while the asserts run in the "clean up all jobs when PR is closed" test. Added wg.Wait() to make sure all messages are processed before running the final asserts.
nitrocode
changed the title
Fix unstable server jobs test
test(command-output): stabilize server jobs test
Mar 7, 2023
nitrocode
approved these changes
Mar 7, 2023
nitrocode
pushed a commit
that referenced
this pull request
May 5, 2023
* Bugfix: TestProjectCommandOutputHandler is unstable Use buffered channels in TestProjectCommandOutputHandler The output handler registered with ProjectCommandOutputHandler.Register() needs the channel that is given to not block writes. If the channel blocks writes, the channel is removed from the list of active receivers on that JobID. The tests are set up with unbuffered channels, and there is a race condition where the channel reader does not hit `for msg := range ch` before the message that is sent is handled by AsyncProjectCommandOutputHandler.writeLogLine By making the channel buffered it does not matter that the reader isn't reading yet. * Add missing wg.Wait() in TestProjectCommandOutputHandler There is a rare race condition where messages come in while the asserts run in the "clean up all jobs when PR is closed" test. Added wg.Wait() to make sure all messages are processed before running the final asserts. --------- Co-authored-by: Finn Arne Gangstad <[email protected]>
ijames-gc
pushed a commit
to gocardless/atlantis
that referenced
this pull request
Feb 13, 2024
* Bugfix: TestProjectCommandOutputHandler is unstable Use buffered channels in TestProjectCommandOutputHandler The output handler registered with ProjectCommandOutputHandler.Register() needs the channel that is given to not block writes. If the channel blocks writes, the channel is removed from the list of active receivers on that JobID. The tests are set up with unbuffered channels, and there is a race condition where the channel reader does not hit `for msg := range ch` before the message that is sent is handled by AsyncProjectCommandOutputHandler.writeLogLine By making the channel buffered it does not matter that the reader isn't reading yet. * Add missing wg.Wait() in TestProjectCommandOutputHandler There is a rare race condition where messages come in while the asserts run in the "clean up all jobs when PR is closed" test. Added wg.Wait() to make sure all messages are processed before running the final asserts. --------- Co-authored-by: Finn Arne Gangstad <[email protected]>
ijames-gc
pushed a commit
to gocardless/atlantis
that referenced
this pull request
Feb 13, 2024
* Bugfix: TestProjectCommandOutputHandler is unstable Use buffered channels in TestProjectCommandOutputHandler The output handler registered with ProjectCommandOutputHandler.Register() needs the channel that is given to not block writes. If the channel blocks writes, the channel is removed from the list of active receivers on that JobID. The tests are set up with unbuffered channels, and there is a race condition where the channel reader does not hit `for msg := range ch` before the message that is sent is handled by AsyncProjectCommandOutputHandler.writeLogLine By making the channel buffered it does not matter that the reader isn't reading yet. * Add missing wg.Wait() in TestProjectCommandOutputHandler There is a rare race condition where messages come in while the asserts run in the "clean up all jobs when PR is closed" test. Added wg.Wait() to make sure all messages are processed before running the final asserts. --------- Co-authored-by: Finn Arne Gangstad <[email protected]>
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.
what
Fix two race conditions in TestProjectCommandOutputHandler
why
The test github.com/runatlantis/atlantis/server/jobs , in TestProjectCommandOutputHandler, sometimes times out.
tests
go test -timeout 14s -count 500 github.com/runatlantis/atlantis/server/jobs
50 times. no timeouts.references