Fixed non-idempotent test ConfigRefreshTests.verifyGetApplications
#4279
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.
Motivation:
The test
org.springframework.cloud.netflix.eureka.config.ConfigRefreshTests.verifyGetApplications
is not idempotent and fails in the second run in the same environment, because it pollutes a state reused by itself. Specifically, it has a mockedEurekaClient
instance shared across different test runs. The testverifyGetApplications()
checks whethergetApplications()
is called the correct number of times (3) when a refresh event is fired, and the check fails in the second run as re-execution ofpublisher.publishEvent()
makes more calls togetApplications()
on the sharedEurekaClient
instance. A fix is recommended since unit tests should be idempotent (deterministically passing in repeated runs).Stacktrace of failure in the second run:
Proposed Fix
Add a flag to only invoke
publisher.publishEvent()
in the first run.