@@ -831,32 +831,8 @@ class TransferTests : public ::testing::TestWithParam<TestType>
831
831
832
832
std::map<TestType, std::shared_ptr<MockS3Client>> TransferTests::m_s3Clients ({});
833
833
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
860
836
TEST_P (TransferTests, TransferManager_EmptyFileTest)
861
837
{
862
838
const Aws::String RandomFileName = Aws::Utils::UUID::RandomUUID ();
@@ -909,6 +885,32 @@ TEST_P(TransferTests, TransferManager_EmptyFileTest)
909
885
Aws::Map<Aws::String, Aws::String>());
910
886
}
911
887
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
+
912
914
TEST_P (TransferTests, TransferManager_SmallTest)
913
915
{
914
916
const Aws::String RandomFileName = Aws::Utils::UUID::RandomUUID ();
0 commit comments