-
Notifications
You must be signed in to change notification settings - Fork 72
/
Copy pathtest_garbage_collection.py
76 lines (54 loc) · 2.48 KB
/
test_garbage_collection.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import viser
import viser._client_autobuild
def test_remove_scene_node() -> None:
"""Test that viser's internal message buffer is cleaned up properly when we
remove scene nodes."""
# def test_server_port_is_freed():
# Mock the client autobuild to avoid building the client.
viser._client_autobuild.ensure_client_is_built = lambda: None
server = viser.ViserServer()
internal_message_dict = server._websock_server._broadcast_buffer.message_from_id
orig_len = len(internal_message_dict)
for i in range(50):
server.scene.add_frame(f"/frame_{i}")
assert len(internal_message_dict) > orig_len
server.scene.reset()
assert len(internal_message_dict) > orig_len
server._run_garbage_collector(force=True)
assert len(internal_message_dict) == orig_len
def test_remove_gui_element() -> None:
"""Test that viser's internal message buffer is cleaned up properly when we
remove GUI elements."""
# def test_server_port_is_freed():
# Mock the client autobuild to avoid building the client.
viser._client_autobuild.ensure_client_is_built = lambda: None
server = viser.ViserServer()
internal_message_dict = server._websock_server._broadcast_buffer.message_from_id
orig_len = len(internal_message_dict)
for i in range(50):
server.gui.add_button(f"Button {i}")
with server.gui.add_folder("Buttons in folder"):
for i in range(50):
server.gui.add_button(f"Button {i}")
assert len(internal_message_dict) > orig_len
server.gui.reset()
assert len(internal_message_dict) > orig_len
server._run_garbage_collector(force=True)
assert len(internal_message_dict) == orig_len
def test_remove_gui_in_modal() -> None:
"""Test that viser's internal message buffer is cleaned up properly when we
remove GUI elements."""
# def test_server_port_is_freed():
# Mock the client autobuild to avoid building the client.
viser._client_autobuild.ensure_client_is_built = lambda: None
server = viser.ViserServer()
internal_message_dict = server._websock_server._broadcast_buffer.message_from_id
orig_len = len(internal_message_dict)
with server.gui.add_modal("Buttons in folder") as modal:
for i in range(50):
server.gui.add_button(f"Button {i}")
assert len(internal_message_dict) > orig_len
modal.close()
assert len(internal_message_dict) > orig_len
server._run_garbage_collector(force=True)
assert len(internal_message_dict) == orig_len