Skip to content

Commit 4c624e1

Browse files
committed
add latency-based test
1 parent d10d805 commit 4c624e1

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

tests/test_group.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import contextlib
44
import operator
55
import pickle
6+
import time
67
import warnings
78
from typing import TYPE_CHECKING, Any, Literal
89

@@ -22,6 +23,7 @@
2223
from zarr.errors import ContainsArrayError, ContainsGroupError
2324
from zarr.storage import LocalStore, MemoryStore, StorePath, ZipStore
2425
from zarr.storage.common import make_store_path
26+
from zarr.testing.store import LatencyStore
2527

2628
from .conftest import parse_store
2729

@@ -1484,3 +1486,23 @@ def test_delitem_removes_children(store: Store, zarr_format: ZarrFormat) -> None
14841486
del g1["0"]
14851487
with pytest.raises(KeyError):
14861488
g1["0/0"]
1489+
1490+
1491+
@pytest.mark.parametrize('store', ['memory'], indirect=True)
1492+
def test_group_members_performance(store: MemoryStore) -> None:
1493+
"""
1494+
Test that the performance of Group.members is robust to asynchronous latency
1495+
"""
1496+
get_latency = 0.1
1497+
latency_store = LatencyStore(store, get_latency=get_latency)
1498+
1499+
group = zarr.group(store=latency_store)
1500+
num_groups = 100
1501+
# Create some groups
1502+
for i in range(num_groups):
1503+
group.create_group(f"group{i}")
1504+
1505+
start= time.time()
1506+
members = group.members()
1507+
elapsed = start = time.time()
1508+
assert elapsed < 2 * get_latency

0 commit comments

Comments
 (0)