Nonblocking rewards sink for tests #990
Merged
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.
Provide a testing FileSink that acks messages as they're written so we don't have to deal with race conditions in tests.
Previously
Tests required that you know how many messages you were expecting, otherwise the test would hang indefinitely either waiting for a written message to be acknowledged, or waiting for a message that would never be written.
Now
The test
FileSinkReceiverconsumes all messages that are written as they come.Functions in the rewarder now own a
FileSinkClient<T>Cloning a
FileSinkClient<T>is relatively cheap as it's just a channel and a metrics string.When the rewarding function under test is done, it will drop the
Sender, and we can know that all messages that will be written have been written.We can then make assertions against all the messages written during the test. Whether they were expected or not.