Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tests: add mixed-version test for sending Raft snapshot RPCs #5488

Merged
merged 2 commits into from
Jul 21, 2022

Conversation

andrwng
Copy link
Contributor

@andrwng andrwng commented Jul 15, 2022

Cover letter

This PR adds a test harness that runs workloads on a partially upgraded cluster. The goal here is to ensure we exercise RPC serialization methods when the versions between the sender and receiver on mismatched.

To that end, the harness expects to be provided a workload that spurs RPCs in a deterministic direction:

  • We first perform a partial upgrade,
  • then run the workload between an upgraded node and non-upgraded node,
  • then run the workload in the opposite direction,
  • then do a partial rollback and repeat,
  • then proceed with a full upgrade and repeat.

I intend on using this harness to ensure we have coverage for our RPCs between nodes of different versions. To start, this PR includes a test that exercises RPCs involved in installing a snapshot.

Release notes

  • none

tests/rptest/tests/upgrade_with_workload.py Show resolved Hide resolved
log_allow_list=LOG_ALLOW_LIST +
MixedVersionWorkloadRunner.ALLOWED_LOGS)
def test_recover_during_upgrade(self):
def _run_recovery(src_node, dst_node):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice

@andrwng
Copy link
Contributor Author

andrwng commented Jul 19, 2022

Rebased to get the adaptive RPC serialization changes

This commit adds a test harness that runs workloads on a partially
upgraded cluster. The goal here is to ensure we exercise RPC
serialization methods when the versions between the sender and receiver
on mismatched.

To that end, the harness expects to be provided a workload that spurs
RPCs in a deterministic direction:
- We first perform a partial upgrade,
- then run the workload between an upgraded node and non-upgraded node,
- then run the workload in the opposite direction,
- then do a partial rollback and repeat,
- then proceed with a full upgrade and repeat.
This adds a test that installs snapshots across mixed versions, testing
compatibility of the respective RPCs when there is a version mismatch.

I reused an existing test, pulling out the guts into a test base class,
though I tweaked some retry intervals to speed the test up.
@andrwng
Copy link
Contributor Author

andrwng commented Jul 21, 2022

Rebased to get the adaptive RPC serialization changes

@andrwng
Copy link
Contributor Author

andrwng commented Jul 21, 2022

Test failure appears to be #4772

@dotnwat dotnwat merged commit 282ac4b into redpanda-data:dev Jul 21, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/tests kind/enhance New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants