diff --git a/.changes/nextrelease/smoke_cleanup_waiter.json b/.changes/nextrelease/smoke_cleanup_waiter.json new file mode 100644 index 0000000000..a9da7c9f7e --- /dev/null +++ b/.changes/nextrelease/smoke_cleanup_waiter.json @@ -0,0 +1,7 @@ +[ + { + "type": "bugfix", + "category": "Test\\Integ", + "description": "Add waiter to S3 integration test to prevent failed bucket deletions on cleanup." + } +] diff --git a/tests/Integ/S3Context.php b/tests/Integ/S3Context.php index 756a4bfff6..8ae2cfe8d5 100644 --- a/tests/Integ/S3Context.php +++ b/tests/Integ/S3Context.php @@ -85,7 +85,20 @@ public static function createTestBucket() public static function deleteTestBucket() { $client = self::getSdk()->createS3(); + $result = $client->listObjectsV2([ + 'Bucket' => self::getResourceName() + ]); + + // Delete objects & wait until no longer available before deleting bucket $client->deleteMatchingObjects(self::getResourceName(), '', '//'); + foreach ($result['Contents'] as $object) { + $client->waitUntil('ObjectNotExists', [ + 'Bucket' => self::getResourceName(), + 'Key' => $object['Key'] + ]); + } + + // Delete bucket and wait until bucket is no longer available $client->deleteBucket(['Bucket' => self::getResourceName()]); $client->waitUntil('BucketNotExists', [ 'Bucket' => self::getResourceName(),