chore(repo): initialize team collaboration repository
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
from flashops_control.engine.recovery import RecoveryContext, next_recovery_level
|
||||
from flashops_control.enums import RecoveryLevel, RecoveryTrigger
|
||||
|
||||
|
||||
def test_integrity_failure_always_freezes():
|
||||
level = next_recovery_level(
|
||||
RecoveryContext(
|
||||
trigger=RecoveryTrigger.DATA_INTEGRITY,
|
||||
attempt=0,
|
||||
agent_online=True,
|
||||
host_network_online=True,
|
||||
oob_online=True,
|
||||
)
|
||||
)
|
||||
assert level == RecoveryLevel.FREEZE
|
||||
|
||||
|
||||
def test_offline_oob_removes_destructive_recovery_levels():
|
||||
level = next_recovery_level(
|
||||
RecoveryContext(
|
||||
trigger=RecoveryTrigger.HEARTBEAT_LOST,
|
||||
attempt=2,
|
||||
agent_online=True,
|
||||
host_network_online=True,
|
||||
oob_online=False,
|
||||
)
|
||||
)
|
||||
assert level == RecoveryLevel.FREEZE
|
||||
|
||||
|
||||
def test_recovery_escalates_in_order():
|
||||
context = dict(
|
||||
trigger=RecoveryTrigger.HEARTBEAT_LOST,
|
||||
agent_online=True,
|
||||
host_network_online=True,
|
||||
oob_online=True,
|
||||
)
|
||||
assert next_recovery_level(RecoveryContext(attempt=0, **context)) == RecoveryLevel.AGENT_SOFT
|
||||
assert next_recovery_level(RecoveryContext(attempt=1, **context)) == RecoveryLevel.OS_REBOOT
|
||||
assert next_recovery_level(RecoveryContext(attempt=2, **context)) == RecoveryLevel.OOB_RESET
|
||||
Reference in New Issue
Block a user