@@ -9661,12 +9661,38 @@ def verify_object(client, bucket, key, content=None, sc=None):
96619661 assert body == content
96629662
96639663def verify_transition(client, bucket, key, sc=None, version=None):
9664- if (version != None):
9665- response = client.head_object(Bucket=bucket, Key=key, VersionId=version)
9666- else:
9667- response = client.head_object(Bucket=bucket, Key=key)
9664+ transition_not_completed = True
9665+ retry = 0
9666+ while (transition_not_completed and retry < 4):
9667+ if (version != None):
9668+ response = client.head_object(Bucket=bucket, Key=key, VersionId=version)
9669+ else:
9670+ response = client.head_object(Bucket=bucket, Key=key)
9671+ if response['ContentLength'] == 0:
9672+ transition_not_completed = False
9673+ time.sleep(2)
9674+ retry = retry + 1
96689675
96699676 # Iterate over the contents to find the StorageClass
9677+ assert response['StorageClass'] == sc
9678+
9679+ def verify_restore(client, bucket, key, sc=None, version=None):
9680+ restore_not_completed = True
9681+ retry = 0
9682+ while (restore_not_completed and retry < 4):
9683+ if (version != None):
9684+ response = client.head_object(Bucket=bucket, Key=key, VersionId=version)
9685+ else:
9686+ response = client.head_object(Bucket=bucket, Key=key)
9687+ # checks for temporary restore
9688+ if 'Restore' in response:
9689+ restore_complete_string = "ongoing-request=\"false\""
9690+ if restore_complete_string in response['Restore']:
9691+ restore_not_completed = False
9692+ # checks for permanent restore
9693+ elif response['ContentLength'] != 0:
9694+ restore_not_completed = False
9695+ # Iterate over the contents to find the StorageClass
96709696 if 'StorageClass' in response:
96719697 assert response['StorageClass'] == sc
96729698 else: # storage class should be STANDARD
@@ -9700,7 +9726,6 @@ def test_lifecycle_cloud_transition():
97009726 assert len(init_keys) == 4
97019727
97029728 lc_interval = get_lc_debug_interval()
9703-
97049729 # Wait for first expiration (plus fudge to handle the timer window)
97059730 time.sleep(10*lc_interval)
97069731 expire1_keys = list_bucket_storage_class(client, bucket_name)
@@ -9719,7 +9744,7 @@ def test_lifecycle_cloud_transition():
97199744
97209745 cloud_client = get_cloud_client()
97219746
9722- time.sleep(12 *lc_interval)
9747+ time.sleep(2 *lc_interval)
97239748 expire1_key1_str = prefix + keys[0]
97249749 verify_object(cloud_client, target_path, expire1_key1_str, keys[0], target_sc)
97259750
@@ -9995,7 +10020,7 @@ def test_restore_object_temporary():
999510020
999610021 lc_interval = get_lc_debug_interval()
999710022 restore_interval = get_restore_debug_interval()
9998- time.sleep(10 * lc_interval)
10023+ time.sleep(2 * lc_interval)
999910024
1000010025 # Verify object is transitioned
1000110026 verify_transition(client, bucket, key, cloud_sc)
@@ -10005,7 +10030,7 @@ def test_restore_object_temporary():
1000510030 time.sleep(5)
1000610031
1000710032 # Verify object is restored temporarily
10008- verify_transition (client, bucket, key, cloud_sc)
10033+ verify_restore (client, bucket, key, cloud_sc)
1000910034 response = client.head_object(Bucket=bucket, Key=key)
1001010035 assert response['ContentLength'] == len(data)
1001110036 time.sleep(2 * (restore_interval + lc_interval))
@@ -10037,7 +10062,7 @@ def test_restore_object_permanent():
1003710062 client.put_bucket_lifecycle_configuration(Bucket=bucket, LifecycleConfiguration=lifecycle)
1003810063
1003910064 lc_interval = get_lc_debug_interval()
10040- time.sleep(10 * lc_interval)
10065+ time.sleep(2 * lc_interval)
1004110066
1004210067 # Verify object is transitioned
1004310068 verify_transition(client, bucket, key, cloud_sc)
@@ -10046,7 +10071,7 @@ def test_restore_object_permanent():
1004610071 client.restore_object(Bucket=bucket, Key=key, RestoreRequest={})
1004710072 time.sleep(5)
1004810073 # Verify object is restored permanently
10049- verify_transition (client, bucket, key, 'STANDARD')
10074+ verify_restore (client, bucket, key, 'STANDARD')
1005010075 response = client.head_object(Bucket=bucket, Key=key)
1005110076 assert response['ContentLength'] == len(data)
1005210077
@@ -10073,15 +10098,15 @@ def test_read_through():
1007310098 client.put_bucket_lifecycle_configuration(Bucket=bucket, LifecycleConfiguration=lifecycle)
1007410099
1007510100 lc_interval = get_lc_debug_interval()
10076- restore_interval = get_read_through_days ()
10077- time.sleep(10 * lc_interval)
10101+ restore_interval = get_restore_debug_interval ()
10102+ time.sleep(2 * lc_interval)
1007810103
1007910104 # Check the storage class after transitioning
1008010105 verify_transition(client, bucket, key, cloud_sc)
1008110106
1008210107 # Restore the object using read_through request
1008310108 allow_readthrough = get_allow_read_through()
10084- if (allow_readthrough != None and allow_readthrough == "true" ):
10109+ if (allow_readthrough != None and allow_readthrough):
1008510110 response = client.get_object(Bucket=bucket, Key=key)
1008610111 time.sleep(2)
1008710112 assert response['ContentLength'] == len(data)
0 commit comments