This repository has been archived by the owner on Oct 23, 2024. It is now read-only.
Fix flaky test by adding time comparision granularity #4460
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.
System Settings
Java: 11.0.20.1
Maven: 3.8.8
Test failure Reproduction
Command:
mvn -pl . test -Dtest=com.alibaba.json.bvt.issue_2700.Issue2784#test_for_issue
Root Cause
The issue arises because the serialization and de serialization for
Model
class defines milliseconds as the granularity here. However for the other object under comparision the exact system timejava.time.LocalDateTime
(upto nanoseconds precision) is considered. The test will only pass when the system time taken is an exact millisecond value(i.e microsecond and nanoseconds are zero). The pass scenario has been verified using the following patchFix
Compare the objects only upto millisecond granularity as this is the level of precision defined in the model.
Verification of fix
The test passes without any other changes