Add CTST coverage for Days=0 lifecycle expiration - #2461
Conversation
Hello delthas,My role is to assist you with the merge of this Available options
Available commands
Status report is not available. |
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
|
9061fa1 to
ac6b65e
Compare
|
CI failing due to cloudserver bump introducing unrelated issue, tracked in https://github.com/scality/cli-testing/pull/98. Please review regardless! :) (The introduced tests pass.) |
DarkIsDude
left a comment
There was a problem hiding this comment.
To be honest it's clear 🙏. Thanks !
2998a3c to
49b0bfc
Compare
|
The |
…ration backbeat 9.5.0-preview.1 -> 9.5.0-preview.4 (BB-791; arsenal >=8.5.6 so the v1 LifecycleTask path also honors Days=0) cloudserver 9.4.0-preview.2 -> 9.4.0-preview.4 (CLDSRV-928, arsenal 8.5.6) pensieve-api 1.10.1 -> 1.11.0-preview.1 (PSVAPI-128) Issue: ZENKO-5314
Add an end-to-end test using the S3 PutBucketLifecycleConfiguration API: a Scenario Outline over non-versioned, versioned and suspended buckets that sets a whole-bucket Days=0 expiration (current version, or current and noncurrent versions) and asserts the bucket empties. Factor the lifecycle-config PUT-with-retry logic shared with the transition workflow helper into putBucketLifecycleConfigurationWithRetry, and add an addExpirationWorkflow helper. Days=0 makes objects immediately eligible, so the test needs no time-progression or one-day-earlier tricks. Issue: ZENKO-5314
Picks up the makeAuthV4Request x-amz-content-sha256 fix (CTST-64) so the quota SigV4 admin routes work against cloudserver >= 9.4.0-preview.3, unblocking the CTST Quotas suite. Issue: ZENKO-5314
49b0bfc to
9083c90
Compare
|
/approve |
Build failedThe build for commit did not succeed in branch improvement/ZENKO-5314/days-0-expiration-ctst The following options are set: approve |
makeUpdateRequest signed requests without their payload, so aws4 stamped x-amz-content-sha256 with the empty-body hash while the real body was sent on the wire. cloudserver >= 9.4.0-preview.3 (CLDSRV-932) validates that header against the actual body on non-streaming routes and rejects the mismatch with 400, which made every RestoreObject IAM-policy test fail (400 instead of the expected 403) and silently turned other body-carrying calls into 400s masked by loose assertions. Pass the body to aws4.sign so the signature covers the actual payload. Issue: ZENKO-5314
|
CI investigation summary (run 29758508050, all 8 attempts failed): the three deterministic failures have two distinct root causes, both introduced by the deps bumps in this PR. test_iam_policies (end2end-2-shards-http) — cloudserver >= 9.4.0-preview.3 (CLDSRV-932, scality/cloudserver#6208) now validates PRA nominal case (end2end-pra) + Kafka Cleaner (ctst-end2end-sharded) — backbeat >= 9.5.0-preview.2 (BB-740) ships lifecycle alert threshold defaults like |
Picks up the BB-824 fix: lifecycle alert threshold defaults are now literal seconds instead of arithmetic expressions, which rendered invalid Go-template annotations and made prometheus-operator abort the whole Prometheus config sync (deterministic end2end-pra and Kafka Cleaner CTST failures on backbeat >= 9.5.0-preview.2). Issue: ZENKO-5314
Build failedThe build for commit did not succeed in branch improvement/ZENKO-5314/days-0-expiration-ctst The following options are set: approve |
|
I have successfully merged the changeset of this pull request
The following branches have NOT changed:
This pull request did not target the following hotfix branch(es) so they
Please check the status of the associated issue ZENKO-5314. Goodbye delthas. The following options are set: approve |
What does this PR do, and why do we need it?
Adds end-to-end (CTST) coverage for S3 lifecycle Expiration rules with
Days=0("delete all matching objects as soon as backbeat runs"), and bumps the component images that ship the feature.solution/deps.yaml: backbeat9.5.0-preview.1→9.5.0-preview.3(BB-791), cloudserver9.4.0-preview.2→9.4.0-preview.4(CLDSRV-928, arsenal 8.5.6), pensieve-api1.10.1→1.11.0-preview.1(PSVAPI-128).features/lifecycleExpiration.featurewith two@PreMergescenarios using the direct S3PutBucketLifecycleConfigurationAPI:Expiration Days=0→ all objects deleted;Expiration Days=0+NoncurrentVersionExpiration NoncurrentDays=0→ all versions and delete markers removed.putBucketLifecycleConfigurationWithRetry, and adds anaddExpirationWorkflowhelper.Days=0makes objects immediately eligible (backbeat lists with noBeforeDate), so the test needs no time-progression or one-day-earlier tricks and is not tagged@Flaky.The backbeat index-skip heuristic (BB-779) is intentionally out of scope — it is not yet merged and is covered by backbeat unit tests, not e2e.
Which issue does this PR fix?
ZENKO-5314
Special notes for your reviewers:
The new scenarios follow
tests/functional/ctst/HOW_TO_WRITE_TESTS.md: unique per-scenario buckets, external-state-only assertions (viaListObjectVersions), poll-based assertions (idempotent after waits), automatic teardown via the globalAfterhook, and no@Flaky.Issue: ZENKO-5314