worker/machiner: ensure api errors set before worker starts. #6397
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.
It seems blindingly obvious once it is pointed out, the error returns from the mock API need to be set before the worker that uses that API is started.
There is a race between the worker starting the goroutine that calls the setup and handler methods of the machiner, and the test setting the API error return values. In almost all circumstances, the test wins the race, but sometimes the worker goroutine calls an API before the error returns are set. The default behaviour of the mock NextErr() method is to return nil if none have been set. This means that the final error that is set by the test is never returned.
Fixes http://pad.lv/1612744