@@ -5898,3 +5898,115 @@ def test_copy_obj_perm_check_between_zonegroups(zonegroup):
58985898 CopySource = {'Bucket' : source_bucket .name , 'Key' : objname },
58995899 Key = objname )
59005900 assert e .response ['Error' ]['Code' ] == 'AccessDenied'
5901+
5902+
5903+ @attr ('object_tagging' )
5904+ def test_create_delete_obj_tagging ():
5905+ zonegroup = realm .master_zonegroup ()
5906+ zonegroup_conns = ZonegroupConns (zonegroup )
5907+ primary = zonegroup_conns .rw_zones [0 ]
5908+ secondary = zonegroup_conns .rw_zones [1 ]
5909+
5910+ bucket = primary .create_bucket (gen_bucket_name ())
5911+ log .debug ('created bucket=%s' , bucket .name )
5912+
5913+ objname = 'dummy'
5914+
5915+ # upload a dummy object and wait for sync.
5916+ k = new_key (primary , bucket , objname )
5917+ k .set_contents_from_string ('foo' )
5918+ zonegroup_meta_checkpoint (zonegroup )
5919+
5920+ zonegroup_data_checkpoint (zonegroup_conns )
5921+ log .debug ('created object=%s' , objname )
5922+
5923+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
5924+
5925+ # put object tagging on primary zone
5926+ primary .s3_client .put_object_tagging (Bucket = bucket .name ,
5927+ Key = objname ,
5928+ Tagging = {
5929+ 'TagSet' : [
5930+ {
5931+ 'Key' : 'key1' ,
5932+ 'Value' : 'value1'
5933+ },
5934+ ]})
5935+
5936+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
5937+
5938+ response = secondary .s3_client .get_object_tagging (Bucket = bucket .name ,
5939+ Key = objname )
5940+ assert (response ['TagSet' ][0 ]['Key' ] == 'key1' )
5941+ assert (response ['TagSet' ][0 ]['Value' ] == 'value1' )
5942+
5943+ primary .s3_client .delete_object_tagging (Bucket = bucket .name ,
5944+ Key = objname )
5945+
5946+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
5947+
5948+ response = secondary .s3_client .get_object_tagging (Bucket = bucket .name ,
5949+ Key = objname )
5950+
5951+ assert (response ['TagSet' ] == [])
5952+
5953+ @attr ('object_tagging' )
5954+ def test_create_delete_versioned_obj_tagging ():
5955+
5956+ zonegroup = realm .master_zonegroup ()
5957+ zonegroup_conns = ZonegroupConns (zonegroup )
5958+
5959+ primary = zonegroup_conns .rw_zones [0 ]
5960+ secondary = zonegroup_conns .rw_zones [1 ]
5961+
5962+ bucket = primary .create_bucket (gen_bucket_name ())
5963+ log .debug ('created bucket=%s' , bucket .name )
5964+ zonegroup_meta_checkpoint (zonegroup )
5965+
5966+ # upload an initial object
5967+ objname = 'dummy'
5968+ key = new_key (primary , bucket , objname )
5969+ key .set_contents_from_string ('bar' )
5970+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
5971+
5972+ # enable versioning
5973+ bucket .configure_versioning (True )
5974+ zonegroup_meta_checkpoint (zonegroup )
5975+
5976+ # upload object
5977+ k = new_key (primary , bucket , objname )
5978+ k .set_contents_from_string ('foo' )
5979+ log .debug ('created new version id=%s' , k .version_id )
5980+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
5981+
5982+ # put object tagging on primary zone
5983+ primary .s3_client .put_object_tagging (Bucket = bucket .name ,
5984+ Key = objname ,
5985+ VersionId = k .version_id ,
5986+ Tagging = {
5987+ 'TagSet' : [
5988+ {
5989+ 'Key' : 'key1' ,
5990+ 'Value' : 'value1'
5991+ },
5992+ ]})
5993+
5994+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
5995+
5996+ response = secondary .s3_client .get_object_tagging (Bucket = bucket .name ,
5997+ Key = objname ,
5998+ VersionId = k .version_id )
5999+ assert (response ['TagSet' ][0 ]['Key' ] == 'key1' )
6000+ assert (response ['TagSet' ][0 ]['Value' ] == 'value1' )
6001+
6002+ primary .s3_client .delete_object_tagging (Bucket = bucket .name ,
6003+ Key = objname ,
6004+ VersionId = k .version_id )
6005+
6006+ zonegroup_bucket_checkpoint (zonegroup_conns , bucket .name )
6007+
6008+ response = secondary .s3_client .get_object_tagging (Bucket = bucket .name ,
6009+ Key = objname ,
6010+ VersionId = k .version_id )
6011+
6012+ assert (response ['TagSet' ] == [])
0 commit comments