File size: 1,620 Bytes
b641d3d | 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 | from enum import Enum
class TaskName(str, Enum):
CASCADING_TIMEOUT = "cascading-timeout"
BYZANTINE_QUEUE_FAULT = "byzantine-queue-fault"
DISTRIBUTED_LOCK_STARVATION = "distributed-lock-starvation"
BACKPRESSURE_CASCADE = "backpressure-cascade"
ROUTE_PARTITION = "route-partition"
REGISTRY_CORRUPTION = "registry-corruption"
JOB_GENERATOR_RUNAWAY = "job-generator-runaway"
@classmethod
def parse(cls, value: str) -> "TaskName":
try:
return cls(value)
except ValueError as exc:
raise ValueError(f"Unknown task: {value}") from exc
ALL_TASKS = [task.value for task in TaskName]
# Baseline default: easy + medium + hard (deadlock/starvation included).
DEFAULT_BASELINE_TASKS = [
TaskName.CASCADING_TIMEOUT.value,
TaskName.BYZANTINE_QUEUE_FAULT.value,
TaskName.DISTRIBUTED_LOCK_STARVATION.value,
]
DEFAULT_BASELINE_TASK_ENUMS = [
TaskName.CASCADING_TIMEOUT,
TaskName.BYZANTINE_QUEUE_FAULT,
TaskName.DISTRIBUTED_LOCK_STARVATION,
]
NO_COMMAND_PROVIDED_SENTINEL = "__NO_COMMAND_PROVIDED__"
TASK_MAX_STEPS = {
TaskName.CASCADING_TIMEOUT: 15,
TaskName.BYZANTINE_QUEUE_FAULT: 18,
TaskName.DISTRIBUTED_LOCK_STARVATION: 20,
TaskName.BACKPRESSURE_CASCADE: 20,
TaskName.ROUTE_PARTITION: 20,
TaskName.REGISTRY_CORRUPTION: 18,
TaskName.JOB_GENERATOR_RUNAWAY: 20,
}
DEFAULT_CONFIGS = {
"auth": {"delay_ms": 200},
"gateway": {"auth_timeout_ms": 500},
"worker": {"db_pool_size": 10, "db_write_delay_ms": 0},
"job_generator": {"interval_ms": 333},
"blocked_routes": {"blocked": []},
}
|