@@ -258,10 +258,10 @@ namespace
258
258
unsigned timeoutCount = 0 ;
259
259
while (timeoutCount++ < TIMEOUT_MAX)
260
260
{
261
- HeadBucketRequest headBucketRequest ;
262
- headBucketRequest .SetBucket (bucketName);
263
- HeadBucketOutcome headBucketOutcome = client->HeadBucket (headBucketRequest );
264
- if (headBucketOutcome .IsSuccess ())
261
+ ListObjectsRequest listObjectsRequest ;
262
+ listObjectsRequest .SetBucket (bucketName);
263
+ ListObjectsOutcome listObjectsOutcome = client->ListObjects (listObjectsRequest );
264
+ if (listObjectsOutcome .IsSuccess ())
265
265
{
266
266
return true ;
267
267
}
@@ -277,16 +277,40 @@ namespace
277
277
unsigned timeoutCount = 0 ;
278
278
while (timeoutCount++ < TIMEOUT_MAX)
279
279
{
280
- HeadObjectRequest headObjectRequest ;
281
- headObjectRequest .SetBucket (bucketName);
282
- headObjectRequest .SetKey (objectKey);
283
- HeadObjectOutcome headObjectOutcome = Client->HeadObject (headObjectRequest );
284
- if (headObjectOutcome .IsSuccess ())
280
+ GetObjectRequest getObjectRequest ;
281
+ getObjectRequest .SetBucket (bucketName);
282
+ getObjectRequest .SetKey (objectKey);
283
+ GetObjectOutcome getObjectOutcome = Client->GetObject (getObjectRequest );
284
+ if (getObjectOutcome .IsSuccess ())
285
285
{
286
286
return true ;
287
287
}
288
288
289
- std::this_thread::sleep_for (std::chrono::seconds (1 ));
289
+ std::this_thread::sleep_for (std::chrono::seconds (5 ));
290
+ }
291
+
292
+ return false ;
293
+ }
294
+
295
+ static bool WaitForObjectWithSSECToPropagate (const Aws::String& bucketName, const char * objectKey, const ByteBuffer& sseKey)
296
+ {
297
+ unsigned timeoutCount = 0 ;
298
+ Aws::String strBuffer (reinterpret_cast <char *>(sseKey.GetUnderlyingData ()), sseKey.GetLength ());
299
+ while (timeoutCount++ < TIMEOUT_MAX)
300
+ {
301
+ GetObjectRequest getObjectRequest;
302
+ getObjectRequest.SetBucket (bucketName);
303
+ getObjectRequest.SetKey (objectKey);
304
+ getObjectRequest.WithSSECustomerAlgorithm (Aws::S3::Model::ServerSideEncryptionMapper::GetNameForServerSideEncryption (Aws::S3::Model::ServerSideEncryption::AES256))
305
+ .WithSSECustomerKey (HashingUtils::Base64Encode (sseKey))
306
+ .WithSSECustomerKeyMD5 (HashingUtils::Base64Encode (HashingUtils::CalculateMD5 (strBuffer)));
307
+ GetObjectOutcome getObjectOutcome = Client->GetObject (getObjectRequest);
308
+ if (getObjectOutcome.IsSuccess ())
309
+ {
310
+ return true ;
311
+ }
312
+
313
+ std::this_thread::sleep_for (std::chrono::seconds (5 ));
290
314
}
291
315
292
316
return false ;
@@ -324,7 +348,7 @@ namespace
324
348
325
349
if (listObjectsOutcome.GetResult ().GetContents ().size () > 0 )
326
350
{
327
- std::this_thread::sleep_for (std::chrono::seconds (1 ));
351
+ std::this_thread::sleep_for (std::chrono::seconds (5 ));
328
352
}
329
353
else
330
354
{
@@ -367,7 +391,7 @@ namespace
367
391
EXPECT_TRUE (createBucketOutcome.IsSuccess ());
368
392
const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult ();
369
393
EXPECT_TRUE (!createBucketResult.GetLocation ().empty ());
370
- WaitForBucketToPropagate (fullBucketName);
394
+ EXPECT_TRUE ( WaitForBucketToPropagate (fullBucketName) );
371
395
return fullBucketName;
372
396
}
373
397
@@ -386,7 +410,7 @@ namespace
386
410
387
411
ASSERT_EQ (HttpResponseCode::OK, putResponse->GetResponseCode ());
388
412
389
- WaitForObjectToPropagate (bucketName, TEST_OBJ_KEY);
413
+ ASSERT_TRUE ( WaitForObjectToPropagate (bucketName, TEST_OBJ_KEY) );
390
414
391
415
// GetObject with presigned url
392
416
Aws::String presignedUrlGet = Client->GeneratePresignedUrl (bucketName, TEST_OBJ_KEY, HttpMethod::HTTP_GET);
@@ -466,7 +490,7 @@ namespace
466
490
467
491
ASSERT_EQ (HttpResponseCode::OK, putResponse->GetResponseCode ());
468
492
469
- WaitForObjectToPropagate ( fullBucketName, TEST_OBJ_KEY);
493
+ ASSERT_TRUE ( WaitForObjectWithSSECToPropagate ( fullBucketName, TEST_OBJ_KEY, sseKey) );
470
494
471
495
// Test GetObject with SSEC Presigned Url
472
496
Aws::String presignedUrlGet = Client->GeneratePresignedUrlWithSSEC (fullBucketName, TEST_OBJ_KEY, HttpMethod::HTTP_GET, HashingUtils::Base64Encode (sseKey));
@@ -656,7 +680,7 @@ namespace
656
680
const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult ();
657
681
ASSERT_TRUE (!createBucketResult.GetLocation ().empty ());
658
682
659
- WaitForBucketToPropagate (fullBucketName);
683
+ ASSERT_TRUE ( WaitForBucketToPropagate (fullBucketName) );
660
684
661
685
PutObjectRequest putObjectRequest;
662
686
putObjectRequest.SetBucket (fullBucketName);
@@ -682,7 +706,7 @@ namespace
682
706
const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult ();
683
707
ASSERT_TRUE (!createBucketResult.GetLocation ().empty ());
684
708
685
- WaitForBucketToPropagate (fullBucketName);
709
+ ASSERT_TRUE ( WaitForBucketToPropagate (fullBucketName) );
686
710
687
711
PutObjectRequest putObjectRequest;
688
712
putObjectRequest.SetBucket (fullBucketName);
@@ -769,7 +793,7 @@ namespace
769
793
const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult ();
770
794
ASSERT_TRUE (!createBucketResult.GetLocation ().empty ());
771
795
772
- WaitForBucketToPropagate (fullBucketName);
796
+ ASSERT_TRUE ( WaitForBucketToPropagate (fullBucketName) );
773
797
774
798
// test unicode
775
799
{
@@ -933,7 +957,7 @@ namespace
933
957
const CreateBucketResult& createBucketResult = createBucketOutcome.GetResult ();
934
958
ASSERT_TRUE (!createBucketResult.GetLocation ().empty ());
935
959
936
- WaitForBucketToPropagate (fullBucketName);
960
+ ASSERT_TRUE ( WaitForBucketToPropagate (fullBucketName) );
937
961
938
962
CreateMultipartUploadRequest createMultipartUploadRequest;
939
963
createMultipartUploadRequest.SetBucket (fullBucketName);
@@ -1001,7 +1025,7 @@ namespace
1001
1025
completeMultipartUploadRequest);
1002
1026
ASSERT_TRUE (completeMultipartUploadOutcome.IsSuccess ());
1003
1027
1004
- WaitForObjectToPropagate (fullBucketName, multipartKeyName);
1028
+ ASSERT_TRUE ( WaitForObjectToPropagate (fullBucketName, multipartKeyName) );
1005
1029
1006
1030
GetObjectRequest getObjectRequest;
1007
1031
getObjectRequest.SetBucket (fullBucketName);
@@ -1180,7 +1204,7 @@ namespace
1180
1204
createBucketRequest.SetACL (BucketCannedACL::private_);
1181
1205
CreateBucketOutcome createBucketOutcome = Client->CreateBucket (createBucketRequest);
1182
1206
ASSERT_TRUE (createBucketOutcome.IsSuccess ());
1183
- WaitForBucketToPropagate (fullBucketName);
1207
+ ASSERT_TRUE ( WaitForBucketToPropagate (fullBucketName) );
1184
1208
1185
1209
PutObjectRequest putObjectRequest;
1186
1210
putObjectRequest.SetBucket (fullBucketName);
@@ -1214,7 +1238,7 @@ namespace
1214
1238
createBucketRequest.SetACL (BucketCannedACL::private_);
1215
1239
CreateBucketOutcome createBucketOutcome = Client->CreateBucket (createBucketRequest);
1216
1240
ASSERT_TRUE (createBucketOutcome.IsSuccess ());
1217
- WaitForBucketToPropagate (fullBucketName);
1241
+ ASSERT_TRUE ( WaitForBucketToPropagate (fullBucketName) );
1218
1242
1219
1243
PutObjectRequest putObjectRequest;
1220
1244
putObjectRequest.SetBucket (fullBucketName);
@@ -1243,7 +1267,7 @@ namespace
1243
1267
CreateBucketOutcome createBucketOutcome = Client->CreateBucket (createBucketRequest);
1244
1268
ASSERT_TRUE (createBucketOutcome.IsSuccess ());
1245
1269
1246
- WaitForBucketToPropagate (fullBucketName);
1270
+ ASSERT_TRUE ( WaitForBucketToPropagate (fullBucketName) );
1247
1271
1248
1272
auto objectStream = Aws::MakeShared<Aws::StringStream>(" BucketAndObjectOperationTest" );
1249
1273
*objectStream << " Test Japanese & Chinese Unicode keys" ;
0 commit comments