Skip to content

Commit 48a2ee8

Browse files
Max EliaserSergeyRyabinin
Max Eliaser
authored andcommitted
Move TransferManager_EmptyFileTest to the beginning of TransferTests suite
For whatever reason, if another HTTP-mode test runs before this one, it won't reproduce the problem (running the HTTPS-mode tests first is okay.) Without reordering the tests, I have to run only this one test case using --gtest_filter in order for it to reproduce the problem.
1 parent 92f061b commit 48a2ee8

File tree

1 file changed

+28
-26
lines changed

1 file changed

+28
-26
lines changed

tests/aws-cpp-sdk-transfer-tests/TransferTests.cpp

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -831,32 +831,8 @@ class TransferTests : public ::testing::TestWithParam<TestType>
831831

832832
std::map<TestType, std::shared_ptr<MockS3Client>> TransferTests::m_s3Clients({});
833833

834-
TEST_P(TransferTests, TransferManager_ThreadExecutorJoinsAsyncOperations)
835-
{
836-
const Aws::String RandomFileName = Aws::Utils::UUID::RandomUUID();
837-
Aws::String testFileName = MakeFilePath(RandomFileName.c_str());
838-
839-
ScopedTestFile testFile(testFileName, MB5, testString);
840-
TransferManagerConfiguration transferManagerConfig(m_executor.get());
841-
transferManagerConfig.s3Client = m_s3Clients[GetParam()];
842-
Aws::Utils::Threading::Semaphore ev(0, 1);
843-
transferManagerConfig.downloadProgressCallback = [&ev](const TransferManager*, const std::shared_ptr<const TransferHandle>&){ ev.Release(); };
844-
// When httpRequest returns with error, downloadProgressCallback will not be called.
845-
transferManagerConfig.errorCallback = [&ev](const TransferManager*, const std::shared_ptr<const TransferHandle>&, const Aws::Client::AWSError<Aws::S3::S3Errors>&){ ev.Release(); };
846-
std::shared_ptr<TransferHandle> uploadHandle, downloadHandle;
847-
{
848-
auto transferManager = TransferManager::Create(transferManagerConfig);
849-
uploadHandle = transferManager->UploadFile(testFileName, GetTestBucketName(), RandomFileName, "text/plain", Aws::Map<Aws::String, Aws::String>());
850-
uploadHandle->WaitUntilFinished();
851-
ASSERT_TRUE(WaitForObjectToPropagate(GetTestBucketName(), RandomFileName.c_str()));
852-
downloadHandle = transferManager->DownloadFile(GetTestBucketName(), RandomFileName, MakeDownloadFileName(RandomFileName));
853-
}
854-
ev.WaitOne(); // ensures that the download has started; otherwise, downloadHandle's status will be NOT_STARTED
855-
m_executor = nullptr; // this should join all worker threads.
856-
ASSERT_EQ(TransferStatus::COMPLETED, uploadHandle->GetStatus());
857-
ASSERT_EQ(TransferStatus::COMPLETED, downloadHandle->GetStatus());
858-
}
859-
834+
// NOTE: this has to be the first test in the suite in order to reproduce the
835+
// CurlCode 56 problem in HTTP mode reliably
860836
TEST_P(TransferTests, TransferManager_EmptyFileTest)
861837
{
862838
const Aws::String RandomFileName = Aws::Utils::UUID::RandomUUID();
@@ -909,6 +885,32 @@ TEST_P(TransferTests, TransferManager_EmptyFileTest)
909885
Aws::Map<Aws::String, Aws::String>());
910886
}
911887

888+
TEST_P(TransferTests, TransferManager_ThreadExecutorJoinsAsyncOperations)
889+
{
890+
const Aws::String RandomFileName = Aws::Utils::UUID::RandomUUID();
891+
Aws::String testFileName = MakeFilePath(RandomFileName.c_str());
892+
893+
ScopedTestFile testFile(testFileName, MB5, testString);
894+
TransferManagerConfiguration transferManagerConfig(m_executor.get());
895+
transferManagerConfig.s3Client = m_s3Clients[GetParam()];
896+
Aws::Utils::Threading::Semaphore ev(0, 1);
897+
transferManagerConfig.downloadProgressCallback = [&ev](const TransferManager*, const std::shared_ptr<const TransferHandle>&){ ev.Release(); };
898+
// When httpRequest returns with error, downloadProgressCallback will not be called.
899+
transferManagerConfig.errorCallback = [&ev](const TransferManager*, const std::shared_ptr<const TransferHandle>&, const Aws::Client::AWSError<Aws::S3::S3Errors>&){ ev.Release(); };
900+
std::shared_ptr<TransferHandle> uploadHandle, downloadHandle;
901+
{
902+
auto transferManager = TransferManager::Create(transferManagerConfig);
903+
uploadHandle = transferManager->UploadFile(testFileName, GetTestBucketName(), RandomFileName, "text/plain", Aws::Map<Aws::String, Aws::String>());
904+
uploadHandle->WaitUntilFinished();
905+
ASSERT_TRUE(WaitForObjectToPropagate(GetTestBucketName(), RandomFileName.c_str()));
906+
downloadHandle = transferManager->DownloadFile(GetTestBucketName(), RandomFileName, MakeDownloadFileName(RandomFileName));
907+
}
908+
ev.WaitOne(); // ensures that the download has started; otherwise, downloadHandle's status will be NOT_STARTED
909+
m_executor = nullptr; // this should join all worker threads.
910+
ASSERT_EQ(TransferStatus::COMPLETED, uploadHandle->GetStatus());
911+
ASSERT_EQ(TransferStatus::COMPLETED, downloadHandle->GetStatus());
912+
}
913+
912914
TEST_P(TransferTests, TransferManager_SmallTest)
913915
{
914916
const Aws::String RandomFileName = Aws::Utils::UUID::RandomUUID();

0 commit comments

Comments
 (0)