Fix(user): Resolve non-deterministic error message order in PutUsersRequestValidatorTest #413
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.
Pull Request
Description
This Pull Request resolves a non-deterministic ordering in shouldThrowPutUserBadRequestExceptionWhenParametersAreIncorrect inside user/validator/PutUsersRequestValidatorTest when comparing expected error message with the true exception thrown. This behavior was found using the NonDex tool.
Problem:
validateAddressJSONParameter method uses class.getDeclaredFields() to store a list of fields and then it is iterated to store any error messages encountered. However, based on the official Java documentation,
which means that the error message append order is non-deterministic which may be affected by different JVMs, operating systems, or runtime environments, causing the test to fail intermittently.
Solution:
The solution will not affect any features but ensure the stability of the testing framework.
Collections.sort()on the list of field names inPutUsersRequestValidatorbefore iteration to ensure validation errors from reflection are generated in a predictable, alphabetical order.REFERENCE:
Oracle Doc
Type of Change
Database Changes
Changelog
Testing
Checklist