Skip to content

Commit de8bf9d

Browse files
Extract common logic between S3 tests to a separate file
1 parent f28a13d commit de8bf9d

File tree

7 files changed

+462
-724
lines changed

7 files changed

+462
-724
lines changed

tests/aws-cpp-sdk-s3-crt-integration-tests/BucketAndObjectOperationTest.cpp

+79-263
Large diffs are not rendered by default.

tests/aws-cpp-sdk-s3-crt-integration-tests/CancelCrtRequestTest.cpp

+5-96
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <aws/testing/AwsTestHelpers.h>
1717
#include <aws/testing/TestingEnvironment.h>
1818
#include <aws/testing/platform/PlatformTesting.h>
19+
#include <aws/testing/s3-test-utils/S3TestUtils.h>
1920
#include <gtest/gtest.h>
2021

2122
#include <random>
@@ -46,115 +47,23 @@ class CancelCrtRequestTest : public ::testing::Test {
4647
configuration.region = "us-east-1";
4748
m_client = Aws::MakeShared<S3CrtClient>(ALLOCATION_TAG, configuration);
4849

49-
m_bucketName = CalculateBucketName(BUCKET_NAME);
50+
m_bucketName = Testing::S3TestUtils::CalculateBucketName(BUCKET_NAME);
5051
SCOPED_TRACE(Aws::String("FullBucketName ") + m_bucketName);
5152
CreateBucketRequest createBucketRequest;
5253
createBucketRequest.SetBucket(m_bucketName);
5354
createBucketRequest.SetACL(BucketCannedACL::private_);
5455

5556
CreateBucketOutcome createBucketOutcome = m_client->CreateBucket(createBucketRequest);
5657
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);
5960
}
6061

6162
void TearDown() override {
62-
DeleteBucket(m_bucketName);
63+
Testing::S3TestUtils::DeleteBucket(m_client, m_bucketName);
6364
m_client.reset();
6465
}
6566

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-
15867
std::shared_ptr<S3CrtClient> m_client;
15968
Aws::String m_bucketName;
16069
};

0 commit comments

Comments
 (0)