Time strategies
provide.testkit.chaos.time_strategies
¶
Time-based chaos strategies for testing temporal behavior.
Provides Hypothesis strategies for generating chaotic time patterns, clock skew, timeout scenarios, and timing-related edge cases.
Functions¶
clock_skew
¶
Generate clock skew scenarios for distributed system testing.
Simulates clock drift, NTP sync issues, and timezone problems.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
draw
|
DrawFn
|
Hypothesis draw function |
required |
max_skew
|
float
|
Maximum clock skew in seconds |
300.0
|
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Dictionary containing skew configuration |
Example
Source code in provide/testkit/chaos/time_strategies.py
deadline_scenarios
¶
deadline_scenarios(
draw: DrawFn,
min_deadline: float = 0.1,
max_deadline: float = 10.0,
) -> dict[str, Any]
Generate deadline-based test scenarios.
Creates scenarios with operations that may or may not meet their deadlines.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
draw
|
DrawFn
|
Hypothesis draw function |
required |
min_deadline
|
float
|
Minimum deadline in seconds |
0.1
|
max_deadline
|
float
|
Maximum deadline in seconds |
10.0
|
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Dictionary containing deadline scenario configuration |
Example
Source code in provide/testkit/chaos/time_strategies.py
jitter_patterns
¶
jitter_patterns(
draw: DrawFn,
base_interval: float = 1.0,
max_jitter_percent: float = 50.0,
) -> list[float]
Generate network-like timing jitter patterns.
Simulates variable latency and timing uncertainty.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
draw
|
DrawFn
|
Hypothesis draw function |
required |
base_interval
|
float
|
Base time interval in seconds |
1.0
|
max_jitter_percent
|
float
|
Maximum jitter as percentage of base interval |
50.0
|
Returns:
| Type | Description |
|---|---|
list[float]
|
List of intervals with jitter applied |
Example
Source code in provide/testkit/chaos/time_strategies.py
rate_burst_patterns
¶
rate_burst_patterns(
draw: DrawFn,
max_burst_size: int = 1000,
max_duration: float = 10.0,
) -> list[tuple[float, int]]
Generate traffic burst patterns for rate limiting tests.
Returns a list of (timestamp, request_count) representing burst patterns.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
draw
|
DrawFn
|
Hypothesis draw function |
required |
max_burst_size
|
int
|
Maximum number of requests in a burst |
1000
|
max_duration
|
float
|
Maximum duration of burst pattern in seconds |
10.0
|
Returns:
| Type | Description |
|---|---|
list[tuple[float, int]]
|
List of (time_offset, request_count) tuples |
Example
Source code in provide/testkit/chaos/time_strategies.py
retry_backoff_patterns
¶
Generate retry and backoff patterns for resilience testing.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
draw
|
DrawFn
|
Hypothesis draw function |
required |
max_retries
|
int
|
Maximum number of retries |
10
|
Returns:
| Type | Description |
|---|---|
dict[str, Any]
|
Dictionary containing retry configuration |
Example
Source code in provide/testkit/chaos/time_strategies.py
time_advances
¶
time_advances(
draw: DrawFn,
min_advance: float = 0.0,
max_advance: float = 3600.0,
allow_backwards: bool = False,
) -> float
Generate time progression patterns for time manipulation testing.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
draw
|
DrawFn
|
Hypothesis draw function |
required |
min_advance
|
float
|
Minimum time advance in seconds |
0.0
|
max_advance
|
float
|
Maximum time advance in seconds |
3600.0
|
allow_backwards
|
bool
|
Allow negative time advances (backwards jumps) |
False
|
Returns:
| Type | Description |
|---|---|
float
|
Time advance value in seconds (can be negative if allowed) |
Example
Source code in provide/testkit/chaos/time_strategies.py
timeout_patterns
¶
timeout_patterns(
draw: DrawFn,
min_timeout: float = 0.01,
max_timeout: float = 60.0,
include_none: bool = True,
) -> float | None
Generate realistic timeout scenarios.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
draw
|
DrawFn
|
Hypothesis draw function |
required |
min_timeout
|
float
|
Minimum timeout value in seconds |
0.01
|
max_timeout
|
float
|
Maximum timeout value in seconds |
60.0
|
include_none
|
bool
|
Whether to include None (no timeout) as a possibility |
True
|
Returns:
| Type | Description |
|---|---|
float | None
|
Timeout value in seconds, or None |