result-indexer-scaled-1-1000rps.json
Overview
The `result-indexer-scaled-1-1000rps.json` file is a structured JSON data file representing performance testing results, likely produced by a load testing tool such as **k6**. It captures detailed metrics, configuration options, and state information for a test run simulating a high throughput scenario with up to 1000 requests per second (RPS).
This file serves as a **performance report snapshot** that indexes various runtime metrics, thresholds, and test environment settings. It is designed to be consumed by performance analysis tools or integrated into CI/CD pipelines for monitoring application behavior under stress.
Detailed Explanation
Top-Level Structure
Key | Description |
|---|---|
`root_group` | Metadata and grouping container for the test scenario elements, currently empty in this file. |
Configuration options used during the test run, such as statistics summary and display flags. | |
Captures the runtime environment state during the test, including terminal capabilities and test duration. | |
`metrics` | Core performance metrics collected during the test, including gauges, counters, rates, and trends. |
root_group
Purpose: Represents the hierarchical grouping of checks and subgroups related to the performance test.
Properties:
name(string): Name of the group (empty here).path (string): Path or identifier for the group (empty here).
id(string): Unique identifier (MD5 hash).groups(array): Nested subgroups (empty).checks(array): Assertions or checks made during the test (empty).
*Usage:* This can be extended in more complex tests to organize checks and sub-tests logically.
options
Purpose: Contains configuration options that influence how the test results are summarized and displayed.
Properties:
summaryTrendStats (array of strings): List of statistical measures computed for trend metrics, e.g., average, min, max, and percentiles.
summaryTimeUnit (string): Defines the time unit for summarizing metrics (empty here, implying default).
noColor(boolean): Flag indicating if color output is disabled in the terminal.
*Usage Example:* Configure output formatting and statistical summaries for reporting tools or CLI output customization.
state
Purpose: Reflects the environment and state flags at the time of the test.
Properties:
isStdErrTTY(boolean): Whether standard error supports TTY (interactive terminal).testRunDurationMs (float): Duration of the test run in milliseconds (300,204.42 ms ≈ 5 minutes).
isStdOutTTY(boolean): Whether standard output supports TTY.
*Usage:* Used by reporting or visualization components to tailor output formatting or timing calculations.
metrics
This is the most extensive section, containing detailed performance data grouped by metric name.
Metric Types
gauge: Represents instantaneous values or current states (e.g., number of virtual users).
counter: Represents cumulative counts over time (e.g., total data sent).
rate: Represents rates or ratios (e.g., failure rate).
trend: Represents statistical trends over time, including percentiles and averages (e.g., request duration).
Example Metric Breakdown
**Metric:** `http_req_duration{status:200}`
Type: trend
Contains: time
Purpose: Measures the duration of HTTP requests that returned status 200.
Thresholds: Ensures the max duration is non-negative.
Values:
max: 15,105.78 ms (max observed request duration)p(90): 345.95 ms (90th percentile)p(95): 1142.76 ms (95th percentile)p(99): 3828.83 ms (99th percentile)count: 299,873 requestsavg: 330.15 ms (average)min: 124.00 msmed: 178.22 ms (median)
*Usage:* Critical for understanding response time distributions at scale.
Important Metrics Summary
Metric Name | Type | Description | Notable Values |
|---|---|---|---|
`vus_max` | gauge | Max virtual users during test | max: 2591 |
`http_req_failed` | rate | Failure rate of HTTP requests | rate: 0 (all failed) |
`iteration_duration` | trend | Duration of each test iteration | avg: 331.21 ms |
`data_received` | counter | Amount of data received (bytes) | count: 143,303,056 bytes |
`http_req_tls_handshaking` | trend | Time spent in TLS handshake | avg: 0.52 ms |
`http_req_blocked` | trend | Time spent waiting to be processed by the client | avg: 0.78 ms |
`http_reqs` | counter | Total HTTP requests sent | count: 299,873 |
`dropped_iterations` | counter | Number of iterations dropped due to resource constraints | count: 128 |
Implementation Details and Algorithms
The file structure follows a nested JSON schema typical of performance testing results.
Percentiles such as
p(90),p(95), andp(99)are used to provide insights into the distribution tails of response times.The
thresholdsproperty under some metrics defines pass/fail criteria for validating SLAs or performance goals.The
valuesobject under each metric summarizes raw data into statistical aggregates, likely generated by the testing tool after collecting raw samples.Counters and gauges track cumulative and instantaneous states, respectively, which are essential for monitoring resource usage and load.
No explicit algorithms are embedded in this file; it is purely a data report. The generation of these statistics would be done by the load testing engine that produced this file.
Interaction with Other System Components
This JSON file acts as a **data interchange format** between the load testing execution engine and:
Result analysis tools: Software components that parse this file to generate graphs, dashboards, or alerts.
CI/CD pipelines: Where automated tests are executed, and results are validated against performance thresholds.
Monitoring systems: Which may ingest this data for historical trending or anomaly detection.
Reporting interfaces: Web UIs or command-line tools that provide human-readable summaries and insights.
It is a **read-only artifact** used post-test, not involved in direct runtime logic or application behavior.
Usage Example
To analyze the 95th percentile HTTP request duration from this file, a script could:
import json
with open('result-indexer-scaled-1-1000rps.json') as f:
data = json.load(f)
p95_duration = data['metrics']['http_req_duration{status:200}']['values']['p(95)']
print(f"95th percentile request duration: {p95_duration} ms")
This allows developers or performance engineers to quickly extract key metrics programmatically.
Visual Diagram: Metrics Structure Flowchart
flowchart TD
A[Metrics] --> B[gauge]
A --> C[counter]
A --> D[rate]
A --> E[trend]
B --> B1["vus_max"]
B --> B2["vus"]
C --> C1["data_received"]
C --> C2["data_sent"]
C --> C3["http_reqs"]
C --> C4["iterations"]
C --> C5["dropped_iterations"]
D --> D1["http_req_failed"]
D --> D2["http_req_failed{scenario:rps}"]
E --> E1["http_req_duration"]
E --> E2["http_req_duration{status:200}"]
E --> E3["iteration_duration"]
E --> E4["http_req_tls_handshaking"]
E --> E5["http_req_receiving"]
E --> E6["http_req_sending"]
E --> E7["http_req_blocked"]
E --> E8["http_req_connecting"]
E --> E9["http_req_waiting"]
E --> E10["http_req_duration{scenario:rps}"]
**Diagram Explanation:** The diagram shows the four main metric types (`gauge`, `counter`, `rate`, `trend`) branching out to specific metric names contained in the file. This hierarchical view helps understand how metrics are categorized and related.
Summary
The `result-indexer-scaled-1-1000rps.json` file is a **performance test result report** capturing detailed metrics, runtime state, and configuration options for a high throughput load testing scenario. It is an essential artifact for analyzing system performance, validating SLAs, and integrating with monitoring and reporting tools. The file’s structure is standardized for easy parsing and extensibility within performance engineering workflows.