This repository has been archived by the owner on Aug 2, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Support Stability Testing for Tests + CI Bug Fixes #10463
Merged
Merged
Conversation
This file contains 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
This was referenced Jun 28, 2021
scottarnette
approved these changes
Jun 28, 2021
This was referenced Jun 28, 2021
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Change Description
While working on service item AUTO-1004 to provide a low-effort stability testing solution to Blockchain for their unit and integration tests, I found a way to satisfy AUTO-495 so that the pipeline upload script natively supports stability testing within the organizational Buildkite job limit.
This pull request introduces the following:
fi
statementnull
SKIP variable bugAdditionally, stability testing of EOSIO tests is supported natively by the Buildkite pipelines, without having to edit the pipeline upload script or cherry-pick code from pull request 9675.
Instructions
Stability testing of EOSIO unit and integration tests is done in the eosio-test-stability pipeline. It will take thousands of runs of any given test to identify it as "stable" or "unstable". Runs should be split evenly across "pinned" (fixed dependency version) and "unpinned" (default dependency version) builds because, sometimes, test instability is only expressed in one of these environments. Finally, stability testing should be performed on the Linux fleet first because this fleet is effectively infinite. Once stability is demonstrated on Linux, testing can be performed on the finite macOS Anka fleet.
The eosio-test-stability pipeline uses the same pipeline upload script as eosio, eosio-build-unpinned, and eosio-lrt, so all variables from the pipeline documentation apply. However, there are five primary environment variables relevant to stability testing:
The
TEST
variable is parsed as pearl-compatible regular expression where the expression inTEST
is preceded by^
and followed by$
. To specify one test, setTEST
equal to the test name (e.g.TEST='read_only_query'
). Specify two tests asTEST='(nodeos_short_fork_take_over_lr_test|read_only_query)'
. Or, perhaps, you want all of therestart_scenarios
tests. Then, you could defineTEST='restart-scenario-test-.*'
and Buildkite will generateROUND_SIZE
steps each round for each operating system for all three restart scenarios tests.The number of total test runs will be:
We recommend stability testing one test per build with two builds per test, on Linux at first. Kick off one pinned build on Linux...
...and one unpinned build on Linux:
Once the Linux runs have proven stable, and if instability was observed on macOS, kick off two equivalent builds on macOS instead of Linux. One pinned build on macOS...
...and one unpinned build on macOS:
If these runs are against
eos:develop
anddevelop
has five supported operating systems, this pattern would consist of 2,100 runs per test across all four builds. If the runs are againsteos:release/2.1.x
which, at the time of this writing, supports eight operating systems, this pattern would consist of 3,360 runs per test across all four builds. This gives you strong confidence that any test instability occurs less than 1% of the time.See Also
eos:develop
)eos:release/2.1.x
)eos:release/2.0.x
)eos:develop
)eos:develop
)eos:release/2.1.x
)eos:release/2.0.x
)50cd1ca
-- Modernize eosio-test-stability pipeline326177f
-- Reduce number of default rounds so we don't exceed the org-wide Buildkite job limit8e33ef4
-- Skip macOS by defaultChange Type
Select ONE:
Support stability testing of EOSIO tests.
Testing Changes
Select ANY that apply:
Support stability testing of EOSIO tests, plus other bug fixes to the pipeline upload script.
Consensus Changes
None.
API Changes
None.
Documentation Additions
None.