|
16 | 16 | #include <aws/testing/AwsTestHelpers.h> |
17 | 17 | #include <aws/testing/TestingEnvironment.h> |
18 | 18 | #include <aws/testing/platform/PlatformTesting.h> |
| 19 | +#include <aws/testing/s3-test-utils/S3TestUtils.h> |
19 | 20 | #include <gtest/gtest.h> |
20 | 21 |
|
21 | 22 | #include <random> |
@@ -46,115 +47,23 @@ class CancelCrtRequestTest : public ::testing::Test { |
46 | 47 | configuration.region = "us-east-1"; |
47 | 48 | m_client = Aws::MakeShared<S3CrtClient>(ALLOCATION_TAG, configuration); |
48 | 49 |
|
49 | | - m_bucketName = CalculateBucketName(BUCKET_NAME); |
| 50 | + m_bucketName = Testing::S3TestUtils::CalculateBucketName(BUCKET_NAME); |
50 | 51 | SCOPED_TRACE(Aws::String("FullBucketName ") + m_bucketName); |
51 | 52 | CreateBucketRequest createBucketRequest; |
52 | 53 | createBucketRequest.SetBucket(m_bucketName); |
53 | 54 | createBucketRequest.SetACL(BucketCannedACL::private_); |
54 | 55 |
|
55 | 56 | CreateBucketOutcome createBucketOutcome = m_client->CreateBucket(createBucketRequest); |
56 | 57 | AWS_EXPECT_SUCCESS(createBucketOutcome); |
57 | | - EXPECT_TRUE(WaitForBucketToPropagate(m_bucketName)); |
58 | | - TagTestBucket(m_bucketName); |
| 58 | + EXPECT_TRUE(Testing::S3TestUtils::WaitForBucketToPropagate(m_client, m_bucketName)); |
| 59 | + Testing::S3TestUtils::TagTestBucket(m_client, m_bucketName); |
59 | 60 | } |
60 | 61 |
|
61 | 62 | void TearDown() override { |
62 | | - DeleteBucket(m_bucketName); |
| 63 | + Testing::S3TestUtils::DeleteBucket(m_client, m_bucketName); |
63 | 64 | m_client.reset(); |
64 | 65 | } |
65 | 66 |
|
66 | | - void EmptyBucket(const Aws::String& bucketName) { |
67 | | - ListObjectsRequest listObjectsRequest; |
68 | | - listObjectsRequest.SetBucket(bucketName); |
69 | | - |
70 | | - ListObjectsOutcome listObjectsOutcome = m_client->ListObjects(listObjectsRequest); |
71 | | - |
72 | | - if (!listObjectsOutcome.IsSuccess()) return; |
73 | | - |
74 | | - for (const auto& object : listObjectsOutcome.GetResult().GetContents()) { |
75 | | - DeleteObjectRequest deleteObjectRequest; |
76 | | - deleteObjectRequest.SetBucket(bucketName); |
77 | | - deleteObjectRequest.SetKey(object.GetKey()); |
78 | | - auto deleteOutcome = m_client->DeleteObject(deleteObjectRequest); |
79 | | - AWS_UNREFERENCED_PARAM(deleteOutcome); |
80 | | - } |
81 | | - } |
82 | | - |
83 | | - void WaitForBucketToEmpty(const Aws::String& bucketName) { |
84 | | - ListObjectsRequest listObjectsRequest; |
85 | | - listObjectsRequest.SetBucket(bucketName); |
86 | | - |
87 | | - unsigned checkForObjectsCount = 0; |
88 | | - static const int TIMEOUT_MAX = 20; |
89 | | - while (checkForObjectsCount++ < TIMEOUT_MAX) { |
90 | | - ListObjectsOutcome listObjectsOutcome = m_client->ListObjects(listObjectsRequest); |
91 | | - AWS_ASSERT_SUCCESS(listObjectsOutcome); |
92 | | - |
93 | | - if (!listObjectsOutcome.GetResult().GetContents().empty()) { |
94 | | - std::this_thread::sleep_for(std::chrono::seconds(5)); |
95 | | - } else { |
96 | | - break; |
97 | | - } |
98 | | - } |
99 | | - } |
100 | | - |
101 | | - void DeleteBucket(const Aws::String& bucketName) { |
102 | | - HeadBucketRequest headBucketRequest; |
103 | | - headBucketRequest.SetBucket(bucketName); |
104 | | - HeadBucketOutcome bucketOutcome = m_client->HeadBucket(headBucketRequest); |
105 | | - |
106 | | - if (bucketOutcome.IsSuccess()) { |
107 | | - EmptyBucket(bucketName); |
108 | | - WaitForBucketToEmpty(bucketName); |
109 | | - |
110 | | - DeleteBucketRequest deleteBucketRequest; |
111 | | - deleteBucketRequest.SetBucket(bucketName); |
112 | | - |
113 | | - auto deleteBucketOutcome = |
114 | | - CallOperationWithUnconditionalRetry(m_client.get(), &Aws::S3Crt::S3CrtClient::DeleteBucket, deleteBucketRequest); |
115 | | - AWS_ASSERT_SUCCESS(deleteBucketOutcome); |
116 | | - } |
117 | | - } |
118 | | - |
119 | | - bool WaitForBucketToPropagate(const Aws::String& bucketName) { |
120 | | - unsigned timeoutCount = 0; |
121 | | - static const int TIMEOUT_MAX = 20; |
122 | | - while (timeoutCount++ < TIMEOUT_MAX) { |
123 | | - ListObjectsRequest listObjectsRequest; |
124 | | - listObjectsRequest.SetBucket(bucketName); |
125 | | - ListObjectsOutcome listObjectsOutcome = m_client->ListObjects(listObjectsRequest); |
126 | | - if (listObjectsOutcome.IsSuccess()) { |
127 | | - return true; |
128 | | - } |
129 | | - |
130 | | - std::this_thread::sleep_for(std::chrono::seconds(10)); |
131 | | - } |
132 | | - |
133 | | - return false; |
134 | | - } |
135 | | - |
136 | | - void TagTestBucket(const Aws::String& bucketName) { |
137 | | - ASSERT_TRUE(!bucketName.empty()); |
138 | | - ASSERT_TRUE(m_client); |
139 | | - |
140 | | - PutBucketTaggingRequest taggingRequest; |
141 | | - taggingRequest.SetBucket(bucketName); |
142 | | - Tag tag; |
143 | | - static const char* TEST_BUCKET_TAG = "IntegrationTestResource"; |
144 | | - tag.SetKey(TEST_BUCKET_TAG); |
145 | | - tag.SetValue(TEST_BUCKET_TAG); |
146 | | - Tagging tagging; |
147 | | - tagging.AddTagSet(tag); |
148 | | - taggingRequest.SetTagging(tagging); |
149 | | - |
150 | | - auto taggingOutcome = CallOperationWithUnconditionalRetry(m_client.get(), &Aws::S3Crt::S3CrtClient::PutBucketTagging, taggingRequest); |
151 | | - AWS_ASSERT_SUCCESS(taggingOutcome); |
152 | | - } |
153 | | - |
154 | | - static Aws::String CalculateBucketName(const Aws::String& bucketPrefix) { return Aws::Testing::GetAwsResourcePrefix() + bucketPrefix; } |
155 | | - |
156 | | - static Aws::String randomString() { return StringUtils::ToLower(Aws::String(UUID::RandomUUID()).c_str()); } |
157 | | - |
158 | 67 | std::shared_ptr<S3CrtClient> m_client; |
159 | 68 | Aws::String m_bucketName; |
160 | 69 | }; |
|
0 commit comments