@@ -210,11 +210,17 @@ async def test_s3_driver_standalone_activity_input_key(
210210 start_to_close_timeout = timedelta (seconds = 5 ),
211211 )
212212 keys = await _list_keys (aioboto3_client )
213- # Input and output are the same LARGE bytes, so they deduplicate to one key.
214- assert len (keys ) == 1
215- # Keyed under the activity, not a workflow.
216- assert f"/ns/default/at/large_io_activity/ai/{ activity_id } /ri/null/" in keys [0 ]
217- assert "/wt/" not in keys [0 ]
213+ # Input and output are the same LARGE bytes but stored under different keys.
214+ assert len (keys ) == 2
215+ # Both keyed under the activity, not a workflow.
216+ assert all (
217+ f"/ns/default/at/large_io_activity/ai/{ activity_id } /ri/" in k for k in keys
218+ )
219+ assert all ("/wt/" not in k for k in keys )
220+ # Client-side store does not have run ID information
221+ assert sum (1 for k in keys if "/ri/null/" in k ) == 1
222+ # Worker-side store does have run ID information
223+ assert sum (1 for k in keys if "/ri/null/" not in k ) == 1
218224
219225
220226async def test_s3_driver_standalone_activity_output_key (
@@ -238,7 +244,8 @@ async def test_s3_driver_standalone_activity_output_key(
238244 keys = await _list_keys (aioboto3_client )
239245 # Only the output is large; keyed under the activity.
240246 assert len (keys ) == 1
241- assert f"/ns/default/at/large_output_activity/ai/{ activity_id } /ri/null/" in keys [0 ]
247+ assert f"/ns/default/at/large_output_activity/ai/{ activity_id } /ri/" in keys [0 ]
248+ assert "/ri/null/" not in keys [0 ]
242249 assert "/wt/" not in keys [0 ]
243250
244251
0 commit comments