fix: stabilize flaky ParamFlowDefaultCheckerTest by using mocked time#3626
Open
EvanYao826 wants to merge 1 commit into
Open
fix: stabilize flaky ParamFlowDefaultCheckerTest by using mocked time#3626EvanYao826 wants to merge 1 commit into
EvanYao826 wants to merge 1 commit into
Conversation
The test testParamFlowDefaultCheckSingleValueCheckQpsMultipleThreads was flaky because it used real time (TimeUnit.sleep and wall-clock loops) for concurrent assertions. This caused race conditions when the test ran in isolation vs. after other tests. Fixed by: - Using MockedStatic<TimeUtil> to control time deterministically - Replacing the real-time busy loop with a clean second round of concurrent requests after advancing the mock clock past the duration window Fixes alibaba#2426
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
The test
testParamFlowDefaultCheckSingleValueCheckQpsMultipleThreadswas flaky because it used real time (TimeUnit.sleepand wall-clock-based loops) for concurrent assertions. This caused race conditions when the test ran in isolation vs. after other tests.Root Cause
The test's second phase used
TimeUtil.currentTimeMillis()in a busy loop with real thread sleep, making the assertion result depend on:Fix
MockedStatic<TimeUtil>(consistent with all other tests in this class)Fixes #2426