test: fix and optimize flaky cron tests. Partial fix for #10807 #14024
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.
Fixes #10807
Motivation
The cron tests have been some of the slowest and flakiest for awhile now, mostly due to using
time.Sleep()
to wait a fixed amount of time. TheTestCronSuite
function tries to workaround the flakiness by running the suite at the 30 second mark, but this is only effective for the first test in the suite.Modifications
This changes nearly all the cron tests to remove the
time.Sleep()
calls and instead use the API to poll for changes. The two tests I couldn't fix to stop usingtime.Sleep()
areTestBasicForbid
andTestCronCountersForbid
, since I don't know of any way of verifying theconcurrencyPolicy
is respected without sleeping.Also, most of the cron fixture data wasn't specifying workflow metadata properly using workflowMetadata, which meant they weren't being cleaned up automatically, so I fixed that too.
Verification
Ran
make test-cron
locally