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": []},
}