mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-26 23:10:44 +01:00
ci: retry the timing-sensitive s3 lifecycle expiration tests once (#12073)
* ci: retry the timing-sensitive s3 lifecycle expiration tests once test_lifecycle_expiration and test_lifecyclev2_expiration assert exact object counts after fixed sleeps. The lifecycle worker expires objects via meta-log replay, and under the suite's write flood a shard's replay can trail an object's PUT event past the test's window (observed on master and PR runs, SQL-store job only). Split them out of the main list and allow one retry; each attempt is independent so real regressions still fail. * ci: allow a second retry for s3 lifecycle expiration tests
This commit is contained in:
1 parent
1e7afbacf4
commit
74abcb630e
1 file changed
+20
-6
@@ -380,9 +380,16 @@ jobs:
|
||||
s3tests/functional/test_s3.py::test_copy_object_ifnonematch_good \
|
||||
s3tests/functional/test_s3.py::test_lifecycle_set \
|
||||
s3tests/functional/test_s3.py::test_lifecycle_get \
|
||||
s3tests/functional/test_s3.py::test_lifecycle_set_filter \
|
||||
s3tests/functional/test_s3.py::test_lifecycle_expiration \
|
||||
s3tests/functional/test_s3.py::test_lifecyclev2_expiration
|
||||
s3tests/functional/test_s3.py::test_lifecycle_set_filter
|
||||
|
||||
# The expiration tests race the lifecycle worker's meta-log replay;
|
||||
# under the suite's write flood a shard can trail an object's PUT
|
||||
# event past the test's fixed sleep window. One retry absorbs it.
|
||||
lifecycle_expiration() {
|
||||
tox -- s3tests/functional/test_s3.py::test_lifecycle_expiration \
|
||||
s3tests/functional/test_s3.py::test_lifecyclev2_expiration
|
||||
}
|
||||
lifecycle_expiration || { echo "lifecycle expiration tests flaked; retry 1"; lifecycle_expiration; } || { echo "lifecycle expiration tests flaked; retry 2"; lifecycle_expiration; }
|
||||
# cleanup() trap handles worker/server kill + data dir wipe.
|
||||
|
||||
versioning-tests:
|
||||
@@ -1250,9 +1257,16 @@ jobs:
|
||||
s3tests/functional/test_s3.py::test_copy_object_ifnonematch_good \
|
||||
s3tests/functional/test_s3.py::test_lifecycle_set \
|
||||
s3tests/functional/test_s3.py::test_lifecycle_get \
|
||||
s3tests/functional/test_s3.py::test_lifecycle_set_filter \
|
||||
s3tests/functional/test_s3.py::test_lifecycle_expiration \
|
||||
s3tests/functional/test_s3.py::test_lifecyclev2_expiration
|
||||
s3tests/functional/test_s3.py::test_lifecycle_set_filter
|
||||
|
||||
# The expiration tests race the lifecycle worker's meta-log replay;
|
||||
# under the suite's write flood a shard can trail an object's PUT
|
||||
# event past the test's fixed sleep window. One retry absorbs it.
|
||||
lifecycle_expiration() {
|
||||
tox -- s3tests/functional/test_s3.py::test_lifecycle_expiration \
|
||||
s3tests/functional/test_s3.py::test_lifecyclev2_expiration
|
||||
}
|
||||
lifecycle_expiration || { echo "lifecycle expiration tests flaked; retry 1"; lifecycle_expiration; } || { echo "lifecycle expiration tests flaked; retry 2"; lifecycle_expiration; }
|
||||
# cleanup() trap handles worker/server kill + data dir wipe.
|
||||
|
||||
|
||||
Reference in new issue
Block a user