Fix flaky tests in PhoneNumberBuilderTest #200
Closed
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
PhoneNumberBuilderTest has the following tests that are flaky, detected using the NonDex tool:
org.apache.directory.scim.spec.resources.PhoneNumberBuilderTest#test_adding_params_for_GlobalPhoneNumberBuilder
org.apache.directory.scim.spec.resources.PhoneNumberBuilderTest#test_adding_params_for_LocalPhoneNumberBuilder
The tests fail due to non-deterministic ordering in the HashMap
params
of thePhoneNumber
class.Command to reproduce
mvn -pl scim-spec/scim-spec-schema edu.illinois:nondex-maven-plugin:2.1.1:nondex -Denforcer.skip=true -Dtest=org.apache.directory.scim.spec.resources.PhoneNumberBuilderTest
Assertions that fail
Log
Changes
The non-deterministic part of
phoneNumber.getValue()
is the params, so assert thatphoneNumber.getValue()
contains the params in such a way that the order of the params is not assumed.Another way to fix the tests is to change the datatype of
param
from HashMap to LinkedHashMap in thePhoneNumber
class as LinkedHashMap maintains the order of its elements - but this would require changing the main code.