@@ -3565,3 +3565,73 @@ def test_account_metadata_sync():
35653565 check_users_eq (source_conn , target_conn )
35663566 check_groups_eq (source_conn , target_conn )
35673567 check_oidc_providers_eq (source_conn , target_conn )
3568+
3569+
3570+ @attr ('copy_object' )
3571+ def test_copy_object_same_bucket ():
3572+ zonegroup = realm .master_zonegroup ()
3573+ zonegroup_conns = ZonegroupConns (zonegroup )
3574+ primary = zonegroup_conns .rw_zones [0 ]
3575+ secondary = zonegroup_conns .rw_zones [1 ]
3576+
3577+ bucket = primary .create_bucket (gen_bucket_name ())
3578+ log .debug ('created bucket=%s' , bucket .name )
3579+
3580+ objname = 'dummy'
3581+
3582+ # upload a dummy object and wait for sync.
3583+ k = new_key (primary , bucket , objname )
3584+ k .set_contents_from_string ('foo' )
3585+ zonegroup_meta_checkpoint (zonegroup )
3586+
3587+ zonegroup_data_checkpoint (zonegroup_conns )
3588+ log .debug ('created object=%s' , objname )
3589+
3590+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
3591+
3592+ # copy object on primary zone
3593+ primary .s3_client .copy_object (Bucket = bucket .name ,
3594+ CopySource = bucket .name + '/' + objname ,
3595+ Key = objname + '-copy1' )
3596+
3597+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
3598+
3599+ # copy object on secondary zone
3600+ secondary .s3_client .copy_object (Bucket = bucket .name ,
3601+ Key = objname + '-copy2' ,
3602+ CopySource = bucket .name + '/' + objname )
3603+
3604+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
3605+
3606+ @attr ('copy_object' )
3607+ def test_copy_object_different_bucket ():
3608+ zonegroup = realm .master_zonegroup ()
3609+ zonegroup_conns = ZonegroupConns (zonegroup )
3610+ primary = zonegroup_conns .rw_zones [0 ]
3611+ secondary = zonegroup_conns .rw_zones [1 ]
3612+
3613+ source_bucket = primary .create_bucket (gen_bucket_name ())
3614+ log .debug ('created bucket=%s' , source_bucket .name )
3615+
3616+ objname = 'dummy'
3617+
3618+ # upload a dummy object and wait for sync.
3619+ k = new_key (primary , source_bucket , objname )
3620+ k .set_contents_from_string ('foo' )
3621+ zonegroup_meta_checkpoint (zonegroup )
3622+
3623+ zonegroup_bucket_checkpoint (zonegroup_conns , source_bucket .name )
3624+
3625+ # create destination bucket
3626+ dest_bucket = primary .create_bucket (gen_bucket_name ())
3627+ log .debug ('created bucket=%s' , dest_bucket .name )
3628+
3629+ zonegroup_meta_checkpoint (zonegroup )
3630+
3631+ # copy object on primary zone
3632+ primary .s3_client .copy_object (Bucket = dest_bucket .name ,
3633+ Key = objname + '-copy' ,
3634+ CopySource = source_bucket .name + '/' + objname )
3635+
3636+ zonegroup_bucket_checkpoint (zonegroup_conns , dest_bucket .name )
3637+
0 commit comments