Coverage for tests/test_microservice_websocket/test_utils/test_util_node.py: 100%
35 statements
« prev ^ index » next coverage.py v7.0.0, created at 2022-12-20 14:31 +0000
« prev ^ index » next coverage.py v7.0.0, created at 2022-12-20 14:31 +0000
1from datetime import datetime
3from microservice_websocket.app.config import config
4from microservice_websocket.app.utils.enums import EventType, NodeState
5from microservice_websocket.app.utils.node import update_state
7ALERT_TRESHOLD = config.app.ALERT_TRESHOLD
10def case(
11 current: NodeState,
12 lastSeenAt: datetime,
13 event: EventType | None,
14 expected: NodeState,
15):
17 assert (
18 got := update_state(current, lastSeenAt, event)
19 ) == expected, f"Error from state '{current}' with timedelta \
20 '{datetime.now() - lastSeenAt}' and event '{event}'. \
21 Expected {expected} but got {got}"
24def test_get_state():
25 # fmt: off
27 # From error
28 case(NodeState.ERROR, datetime.now(), EventType.START_REC, NodeState.RUNNING)
29 case(NodeState.ERROR, datetime.now(), EventType.STOP_REC, NodeState.READY)
30 case(NodeState.ERROR, datetime.now(), EventType.RAISE_ALERT, NodeState.ALERT_READY)
31 case(NodeState.ERROR, datetime.now(), EventType.HANDLE_ALERT, NodeState.READY)
32 case(NodeState.ERROR, datetime.now(), EventType.KEEP_ALIVE, NodeState.READY)
33 case(NodeState.ERROR, datetime.now(), EventType.ON_LAUNCH, NodeState.READY)
35 # From ready
36 case(NodeState.READY, datetime.now(), EventType.START_REC, NodeState.RUNNING)
37 case(NodeState.READY, datetime.now(), EventType.STOP_REC, NodeState.READY)
38 case(NodeState.READY, datetime.now(), EventType.RAISE_ALERT, NodeState.ALERT_READY)
39 case(NodeState.READY, datetime.now(), EventType.HANDLE_ALERT, NodeState.READY)
40 case(NodeState.READY, datetime.now(), EventType.KEEP_ALIVE, NodeState.READY)
41 case(NodeState.READY, datetime.now(), EventType.ON_LAUNCH, NodeState.READY)
42 case(NodeState.READY, datetime(2020, 6, 1, 3, 2, 1), None, NodeState.ERROR)
44 # From running
45 case(NodeState.RUNNING, datetime.now(), EventType.START_REC, NodeState.RUNNING)
46 case(NodeState.RUNNING, datetime.now(), EventType.STOP_REC, NodeState.READY)
47 case(NodeState.RUNNING, datetime.now(), EventType.RAISE_ALERT, NodeState.ALERT_READY)
48 case(NodeState.RUNNING, datetime.now(), EventType.HANDLE_ALERT, NodeState.READY)
49 case(NodeState.RUNNING, datetime.now(), EventType.KEEP_ALIVE, NodeState.RUNNING)
50 case(NodeState.RUNNING, datetime.now(), EventType.ON_LAUNCH, NodeState.READY)
51 case(NodeState.RUNNING, datetime(2020, 6, 1, 3, 2, 1), None, NodeState.ERROR)
53 # From alert_ready
54 case(NodeState.ALERT_READY, datetime.now(), EventType.START_REC, NodeState.RUNNING)
55 case(NodeState.ALERT_READY, datetime.now(), EventType.STOP_REC, NodeState.READY)
56 case(NodeState.ALERT_READY, datetime.now(), EventType.RAISE_ALERT, NodeState.ALERT_READY)
57 case(NodeState.ALERT_READY, datetime.now(), EventType.HANDLE_ALERT, NodeState.READY)
58 case(NodeState.ALERT_READY, datetime.now(), EventType.KEEP_ALIVE, NodeState.ALERT_READY)
59 case(NodeState.ALERT_READY, datetime.now(), EventType.ON_LAUNCH, NodeState.READY)
60 case(NodeState.ALERT_READY, datetime(2020, 6, 1, 3, 2, 1), None, NodeState.ERROR)
62 # fmt: on