@@ -128,6 +128,48 @@ def create_resc_hierarchy (self, Root, Leaf = None):
128128 self .sess .resources .remove (Leaf )
129129 self .sess .resources .remove (Root )
130130
131+
132+ def _helper_for_testing_that_replicate_obeys_default_resource_setting__issue_459 (self , get_session_function ):
133+ with self .create_simple_resc () as newResc1 :
134+ with self .create_simple_resc () as newResc2 :
135+ number_of_replicas_on_resc = lambda d ,resc : len ([r for r in d .replicas if r .resource_name == resc ])
136+ session = get_session_function (default_resource = newResc2 )
137+ try :
138+ d = session .data_objects .create ('/tempZone/home/rods/thingie2' , resource = newResc1 )
139+ self .assertEqual (number_of_replicas_on_resc (session .data_objects .get (d .path ), newResc1 ), 1 )
140+ self .assertEqual (number_of_replicas_on_resc (session .data_objects .get (d .path ), newResc2 ), 0 )
141+ d .replicate ()
142+ self .assertEqual (number_of_replicas_on_resc (session .data_objects .get (d .path ), newResc2 ), 1 )
143+ finally :
144+ if d : session .data_objects .unlink (d .path , force = True )
145+
146+ def test_with_session_cloned_in_core_that_replicate_obeys_default_resource_setting__issue_459 (self ):
147+ self ._helper_for_testing_that_replicate_obeys_default_resource_setting__issue_459 (self ._session_cloned_from_existing )
148+
149+ def test_with_session_spawned_from_client_environment_that_replicate_obeys_default_resource_setting__issue_459 (self ):
150+ self ._helper_for_testing_that_replicate_obeys_default_resource_setting__issue_459 (self ._session_from_client_environment )
151+
152+ def _session_cloned_from_existing (self , default_resource ):
153+ sess = self .sess .clone ()
154+ if default_resource :
155+ sess .default_resource = default_resource
156+ return sess
157+
158+ def _session_from_client_environment (self , default_resource ):
159+ env_file = getattr (self .sess , 'env_file' )
160+ if env_file is None :
161+ self .skipTest ('no environment file to modify' )
162+ with helpers .file_backed_up (env_file ):
163+ with open (env_file ,'r+' ) as fp :
164+ j = json .load (fp )
165+ if default_resource :
166+ j ['irods_default_resource' ] = default_resource
167+ fp .seek (0 )
168+ json .dump (j ,fp )
169+ fp .truncate ()
170+ return helpers .make_session ()
171+
172+
131173 def test_data_write_stales_other_repls__ref_irods_5548 (self ):
132174 test_data = 'irods_5548_testfile'
133175 test_coll = '/{0.zone}/home/{0.username}' .format (self .sess )
0 commit comments