Description
Is your feature request related to a problem? Please describe.
We do a lot of manual testing. Need visible and repeatable automation for end-to-end upgrade paths described in https://opensearch.org/faq/#c3, including rolling and restart upgrades. Plugins should be able to contribute setup steps in an older version (data) and integration tests that run in mixed and upgraded cluster states.
Proposal
We would like to see CI/CD that shows that a specific bundle build of OpenSearch has been tested on a list of upgrade paths.
Here is our proposal for BWC/Upgrade testing for OpenSearch project.
All BWC tests include:
- Rolling upgrade
- Mixed Cluster search
- Snapshot upgrade
- Restart upgrade
All components within opensearch project will define bwctests:
- Run BWC tests in each component.
- Run BWC tests in each component in PR push.
- Run BWC tests in release CI against individual component.
- Run BWC tests in release CI against the bundle.
Tasks
P0
- Adding bwc test framework support for plugins: Enable BWC tests for plugins OpenSearch#1002
- Adding BWC test framework automation and documentation: Add support for automated backwards-compatibility tests for plugins opensearch-plugins#53
- Adding support to run BWC tests in plugin CI: Run plugin BWC tests in CI #222
Release CI BWC test workflow: [Meta] #232
- Adding BWC test framework in release/nightly CI: Add support for running bwctest.sh #275
- Adding Jenkins job support: Add Jenkins job for hooking up BWC tests #492
- Add support for Dependency Installer: Add support for dependency installer for BWC Tests #535
- Add support to onboard to test manifest: Add support for BWC tests to onboard to Test Manifest #572
- Add support for TestRecorder/TestPublisher: Integrate BWC test result with test publisher framework(207) #277
- Add support BWC test onboarding for developers: Developer documentation for BWC Tests #223
P1
- BWC Tests against the bundle (Meta issue): Run bwc tests for the distribution (OpenSearch + plugins). #121
- Add support for Snapshot upgrades: Introduce snapshot upgrade bwc tests OpenSearch#1088
- Add support to run BWC tests in workflow via Docker Dockerize BWC test runs #278
- Add support to run BWC tests in parallel: Implement support for the bwc tests to run in parallel for multiple plugins #243
- Add support to download previous version artifacts predictably for plugins: Automate publishing plugins zips to artifacts repository #184
Here is the design proposal for #121 :
- All repositories define their bwc tests for A and B.
- Nightly builds will run A for repo level testing via bwctest.sh script defined in each repository.
Ref: https://github.com/opensearch-project/anomaly-detection/blob/main/integtest.sh
Eg:./integtest.sh bwcTest
- We will rely on [META] Test orchestration framework #122 and a job to the orchestrator to spin up various kinds of BWC test clusters.
- Nightly builds will also run B for bundle level testing via bwctest.sh defined in each repository using the clusters setup by the orchestrator. The orchestrator job will make calls to the bwctest.sh script to perform various steps of testing during upgrade.
Eg: For Rolling Upgrade, the orchestrator job will spin an old version (the versions should be defined via a manifest, TBD).
a. Kick off ingestion via./bwctest.sh RollingUpgradeIngestTest
b. Upgrade a node to new version
c. Kick off mixed cluster test via./bwctest.sh MixedClusterSearchTest
d. Upgrade all nodes to the latest version.
e. Kick off upgraded cluster test via./bwctest.sh UpgradedClusterTest
f. Report test status and repeat for every repository. - Report bundle level test status.
Activity