using Amazon.S3;
using Amazon.S3.Model;
using Amazon.S3.Util;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AWSSDK_DotNet.IntegrationTests.Tests.S3
{
///
/// Tests for IntelligentTieringConfiguration
///
[TestClass]
public class IntelligentTieringTests : TestBase
{
public static string bucketName;
public const string intelligentTieringId = "configId";
private PutBucketIntelligentTieringConfigurationRequest GeneratePutRequest (string intelligentTieringId, IntelligentTieringFilter intelligentTieringfilter)
{
PutBucketIntelligentTieringConfigurationRequest putBucketIntelligentTieringConfigurationRequest = new PutBucketIntelligentTieringConfigurationRequest()
{
BucketName = bucketName,
IntelligentTieringId = intelligentTieringId,
IntelligentTieringConfiguration = new IntelligentTieringConfiguration()
{
IntelligentTieringId = intelligentTieringId,
Status = IntelligentTieringStatus.Enabled,
IntelligentTieringFilter = intelligentTieringfilter,
Tierings = new List()
{
new Tiering()
{
Days = 90,
AccessTier = IntelligentTieringAccessTier.ARCHIVE_ACCESS
}
}
}
};
return putBucketIntelligentTieringConfigurationRequest;
}
[TestInitialize]
public void Init()
{
bucketName = S3TestUtils.CreateBucketWithWait(Client);
}
[TestCleanup]
public void Cleanup()
{
AmazonS3Util.DeleteS3BucketWithObjects(Client, bucketName);
}
[TestCategory("S3")]
[TestMethod]
public void BucketIntelligentTieringConfigurationsTagFilterTest()
{
Tag tag = new Tag()
{
Key = "tagK",
Value = "tagV"
};
var intelligentTieringFilter = new IntelligentTieringFilter()
{
IntelligentTieringFilterPredicate = new IntelligentTieringTagPredicate(tag)
};
var putBucketIntelligentTieringConfigurationRequest = GeneratePutRequest(intelligentTieringId, intelligentTieringFilter);
var putBucketIntelligentTieringConfigurationResponse = Client.PutBucketIntelligentTieringConfiguration(putBucketIntelligentTieringConfigurationRequest);
GetBucketIntelligentTieringConfigurationRequest getBucketIntelligentTieringConfigurationRequest = new GetBucketIntelligentTieringConfigurationRequest()
{
IntelligentTieringId = intelligentTieringId,
BucketName = bucketName
};
var getBucketIntelligentTieringConfigurationResponse = S3TestUtils.WaitForConsistency(() =>
{
var res = Client.GetBucketIntelligentTieringConfiguration(getBucketIntelligentTieringConfigurationRequest);
return res.IntelligentTieringConfiguration?.IntelligentTieringId == getBucketIntelligentTieringConfigurationRequest.IntelligentTieringId ? res : null;
});
var getConfiguration = getBucketIntelligentTieringConfigurationResponse.IntelligentTieringConfiguration;
var putConfiguration = putBucketIntelligentTieringConfigurationRequest.IntelligentTieringConfiguration;
Assert.AreEqual(getConfiguration.IntelligentTieringId, putConfiguration.IntelligentTieringId);
Assert.AreEqual(((IntelligentTieringTagPredicate)getConfiguration.IntelligentTieringFilter.IntelligentTieringFilterPredicate).Tag.Key, "tagK");
Assert.AreEqual(((IntelligentTieringTagPredicate)getConfiguration.IntelligentTieringFilter.IntelligentTieringFilterPredicate).Tag.Value, "tagV");
}
[TestCategory("S3")]
[TestMethod]
public void BucketIntelligentTieringConfigurationsPrefixFilterTest()
{
var intelligentTieringFilter = new IntelligentTieringFilter()
{
IntelligentTieringFilterPredicate = new IntelligentTieringPrefixPredicate("string")
};
var putBucketIntelligentTieringConfigurationRequest = GeneratePutRequest(intelligentTieringId, intelligentTieringFilter);
var putBucketIntelligentTieringConfigurationResponse = Client.PutBucketIntelligentTieringConfiguration(putBucketIntelligentTieringConfigurationRequest);
GetBucketIntelligentTieringConfigurationRequest getBucketIntelligentTieringConfigurationRequest = new GetBucketIntelligentTieringConfigurationRequest()
{
IntelligentTieringId = intelligentTieringId,
BucketName = bucketName
};
var getBucketIntelligentTieringConfigurationResponse = S3TestUtils.WaitForConsistency(() =>
{
var res = Client.GetBucketIntelligentTieringConfiguration(getBucketIntelligentTieringConfigurationRequest);
return res.IntelligentTieringConfiguration?.IntelligentTieringId == getBucketIntelligentTieringConfigurationRequest.IntelligentTieringId ? res : null;
});
var getConfiguration = getBucketIntelligentTieringConfigurationResponse.IntelligentTieringConfiguration;
var putConfiguration = putBucketIntelligentTieringConfigurationRequest.IntelligentTieringConfiguration;
Assert.AreEqual(getConfiguration.IntelligentTieringId, putConfiguration.IntelligentTieringId);
Assert.AreEqual(((IntelligentTieringPrefixPredicate)getConfiguration.IntelligentTieringFilter.IntelligentTieringFilterPredicate).Prefix, "string");
}
[TestCategory("S3")]
[TestMethod]
public void BucketIntelligentTieringConfigurationsAndFilterTest()
{
Tag tag = new Tag()
{
Key = "tagK",
Value = "tagV"
};
List list = new List();
list.Add(new IntelligentTieringPrefixPredicate("string"));
list.Add(new IntelligentTieringTagPredicate(tag));
var intelligentTieringFilter = new IntelligentTieringFilter()
{
IntelligentTieringFilterPredicate = new IntelligentTieringAndOperator(list)
};
var putBucketIntelligentTieringConfigurationRequest = GeneratePutRequest(intelligentTieringId, intelligentTieringFilter);
var putBucketIntelligentTieringConfigurationResponse = Client.PutBucketIntelligentTieringConfiguration(putBucketIntelligentTieringConfigurationRequest);
GetBucketIntelligentTieringConfigurationRequest getBucketIntelligentTieringConfigurationRequest = new GetBucketIntelligentTieringConfigurationRequest()
{
IntelligentTieringId = intelligentTieringId,
BucketName = bucketName
};
var getBucketIntelligentTieringConfigurationResponse = S3TestUtils.WaitForConsistency(() =>
{
var res = Client.GetBucketIntelligentTieringConfiguration(getBucketIntelligentTieringConfigurationRequest);
return res.IntelligentTieringConfiguration?.IntelligentTieringId == getBucketIntelligentTieringConfigurationRequest.IntelligentTieringId ? res : null;
});
var getConfiguration = getBucketIntelligentTieringConfigurationResponse.IntelligentTieringConfiguration;
var putConfiguration = putBucketIntelligentTieringConfigurationRequest.IntelligentTieringConfiguration;
Assert.AreEqual(getConfiguration.IntelligentTieringId, putConfiguration.IntelligentTieringId);
foreach (var predicate in ((IntelligentTieringNAryOperator)getConfiguration.IntelligentTieringFilter.IntelligentTieringFilterPredicate).Operands)
{
if (predicate is IntelligentTieringPrefixPredicate)
{
Assert.AreEqual(((IntelligentTieringPrefixPredicate)predicate).Prefix, "string");
}
else if (predicate is IntelligentTieringTagPredicate)
{
Assert.AreEqual(((IntelligentTieringTagPredicate)predicate).Tag.Key, "tagK");
Assert.AreEqual(((IntelligentTieringTagPredicate)predicate).Tag.Value, "tagV");
}
}
}
[TestCategory("S3")]
[TestMethod]
public void BucketIntelligentTieringConfigurationsTieringListTest()
{
var intelligentTieringFilter = new IntelligentTieringFilter()
{
IntelligentTieringFilterPredicate = new IntelligentTieringPrefixPredicate("string")
};
var tiering = new Tiering()
{
Days = 180,
AccessTier = IntelligentTieringAccessTier.DEEP_ARCHIVE_ACCESS
};
var putBucketIntelligentTieringConfigurationRequest = GeneratePutRequest(intelligentTieringId, intelligentTieringFilter);
putBucketIntelligentTieringConfigurationRequest.IntelligentTieringConfiguration.Tierings.Add(tiering);
var putBucketIntelligentTieringConfigurationResponse = Client.PutBucketIntelligentTieringConfiguration(putBucketIntelligentTieringConfigurationRequest);
GetBucketIntelligentTieringConfigurationRequest getBucketIntelligentTieringConfigurationRequest = new GetBucketIntelligentTieringConfigurationRequest()
{
IntelligentTieringId = intelligentTieringId,
BucketName = bucketName
};
var getBucketIntelligentTieringConfigurationResponse = S3TestUtils.WaitForConsistency(() =>
{
var res = Client.GetBucketIntelligentTieringConfiguration(getBucketIntelligentTieringConfigurationRequest);
return res.IntelligentTieringConfiguration?.IntelligentTieringId == getBucketIntelligentTieringConfigurationRequest.IntelligentTieringId ? res : null;
});
var getConfiguration = getBucketIntelligentTieringConfigurationResponse.IntelligentTieringConfiguration;
var putConfiguration = putBucketIntelligentTieringConfigurationRequest.IntelligentTieringConfiguration;
Assert.AreEqual(getConfiguration.IntelligentTieringId, putConfiguration.IntelligentTieringId);
Assert.AreEqual(getConfiguration.Status, putConfiguration.Status);
Assert.AreEqual(getConfiguration.Tierings.Count, putConfiguration.Tierings.Count);
for (int i = 0; i < getConfiguration.Tierings.Count; i++)
{
var tiering_get = getConfiguration.Tierings[i];
var tiering_put = putConfiguration.Tierings[i];
Assert.AreEqual(tiering_get.Days, tiering_put.Days);
Assert.AreEqual(tiering_get.AccessTier, tiering_put.AccessTier);
}
}
[TestCategory("S3")]
[TestMethod]
public void ListBucketIntelligentTiering()
{
var intelligentTieringFilter = new IntelligentTieringFilter()
{
IntelligentTieringFilterPredicate = new IntelligentTieringPrefixPredicate("string")
};
var putBucketIntelligentTieringConfigurationRequest_1 = GeneratePutRequest("config-1", intelligentTieringFilter);
var putBucketIntelligentTieringConfigurationRequest_2 = GeneratePutRequest("config-2", intelligentTieringFilter);
Client.PutBucketIntelligentTieringConfiguration(putBucketIntelligentTieringConfigurationRequest_1);
Client.PutBucketIntelligentTieringConfiguration(putBucketIntelligentTieringConfigurationRequest_2);
ListBucketIntelligentTieringConfigurationsRequest listBucketIntelligentTieringConfigurationsRequest = new ListBucketIntelligentTieringConfigurationsRequest()
{
BucketName = bucketName
};
var listBucketIntelligentTieringConfigurationsResponse = Client.ListBucketIntelligentTieringConfigurations(listBucketIntelligentTieringConfigurationsRequest);
Assert.AreEqual(listBucketIntelligentTieringConfigurationsResponse.IntelligentTieringConfigurationList.Count, 2);
}
[TestCategory("S3")]
[TestMethod]
public void DeleteBucketIntelligentTieringConfigurationTest()
{
var intelligentTieringFilter = new IntelligentTieringFilter()
{
IntelligentTieringFilterPredicate = new IntelligentTieringPrefixPredicate("string")
};
var putBucketIntelligentTieringConfigurationRequest = GeneratePutRequest(intelligentTieringId, intelligentTieringFilter);
Client.PutBucketIntelligentTieringConfiguration(putBucketIntelligentTieringConfigurationRequest);
DeleteBucketIntelligentTieringConfigurationRequest deleteBucketIntelligentTieringConfigurationRequest = new DeleteBucketIntelligentTieringConfigurationRequest()
{
BucketName = bucketName,
IntelligentTieringId = intelligentTieringId
};
var deleteBucketIntelligentTieringConfigurationResponse = Client.DeleteBucketIntelligentTieringConfiguration(deleteBucketIntelligentTieringConfigurationRequest);
ListBucketIntelligentTieringConfigurationsRequest listBucketIntelligentTieringConfigurationsRequest = new ListBucketIntelligentTieringConfigurationsRequest()
{
BucketName = bucketName
};
var listBucketIntelligentTieringConfigurationsResponse = Client.ListBucketIntelligentTieringConfigurations(listBucketIntelligentTieringConfigurationsRequest);
Assert.AreEqual(listBucketIntelligentTieringConfigurationsResponse.IntelligentTieringConfigurationList.Count, 0);
}
}
}