private static void TestLifecycleFilterPredicate(LifecycleFilterPredicate predicate, AmazonS3Client client = null) { var filter = new LifecycleFilter() { LifecycleFilterPredicate = predicate }; var rule = new LifecycleRule { Filter = filter, Status = LifecycleRuleStatus.Enabled, Transitions = new List <LifecycleTransition>() { new LifecycleTransition { Days = 1, StorageClass = S3StorageClass.Glacier } } }; if (client == null) { client = Client; } client.PutLifecycleConfiguration(new PutLifecycleConfigurationRequest { BucketName = bucketName, Configuration = new LifecycleConfiguration { Rules = new List <LifecycleRule> { rule } } }); var actualConfig = S3TestUtils.WaitForConsistency(() => { var res = client.GetLifecycleConfiguration(bucketName); return(res.Configuration?.Rules?.Count == 1 ? res.Configuration : null); }); Assert.IsNotNull(actualConfig); Assert.IsNotNull(actualConfig.Rules); Assert.AreEqual(1, actualConfig.Rules.Count); AssertRulesAreEqual(rule, actualConfig.Rules[0]); }
public void LifecycleTest() { var s3Configuration = Client.GetLifecycleConfiguration(bucketName).Configuration; Assert.IsNotNull(s3Configuration); Assert.IsNotNull(s3Configuration.Rules); Assert.AreEqual(0, s3Configuration.Rules.Count); var configuration = new LifecycleConfiguration { Rules = new List <LifecycleRule> { new LifecycleRule { #pragma warning disable 618 Prefix = "rule1-", #pragma warning restore 618 Status = LifecycleRuleStatus.Enabled, Expiration = new LifecycleRuleExpiration { Days = 2, }, #pragma warning disable 618 Transition = new LifecycleTransition { Days = 1, StorageClass = S3StorageClass.Glacier }, NoncurrentVersionTransition = new LifecycleRuleNoncurrentVersionTransition { NoncurrentDays = 14, StorageClass = S3StorageClass.Glacier }, #pragma warning restore 618 AbortIncompleteMultipartUpload = new LifecycleRuleAbortIncompleteMultipartUpload { DaysAfterInitiation = 7 } }, new LifecycleRule { #pragma warning disable 618 Prefix = "rule2-", #pragma warning restore 618 Expiration = new LifecycleRuleExpiration { Days = 120 }, Transitions = new List <LifecycleTransition> { new LifecycleTransition { Days = 30, StorageClass = S3StorageClass.StandardInfrequentAccess }, new LifecycleTransition { Days = 90, StorageClass = S3StorageClass.Glacier } }, NoncurrentVersionTransitions = new List <LifecycleRuleNoncurrentVersionTransition> { new LifecycleRuleNoncurrentVersionTransition { NoncurrentDays = 30, StorageClass = S3StorageClass.StandardInfrequentAccess }, new LifecycleRuleNoncurrentVersionTransition { NoncurrentDays = 90, StorageClass = S3StorageClass.Glacier } } }, new LifecycleRule { #pragma warning disable 618 Prefix = "rule3-", #pragma warning restore 618 Expiration = new LifecycleRuleExpiration { ExpiredObjectDeleteMarker = true }, Transitions = new List <LifecycleTransition> { new LifecycleTransition { Days = 30, StorageClass = S3StorageClass.StandardInfrequentAccess }, new LifecycleTransition { Days = 90, StorageClass = S3StorageClass.Glacier } }, NoncurrentVersionTransitions = new List <LifecycleRuleNoncurrentVersionTransition> { new LifecycleRuleNoncurrentVersionTransition { NoncurrentDays = 30, StorageClass = S3StorageClass.StandardInfrequentAccess }, new LifecycleRuleNoncurrentVersionTransition { NoncurrentDays = 90, StorageClass = S3StorageClass.Glacier } } } } }; Client.PutLifecycleConfiguration(new PutLifecycleConfigurationRequest { BucketName = bucketName, Configuration = configuration }); s3Configuration = S3TestUtils.WaitForConsistency(() => { var res = Client.GetLifecycleConfiguration(bucketName); return(res.Configuration?.Rules?.Count == configuration.Rules.Count ? res.Configuration : null); }); string abortRuleId = null; Assert.IsNotNull(s3Configuration); Assert.IsNotNull(s3Configuration.Rules); Assert.AreEqual(configuration.Rules.Count, s3Configuration.Rules.Count); for (int i = 0; i < configuration.Rules.Count; i++) { var s3Rule = s3Configuration.Rules[i]; var rule = configuration.Rules[i]; Assert.IsNotNull(rule); Assert.IsNotNull(s3Rule); if (rule.AbortIncompleteMultipartUpload != null) { abortRuleId = s3Rule.Id; } AssertRulesAreEqual(rule, s3Rule); } var expectedMinAbortDate = DateTime.Now.Date.AddDays(7); var initResponse = Client.InitiateMultipartUpload(new InitiateMultipartUploadRequest { BucketName = bucketName, Key = "rule1-123", CannedACL = S3CannedACL.PublicRead }); var listResponse = Client.ListParts(bucketName, initResponse.Key, initResponse.UploadId); Assert.AreEqual(abortRuleId, initResponse.AbortRuleId); Assert.AreEqual(abortRuleId, listResponse.AbortRuleId); Assert.AreEqual(initResponse.AbortDate, listResponse.AbortDate); Assert.IsTrue(expectedMinAbortDate < initResponse.AbortDate); }
public void LifecycleV2Test() { var s3Configuration = Client.GetLifecycleConfiguration(bucketName).Configuration; Assert.IsNotNull(s3Configuration); Assert.IsNotNull(s3Configuration.Rules); Assert.AreEqual(0, s3Configuration.Rules.Count); var configuration = new LifecycleConfiguration { Rules = new List <LifecycleRule> { new LifecycleRule { Filter = new LifecycleFilter { LifecycleFilterPredicate = new LifecycleAndOperator { Operands = new List <LifecycleFilterPredicate> { new LifecycleObjectSizeGreaterThanPredicate { ObjectSizeGreaterThan = 132000 }, new LifecycleObjectSizeLessThanPredicate { ObjectSizeLessThan = 422000 } } } }, Transitions = new List <LifecycleTransition> { new LifecycleTransition { Days = 30, StorageClass = S3StorageClass.StandardInfrequentAccess }, new LifecycleTransition { Days = 90, StorageClass = S3StorageClass.Glacier } } } } }; Client.PutLifecycleConfiguration(new PutLifecycleConfigurationRequest { BucketName = bucketName, Configuration = configuration }); s3Configuration = S3TestUtils.WaitForConsistency(() => { var res = Client.GetLifecycleConfiguration(bucketName); return(res.Configuration?.Rules?.Count == configuration.Rules.Count ? res.Configuration : null); }); string abortRuleId = null; Assert.IsNotNull(s3Configuration); Assert.IsNotNull(s3Configuration.Rules); Assert.AreEqual(configuration.Rules.Count, s3Configuration.Rules.Count); for (int i = 0; i < configuration.Rules.Count; i++) { var s3Rule = s3Configuration.Rules[i]; var rule = configuration.Rules[i]; Assert.IsNotNull(rule); Assert.IsNotNull(s3Rule); if (rule.AbortIncompleteMultipartUpload != null) { abortRuleId = s3Rule.Id; } AssertRulesAreEqual(rule, s3Rule); } }