Skip to content

Commit 5dacbaa

Browse files
committed
test(test_no_memory_leak): use WeakSet
1 parent 781d3c8 commit 5dacbaa

File tree

1 file changed

+8
-29
lines changed

1 file changed

+8
-29
lines changed

tests/test_tgdb/test_entities/test_horizon/test_horizon.py

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import Any
2-
from uuid import UUID
2+
from uuid import UUID, uuid4
3+
from weakref import WeakSet
34

45
from pytest import fixture, mark, raises
56

@@ -574,47 +575,25 @@ def test_no_memory_leak(horizon: Horizon) -> None:
574575
...
575576
"""
576577

577-
transaction_counter = 0
578-
579-
old_transaction_init = SerializableTransaction.__init__
580-
581-
def new_transaction_init(*args: Any, **kwargs: Any) -> None: # noqa: ANN401
582-
old_transaction_init(*args, **kwargs)
583-
584-
nonlocal transaction_counter
585-
transaction_counter += 1
586-
587-
def transaction_del(self: Transaction, *args: Any, **kwargs: Any) -> None: # noqa: ARG001,ANN401
588-
nonlocal transaction_counter
589-
transaction_counter -= 1
590-
591-
SerializableTransaction.__init__ = new_transaction_init # type: ignore[method-assign]
592-
SerializableTransaction.__del__ = transaction_del # type: ignore[attr-defined]
578+
total = 100
593579

594580
time = 0
595581

596-
for xid_int in range(1, 101):
582+
for xid_int in range(1, total + 1):
597583
time += 1
598584

599585
horizon.start_transaction(
600586
time, UUID(int=xid_int), IsolationLevel.serializable_read_and_write
601587
)
602588

603-
assert transaction_counter == 100
589+
live_transactions = WeakSet(horizon._serializable_transaction_map.values()) # noqa: SLF001
590+
assert len(live_transactions) == total
604591

605-
for xid in reversed(range(1, 101)):
592+
for xid in reversed(range(1, total + 1)):
606593
time += 1
607594
commit = horizon.commit_transaction(time, UUID(int=xid), [])
608595

609596
time += 1
610597
horizon.complete_commit(time, commit.xid)
611598

612-
time += 1
613-
horizon.start_transaction(
614-
time, UUID(int=200), IsolationLevel.serializable_read_and_write
615-
)
616-
617-
SerializableTransaction.__init__ = old_transaction_init # type: ignore[method-assign]
618-
del SerializableTransaction.__del__ # type: ignore[attr-defined]
619-
620-
assert transaction_counter == 1
599+
assert not live_transactions

0 commit comments

Comments
 (0)