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

1from datetime import datetime 

2 

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 

6 

7ALERT_TRESHOLD = config.app.ALERT_TRESHOLD 

8 

9 

10def case( 

11 current: NodeState, 

12 lastSeenAt: datetime, 

13 event: EventType | None, 

14 expected: NodeState, 

15): 

16 

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}" 

22 

23 

24def test_get_state(): 

25 # fmt: off 

26 

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) 

34 

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) 

43 

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) 

52 

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) 

61 

62 # fmt: on