refactor: stabilize heal format recovery integration tests (#1984)

Co-authored-by: houseme <housemecn@gmail.com>
This commit is contained in:
安正超
2026-02-27 15:26:19 +08:00
committed by GitHub
parent 3433dfa88e
commit 9d2b8822cf
26 changed files with 849 additions and 125 deletions
+121 -3
View File
@@ -13,7 +13,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#[derive(Default)]
#[derive(Default, Clone)]
pub enum EventName {
ObjectAccessedGet,
ObjectAccessedGetRetention,
@@ -61,11 +61,129 @@ pub enum EventName {
impl EventName {
fn expand(&self) -> Vec<EventName> {
todo!();
match self.clone() {
EventName::Everything => vec![
EventName::BucketCreated,
EventName::BucketRemoved,
EventName::ObjectAccessedAll,
EventName::ObjectCreatedAll,
EventName::ObjectRemovedAll,
EventName::ObjectManyVersions,
EventName::ObjectLargeVersions,
EventName::PrefixManyFolders,
EventName::ILMDelMarkerExpirationDelete,
EventName::ObjectReplicationAll,
EventName::ObjectRestoreAll,
EventName::ObjectTransitionAll,
],
EventName::ObjectAccessedAll => vec![
EventName::ObjectAccessedGet,
EventName::ObjectAccessedGetRetention,
EventName::ObjectAccessedGetLegalHold,
EventName::ObjectAccessedHead,
EventName::ObjectAccessedAttributes,
],
EventName::ObjectCreatedAll => vec![
EventName::ObjectCreatedCompleteMultipartUpload,
EventName::ObjectCreatedCopy,
EventName::ObjectCreatedPost,
EventName::ObjectCreatedPut,
EventName::ObjectCreatedPutRetention,
EventName::ObjectCreatedPutLegalHold,
EventName::ObjectCreatedPutTagging,
EventName::ObjectCreatedDeleteTagging,
],
EventName::ObjectRemovedAll => vec![
EventName::ObjectRemovedDelete,
EventName::ObjectRemovedDeleteMarkerCreated,
EventName::ObjectRemovedNoOP,
EventName::ObjectRemovedDeleteAllVersions,
],
EventName::ObjectReplicationAll => vec![
EventName::ObjectReplicationFailed,
EventName::ObjectReplicationComplete,
EventName::ObjectReplicationNotTracked,
EventName::ObjectReplicationMissedThreshold,
EventName::ObjectReplicationReplicatedAfterThreshold,
],
EventName::ObjectRestoreAll => vec![EventName::ObjectRestorePost, EventName::ObjectRestoreCompleted],
EventName::ObjectTransitionAll => vec![EventName::ObjectTransitionFailed, EventName::ObjectTransitionComplete],
EventName::ObjectSingleTypesEnd | EventName::ObjectScannerAll => vec![self.clone()],
_ => vec![self.clone()],
}
}
fn mask(&self) -> u64 {
todo!();
match self {
EventName::Everything => u64::MAX,
EventName::BucketCreated => 1_u64 << 0,
EventName::BucketRemoved => 1_u64 << 1,
EventName::ObjectAccessedGet => 1_u64 << 2,
EventName::ObjectAccessedGetRetention => 1_u64 << 3,
EventName::ObjectAccessedGetLegalHold => 1_u64 << 4,
EventName::ObjectAccessedHead => 1_u64 << 5,
EventName::ObjectAccessedAttributes => 1_u64 << 6,
EventName::ObjectCreatedCompleteMultipartUpload => 1_u64 << 7,
EventName::ObjectCreatedCopy => 1_u64 << 8,
EventName::ObjectCreatedPost => 1_u64 << 9,
EventName::ObjectCreatedPut => 1_u64 << 10,
EventName::ObjectCreatedPutRetention => 1_u64 << 11,
EventName::ObjectCreatedPutLegalHold => 1_u64 << 12,
EventName::ObjectCreatedPutTagging => 1_u64 << 13,
EventName::ObjectCreatedDeleteTagging => 1_u64 << 14,
EventName::ObjectRemovedDelete => 1_u64 << 15,
EventName::ObjectRemovedDeleteMarkerCreated => 1_u64 << 16,
EventName::ObjectRemovedDeleteAllVersions => 1_u64 << 17,
EventName::ObjectRemovedNoOP => 1_u64 << 18,
EventName::ObjectManyVersions => 1_u64 << 19,
EventName::ObjectLargeVersions => 1_u64 << 20,
EventName::PrefixManyFolders => 1_u64 << 21,
EventName::ILMDelMarkerExpirationDelete => 1_u64 << 22,
EventName::ObjectReplicationFailed => 1_u64 << 23,
EventName::ObjectReplicationComplete => 1_u64 << 24,
EventName::ObjectReplicationMissedThreshold => 1_u64 << 25,
EventName::ObjectReplicationReplicatedAfterThreshold => 1_u64 << 26,
EventName::ObjectReplicationNotTracked => 1_u64 << 27,
EventName::ObjectRestorePost => 1_u64 << 28,
EventName::ObjectRestoreCompleted => 1_u64 << 29,
EventName::ObjectRestoreAll => 1_u64 << 30,
EventName::ObjectTransitionFailed => 1_u64 << 31,
EventName::ObjectTransitionComplete => 1_u64 << 32,
EventName::ObjectAccessedAll => {
EventName::ObjectAccessedGet.mask()
| EventName::ObjectAccessedGetRetention.mask()
| EventName::ObjectAccessedGetLegalHold.mask()
| EventName::ObjectAccessedHead.mask()
| EventName::ObjectAccessedAttributes.mask()
}
EventName::ObjectCreatedAll => {
EventName::ObjectCreatedCompleteMultipartUpload.mask()
| EventName::ObjectCreatedCopy.mask()
| EventName::ObjectCreatedPost.mask()
| EventName::ObjectCreatedPut.mask()
| EventName::ObjectCreatedPutRetention.mask()
| EventName::ObjectCreatedPutLegalHold.mask()
| EventName::ObjectCreatedPutTagging.mask()
| EventName::ObjectCreatedDeleteTagging.mask()
}
EventName::ObjectRemovedAll => {
EventName::ObjectRemovedDelete.mask()
| EventName::ObjectRemovedDeleteMarkerCreated.mask()
| EventName::ObjectRemovedNoOP.mask()
| EventName::ObjectRemovedDeleteAllVersions.mask()
}
EventName::ObjectReplicationAll => {
EventName::ObjectReplicationFailed.mask()
| EventName::ObjectReplicationComplete.mask()
| EventName::ObjectReplicationMissedThreshold.mask()
| EventName::ObjectReplicationReplicatedAfterThreshold.mask()
| EventName::ObjectReplicationNotTracked.mask()
}
EventName::ObjectTransitionAll => {
EventName::ObjectTransitionFailed.mask() | EventName::ObjectTransitionComplete.mask()
}
EventName::ObjectSingleTypesEnd | EventName::ObjectScannerAll => 0,
}
}
}