-
Notifications
You must be signed in to change notification settings - Fork 91
Add CRR cascaded tests #2447
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
base: development/2.16
Are you sure you want to change the base?
Add CRR cascaded tests #2447
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,56 @@ | ||
| Feature: CRR Cascade Replication | ||
|
|
||
| Cross-Region Replication Cascade allows replication of an object from | ||
| a first location to carry on through multiple locations without | ||
| stopping at first destination. | ||
|
|
||
| @2.15.0 | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. All those new tests should be marked 2.16 since that's where CRR will land. |
||
| @PreMerge | ||
| @ReplicationTest | ||
| @CRRCascade | ||
| Scenario: Cascade replication nominal case : A -> B -> C | ||
| Given cascade replication accounts are registered | ||
| And a versioned bucket exists in location "crr-location-a" | ||
| And a versioned bucket exists in location "crr-location-b" | ||
| And a versioned bucket exists in location "crr-location-c" | ||
| And replication is configured from location "crr-location-b" to "crr-location-c" | ||
| And replication is configured from location "crr-location-a" to "crr-location-b" | ||
| When an object "cascade-obj" is put in location "crr-location-a" | ||
| Then the object should replicate to location "crr-location-b" within 300 seconds | ||
| And the object should replicate to location "crr-location-c" within 300 seconds | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should also check the "final" replication status on each location : SUCCESS / REPLICA / REPLICA ?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes I'm gonna add a step at the end to check all the status |
||
| When I wait 15 seconds | ||
| Then the cascade replication states should be settled | ||
|
Comment on lines
+21
to
+22
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. instead/in addition to verify things are "settled" (which may pass by luck, in a dynamic system) : should/coudl we try to "count" replications? i.e. use metrics/logs/kafka topic to verify no extra replication was triggered... (not sure if possible, i.e. how to observe this specifically when other tests may be running...) |
||
|
|
||
| @2.15.0 | ||
| @PreMerge | ||
| @ReplicationTest | ||
| @CRRCascade | ||
| Scenario: Cascade replication with loop : A -> B -> C -> A | ||
| Given cascade replication accounts are registered | ||
| And a versioned bucket exists in location "crr-location-a" | ||
| And a versioned bucket exists in location "crr-location-b" | ||
| And a versioned bucket exists in location "crr-location-c" | ||
| And replication is configured from location "crr-location-a" to "crr-location-b" | ||
| And replication is configured from location "crr-location-b" to "crr-location-c" | ||
| And replication is configured from location "crr-location-c" to "crr-location-a" | ||
| When an object "cascade-loop-obj" is put in location "crr-location-a" | ||
| Then the object should replicate to location "crr-location-b" within 300 seconds | ||
| And the object should replicate to location "crr-location-c" within 300 seconds | ||
| And the object at location "crr-location-a" should never have replication status PENDING within 30 seconds | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should also check the "final" replication status on each location : SUCCESS / REPLICA / REPLICA ?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. should we have more complex scenario, where we write on multiple points in the loop?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I came up with a more complex scenario which I think is decent :
Tbh, still not the perfect test but I think worth doing |
||
| When I wait 15 seconds | ||
| Then the cascade replication states should be settled | ||
|
|
||
| @2.15.0 | ||
| @PreMerge | ||
| @ReplicationTest | ||
| @CRRCascade | ||
| Scenario: Multiple writes across a loop converge to the last write | ||
| Given cascade replication accounts are registered | ||
| And a versioned bucket exists in location "crr-location-a" | ||
| And a versioned bucket exists in location "crr-location-b" | ||
| And a versioned bucket exists in location "crr-location-c" | ||
| And replication is configured from location "crr-location-b" to "crr-location-c" | ||
| And replication is configured from location "crr-location-c" to "crr-location-a" | ||
| And replication is configured from location "crr-location-a" to "crr-location-b" | ||
| When the object "cascade-convergence-obj" is concurrently written 10 times to every cascade location | ||
| Then all cascade locations should converge to the same metadata marker within 300 seconds | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Realising here I have 3 scenarios, and each new scenario pretty much covers the case of the previous scenario so in theory we could just run the last one to test the feature, I think still good to have a few scenarios