Skip to content

Commit 1d50eae

Browse files
committed
Have both Savers exist concurrently in isolation tests
1 parent 023f629 commit 1d50eae

File tree

1 file changed

+75
-88
lines changed

1 file changed

+75
-88
lines changed

tests/test_issue_125_custom_checkpoint_prefixes.py

Lines changed: 75 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -177,51 +177,44 @@ def test_custom_checkpoint_prefix_isolation_sync(
177177
redis_url, checkpoint_prefix="app1_checkpoint"
178178
) as saver1:
179179
saver1.setup()
180-
checkpoint1: Checkpoint = {
181-
"v": 1,
182-
"id": checkpoint_id,
183-
"ts": "2024-01-01T00:00:00Z",
184-
"channel_values": {"app": "app1", "value": "from_app1"},
185-
"channel_versions": {"app": "1"},
186-
"versions_seen": {"agent": {"app": "1"}},
187-
"pending_sends": [],
188-
}
189-
saver1.put(config, checkpoint1, simple_metadata, {})
190180

191-
# Saver 2 with prefix "app2_checkpoint"
192-
with RedisSaver.from_conn_string(
193-
redis_url, checkpoint_prefix="app2_checkpoint"
194-
) as saver2:
195-
saver2.setup()
196-
checkpoint2: Checkpoint = {
197-
"v": 1,
198-
"id": checkpoint_id,
199-
"ts": "2024-01-01T00:00:00Z",
200-
"channel_values": {"app": "app2", "value": "from_app2"},
201-
"channel_versions": {"app": "1"},
202-
"versions_seen": {"agent": {"app": "1"}},
203-
"pending_sends": [],
204-
}
205-
saver2.put(config, checkpoint2, simple_metadata, {})
206-
207-
# Verify isolation - each saver should only see its own data
208-
with RedisSaver.from_conn_string(
209-
redis_url, checkpoint_prefix="app1_checkpoint"
210-
) as saver1:
211-
saver1.setup()
212-
retrieved1 = saver1.get_tuple(config)
213-
assert retrieved1 is not None
214-
assert retrieved1.checkpoint["channel_values"]["app"] == "app1"
215-
assert retrieved1.checkpoint["channel_values"]["value"] == "from_app1"
216-
217-
with RedisSaver.from_conn_string(
218-
redis_url, checkpoint_prefix="app2_checkpoint"
219-
) as saver2:
220-
saver2.setup()
221-
retrieved2 = saver2.get_tuple(config)
222-
assert retrieved2 is not None
223-
assert retrieved2.checkpoint["channel_values"]["app"] == "app2"
224-
assert retrieved2.checkpoint["channel_values"]["value"] == "from_app2"
181+
# Saver 2 with prefix "app2_checkpoint"
182+
with RedisSaver.from_conn_string(
183+
redis_url, checkpoint_prefix="app2_checkpoint"
184+
) as saver2:
185+
saver2.setup()
186+
187+
checkpoint1: Checkpoint = {
188+
"v": 1,
189+
"id": checkpoint_id,
190+
"ts": "2024-01-01T00:00:00Z",
191+
"channel_values": {"app": "app1", "value": "from_app1"},
192+
"channel_versions": {"app": "1"},
193+
"versions_seen": {"agent": {"app": "1"}},
194+
"pending_sends": [],
195+
}
196+
saver1.put(config, checkpoint1, simple_metadata, {})
197+
198+
checkpoint2: Checkpoint = {
199+
"v": 1,
200+
"id": checkpoint_id,
201+
"ts": "2024-01-01T00:00:00Z",
202+
"channel_values": {"app": "app2", "value": "from_app2"},
203+
"channel_versions": {"app": "1"},
204+
"versions_seen": {"agent": {"app": "1"}},
205+
"pending_sends": [],
206+
}
207+
saver2.put(config, checkpoint2, simple_metadata, {})
208+
209+
retrieved1 = saver1.get_tuple(config)
210+
assert retrieved1 is not None
211+
assert retrieved1.checkpoint["channel_values"]["app"] == "app1"
212+
assert retrieved1.checkpoint["channel_values"]["value"] == "from_app1"
213+
214+
retrieved2 = saver2.get_tuple(config)
215+
assert retrieved2 is not None
216+
assert retrieved2.checkpoint["channel_values"]["app"] == "app2"
217+
assert retrieved2.checkpoint["channel_values"]["value"] == "from_app2"
225218

226219

227220
def test_custom_checkpoint_prefix_with_special_characters(
@@ -435,51 +428,45 @@ async def test_custom_checkpoint_prefix_isolation_async(
435428
redis_url, checkpoint_prefix="async_app1_checkpoint"
436429
) as saver1:
437430
await saver1.setup()
438-
checkpoint1: Checkpoint = {
439-
"v": 1,
440-
"id": checkpoint_id,
441-
"ts": "2024-01-01T00:00:00Z",
442-
"channel_values": {"app": "app1", "value": "from_app1"},
443-
"channel_versions": {"app": "1"},
444-
"versions_seen": {"agent": {"app": "1"}},
445-
"pending_sends": [],
446-
}
447-
await saver1.aput(config, checkpoint1, simple_metadata, {})
448431

449-
# Saver 2 with prefix "async_app2_checkpoint"
450-
async with AsyncRedisSaver.from_conn_string(
451-
redis_url, checkpoint_prefix="async_app2_checkpoint"
452-
) as saver2:
453-
await saver2.setup()
454-
checkpoint2: Checkpoint = {
455-
"v": 1,
456-
"id": checkpoint_id,
457-
"ts": "2024-01-01T00:00:00Z",
458-
"channel_values": {"app": "app2", "value": "from_app2"},
459-
"channel_versions": {"app": "1"},
460-
"versions_seen": {"agent": {"app": "1"}},
461-
"pending_sends": [],
462-
}
463-
await saver2.aput(config, checkpoint2, simple_metadata, {})
464-
465-
# Verify isolation - each saver should only see its own data
466-
async with AsyncRedisSaver.from_conn_string(
467-
redis_url, checkpoint_prefix="async_app1_checkpoint"
468-
) as saver1:
469-
await saver1.setup()
470-
retrieved1 = await saver1.aget_tuple(config)
471-
assert retrieved1 is not None
472-
assert retrieved1.checkpoint["channel_values"]["app"] == "app1"
473-
assert retrieved1.checkpoint["channel_values"]["value"] == "from_app1"
474-
475-
async with AsyncRedisSaver.from_conn_string(
476-
redis_url, checkpoint_prefix="async_app2_checkpoint"
477-
) as saver2:
478-
await saver2.setup()
479-
retrieved2 = await saver2.aget_tuple(config)
480-
assert retrieved2 is not None
481-
assert retrieved2.checkpoint["channel_values"]["app"] == "app2"
482-
assert retrieved2.checkpoint["channel_values"]["value"] == "from_app2"
432+
# Saver 2 with prefix "async_app2_checkpoint"
433+
async with AsyncRedisSaver.from_conn_string(
434+
redis_url, checkpoint_prefix="async_app2_checkpoint"
435+
) as saver2:
436+
await saver2.setup()
437+
438+
checkpoint1: Checkpoint = {
439+
"v": 1,
440+
"id": checkpoint_id,
441+
"ts": "2024-01-01T00:00:00Z",
442+
"channel_values": {"app": "app1", "value": "from_app1"},
443+
"channel_versions": {"app": "1"},
444+
"versions_seen": {"agent": {"app": "1"}},
445+
"pending_sends": [],
446+
}
447+
await saver1.aput(config, checkpoint1, simple_metadata, {})
448+
449+
450+
checkpoint2: Checkpoint = {
451+
"v": 1,
452+
"id": checkpoint_id,
453+
"ts": "2024-01-01T00:00:00Z",
454+
"channel_values": {"app": "app2", "value": "from_app2"},
455+
"channel_versions": {"app": "1"},
456+
"versions_seen": {"agent": {"app": "1"}},
457+
"pending_sends": [],
458+
}
459+
await saver2.aput(config, checkpoint2, simple_metadata, {})
460+
461+
retrieved1 = await saver1.aget_tuple(config)
462+
assert retrieved1 is not None
463+
assert retrieved1.checkpoint["channel_values"]["app"] == "app1"
464+
assert retrieved1.checkpoint["channel_values"]["value"] == "from_app1"
465+
466+
retrieved2 = await saver2.aget_tuple(config)
467+
assert retrieved2 is not None
468+
assert retrieved2.checkpoint["channel_values"]["app"] == "app2"
469+
assert retrieved2.checkpoint["channel_values"]["value"] == "from_app2"
483470

484471

485472
@pytest.mark.asyncio

0 commit comments

Comments
 (0)