tressi
Version:
Deterministic load testing for API performance validation.
91 lines (67 loc) • 3.67 kB
Markdown
# Lifecycle Management
Tressi executes tests through a structured lifecycle designed to ensure stable load generation and accurate performance data. This process manages the transition from initial resource allocation to final data persistence, providing a consistent environment for both short bursts and long duration soak tests.
This document covers:
- **Initialization & Load Progression**: Resource allocation and managing the transition from ramp up to steady state.
- **Early Exit Monitoring**: Selective termination of endpoints based on error thresholds.
- **Finalization & Export**: Graceful shutdown and data consolidation for final reporting.
### Tressi Lifecycle
The following diagram illustrates the interaction between the runner, worker threads, and the target system during a standard execution run:
```mermaid
sequenceDiagram
participant U as User (CLI/UI)
participant R as Runner
participant W as Worker Threads
participant T as Target System
participant D as Local Database (UI Only)
participant F as Filesystem (CLI Export)
Note over U, F: 1. Initialize Test
U->>R: Start Test
R->>W: Spawn Workers & Distribute Endpoints
W->>R: Ready Signal
R->>U: Test Initialized
Note over U, F: 2. Ramp Up / 3. Steady State
W->>T: Generate Load
T-->>W: Responses
W->>R: Aggregate Metrics
R->>U: Stream Live Metrics
opt UI Only
R->>D: Persist Interval Metrics (for Charts)
end
Note over U, F: 4. Monitor Early Exit
alt Threshold Exceeded
R->>W: Stop Specific Endpoint
else All Endpoints Stopped
R->>W: Terminate All Workers
end
Note over U, F: 5. Finalize & Export
W->>W: Finish Active Requests
W->>R: Final Metrics & Samples
alt UI Only
R->>D: Persist Final Summary
else CLI Only
R->>F: Export Results (JSON/XLSX)
end
R->>U: Test Complete
```
### 1. Initialize Test
Tressi prepares the execution environment to ensure predictable load generation:
- **Resource Allocation**: Spawns worker threads based on configuration.
- **Endpoint Distribution**: Maps target URLs to specific workers for balanced load.
- **Communication Layer**: Establishes the internal bus for metrics aggregation.
### 2. Ramp Up
- **Load Progression**: Increases request rate linearly from zero to the target RPS.
- **Traffic Stabilization**: Prevents system shock and allows target environments to scale, ensuring metrics reflect sustained performance rather than cold start spikes.
### 3. Steady State
- **Constant Load**: Maintains the target request rate for the test duration.
- **Asynchronous Execution**: Workers generate concurrent requests to sustain the configured arrival rate.
- **Live Monitoring**: Aggregates performance data for immediate visibility into system behavior.
### 4. Monitor Early Exit
- **Threshold Evaluation**: Stops individual endpoints if they exceed Error Rate Thresholds or return blacklisted status codes.
- **Selective Termination**: Allows healthy endpoints to continue testing while protecting failing systems from further load.
- **Test Termination**: The entire test run terminates if all endpoints have been stopped or all worker threads reach a terminal state.
### 5. Finalize & Export
- **Graceful Shutdown**: Workers complete active requests before terminating.
- **Data Consolidation**: Merges latency distribution data and response samples into a final summary.
- **Persistence**: Saves results to the local database or exports to the filesystem.
### Next Steps
Review [Interpreting Results](./04-interpreting-results.md) to learn how to analyze your test metrics.