test_system_state_registry.py
2.12 KB
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
from __future__ import annotations
from apps.web_api.runtime import system_state
def test_registry_prepare_start_and_shutdown_flow():
registry = system_state.SystemStateRegistry()
assert registry.snapshot() == {
"started": False,
"starting": False,
"shutdown_requested": False,
}
allowed, message = registry.prepare_start()
assert allowed is True
assert message == "\u7cfb\u7edf\u542f\u52a8\u4e2d"
assert registry.snapshot()["starting"] is True
registry.set_state(started=True, starting=False)
assert registry.snapshot() == {
"started": True,
"starting": False,
"shutdown_requested": False,
}
assert registry.request_shutdown() is True
assert registry.request_shutdown() is False
assert registry.snapshot()["shutdown_requested"] is True
def test_module_level_wrappers_remain_compatible(monkeypatch):
registry = system_state.SystemStateRegistry()
assert registry.request_shutdown() is True
monkeypatch.setattr(system_state, "SYSTEM_STATE_REGISTRY", registry)
system_state.set_system_state(started=True, starting=False)
assert system_state.get_system_state() == {
"started": True,
"starting": False,
"shutdown_requested": False,
}
system_state.set_system_state(started=False, starting=False)
assert system_state.mark_shutdown_requested() is True
assert system_state.mark_shutdown_requested() is False
allowed, message = system_state.prepare_system_start()
assert allowed is True
assert message == "\u7cfb\u7edf\u542f\u52a8\u4e2d"
assert system_state.get_system_state() == {
"started": False,
"starting": True,
"shutdown_requested": False,
}
def test_prepare_system_start_blocks_when_already_starting(monkeypatch):
registry = system_state.SystemStateRegistry()
registry.set_state(starting=True)
monkeypatch.setattr(system_state, "SYSTEM_STATE_REGISTRY", registry)
allowed, message = system_state.prepare_system_start()
assert allowed is False
assert message == "\u7cfb\u7edf\u6b63\u5728\u542f\u52a8\uff0c\u8bf7\u7a0d\u5019"