Skip to main content

Load Testing Hub

Load Testing Hub is a Python library and CLI tool designed to upload performance testing results into the load-testing-hub-api. It provides a convenient connector for reading and transforming Locust reports and sending them to the Load Testing Hub API over HTTP.

Key Features

  • Easy integration with Locust reports (CSV/JSON).
  • Raw Python API for programmatic usage.
  • CLI support for quick uploads from configuration files (YAML or JSON).
  • Pydantic-powered configuration for strict validation and clear error messages.

Installation

pip install load-testing-hub

For development:

git clone https://github.com/Nikita-Filonov/load-testing-hub.git
cd load-testing-hub
pip install -e .

Usage

1. Python API

You can upload Locust results directly from your Python code by using the raw API:

import asyncio
from pathlib import Path

from load_testing_hub import (
    Service,
    Scenario,
    Pipeline,
    upload_locust_report,
    UploadLocustReportParams
)


# Main async function to upload Locust test results
async def main():
    await upload_locust_report(
        UploadLocustReportParams(
            # Base URL of the Load Testing Hub API
            api_url="http://localhost:8000",

            # Information about the service for which results are uploaded
            service=Service(id=1),

            # Scenario metadata (name, configuration file, version, and load parameters)
            scenario=Scenario(
                id=1,
                name="get accounts",  # Scenario name
                file="./scenarios/get_accounts/v1.0.conf",  # Path to scenario config file
                version="v1.0",  # Scenario version
                number_of_users=500,  # Number of virtual users in the test
                runtime_duration="3m"  # Test duration (3 minutes)
            ),

            # CI/CD pipeline that triggered the load test execution
            trigger_pipeline=Pipeline(
                ci_job_url="http://localhost:8001/pipeline/1/job/3",  # URL of the triggering job
                ci_pipeline_url="http://localhost:8001/pipeline/1",  # URL of the triggering pipeline
                ci_project_version="v1.11.0"  # Project version under test
            ),

            # CI/CD pipeline where the load test scenarios are located
            load_tests_pipeline=Pipeline(
                ci_job_url="http://localhost:8001/pipeline/3/job/9",  # URL of the load tests job
                ci_pipeline_url="http://localhost:8001/pipeline/3",  # URL of the load tests pipeline
            ),

            # Paths to Locust report files
            csv_locust_stats_file=Path("locust_stats.csv"),  # Aggregated statistics
            json_locust_ratio_file=Path("locust_ratio.json"),  # Response time percentiles
            csv_locust_exceptions_file=Path("locust_exceptions.csv"),  # Exceptions during test
            csv_locust_stats_history_file=Path("locust_stats_history.csv"),  # Time-series stats
        )
    )


# Run the async main function
asyncio.run(main())

2. CLI Usage

The package provides a built-in CLI command for uploading reports.

Example with YAML configuration

Configuration file (./examples/locust.yaml):

# Base URL of the Load Testing Hub API
api_url: http://localhost:8000

# Information about the service for which results are uploaded
service:
  id: 1  # Unique service identifier

# Scenario metadata
scenario:
  id: 1  # Unique scenario identifier
  name: "get account"  # Scenario name (for reference in the UI or reports)
  file: "./scenarios/get_accounts/v1.0.conf"  # Path to the scenario configuration file
  version: "v1.0"  # Version of the scenario
  number_of_users: 500  # Number of virtual users executed in the test
  runtime_duration: "3m"  # Test runtime duration (3 minutes)

# CI/CD pipeline that triggered the load test execution
trigger_pipeline:
  ci_job_url: "http://localhost:8001/pipeline/1/job/3"  # URL of the triggering job
  ci_pipeline_url: "http://localhost:8001/pipeline/1"  # URL of the triggering pipeline
  ci_project_version: "v1.11.0"  # Project version under test

# CI/CD pipeline where the load test scenarios are located
load_tests_pipeline:
  ci_job_url: "http://localhost:8001/pipeline/3/job/9"  # URL of the load tests job
  ci_pipeline_url: "http://localhost:8001/pipeline/3"  # URL of the load tests pipeline

# Paths to Locust output files generated after test execution
csv_locust_stats_file: "locust_stats.csv"  # Aggregated test statistics
json_locust_ratio_file: "locust_ratio.json"  # Percentile and ratio statistics
csv_locust_exceptions_file: "locust_exceptions.csv"  # Exceptions captured during the test
csv_locust_stats_history_file: "locust_stats_history.csv"  # Time-series performance stats

Command:

load-testing-hub upload-locust-report --yaml-config=./examples/locust.yaml

Example with JSON configuration

Configuration file (./examples/locust.json):

{
  "api_url": "http://localhost:8000",
  "service": {
    "id": 1
  },
  "scenario": {
    "id": 1,
    "name": "get account",
    "file": "./scenarios/get_accounts/v1.0.conf",
    "version": "v1.0",
    "number_of_users": 500,
    "runtime_duration": "3m"
  },
  "trigger_pipeline": {
    "ci_job_url": "http://localhost:8001/pipeline/1/job/3",
    "ci_pipeline_url": "http://localhost:8001/pipeline/1",
    "ci_project_version": "v1.11.0"
  },
  "load_tests_pipeline": {
    "ci_job_url": "http://localhost:8001/pipeline/3/job/9",
    "ci_pipeline_url": "http://localhost:8001/pipeline/3"
  },
  "csv_locust_stats_file": "locust_stats.csv",
  "json_locust_ratio_file": "locust_ratio.json",
  "csv_locust_exceptions_file": "locust_exceptions.csv",
  "csv_locust_stats_history_file": "locust_stats_history.csv"
}

Command:

load-testing-hub upload-locust-report --json-config=./examples/locust.json

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

load_testing_hub-0.6.0.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

load_testing_hub-0.6.0-py3-none-any.whl (36.1 kB view details)

Uploaded Python 3

File details

Details for the file load_testing_hub-0.6.0.tar.gz.

File metadata

  • Download URL: load_testing_hub-0.6.0.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for load_testing_hub-0.6.0.tar.gz
Algorithm Hash digest
SHA256 0141babe790c1c1bbff580f72266072ec5ad7dfc7f86423ea476fb25a3209758
MD5 d85c188a9a7beaea42efad5a12eb0141
BLAKE2b-256 e3f224e8794b835c75c28783c02f0e0ba896e2e8c420801415d2ae2f203c23ed

See more details on using hashes here.

File details

Details for the file load_testing_hub-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for load_testing_hub-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5d137e0240b4fc6f40148f3d72b49c29057c52370e13529ad8fde6b75c051c1f
MD5 10b3152bb35dbe9ab48e9bd8701c0f43
BLAKE2b-256 6606aa07494bf99d9845467a3b8e362e1fd1b93c4330d7fece3f3637823b506f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page