Skip to content

Conversation

@lowhung
Copy link
Collaborator

@lowhung lowhung commented Oct 10, 2025

What?

K6-based performance testing suite covering Acropolis Cardano node API endpoints.

Test Types:

  • Smoke Test (1m): Quick validation that all endpoints are functional
  • Load Test (16m): Sustained load testing (not applicable at the moment)
  • Stress Test (13m): Progressive load increase (not applicable at the moment, but can stay as an example)

Endpoints Tested For Milestone Completion:

  • Accounts (1 endpoint)
  • Epochs (2 endpoints)
  • Pools (5 endpoints)

See src/config/shelley-era-endpoints.ts for more information about the endpoints tested.

Test Data:

  • Stake addresses: Active addresses
  • Pools: Mix of active/retired pools

Notes:

  • Smoke test uniformly tests every endpoint the same number of times in a 1 minute span. In the future, we will properly define the distribution/real-world usage through a data-driven approach. Hopefully Marek / Pi will give me more information there.
  • Custom metrics per endpoint category
  • Configurable performance thresholds (p95 < 800ms, error rate < 1%)

Example Dashboard Report
https://acropolisk6s.grafana.net/public-dashboards/bce534bdc1654b7f975fb2e802e2166e

- Disable governance and asset scenarios in smoke, soak, load, and stress tests.
- Adjust weights for account and pool scenarios.
- Introduce `shelley-era-endpoints` and `shelley-test-data` configs for Shelley-specific test coverage.
- Remove response time checks in `checks.ts` to focus solely on functional correctness.
- Modify thresholds to accommodate increased HTTP request duration.
- Update types to include optional fields for future implementation of snapshot-dependent tests.
- Modularize test scenarios for epochs, pools, governance, and assets.
- Introduce `apiClient` for consistent API requests and automated metrics tracking.
- Simplify `checks` by removing the batch response check helper.
- Adjust smoke, stress, load, and soak tests to include modularized scenarios.
- Update test weights and configurations for improved clarity and usage simulation.
- Remove unused types and helpers for cleaner codebase.
- Update smoke test configuration to use `externally-controlled` executor.
- Remove unused random test methods from scenarios.
- Add new counters for endpoint requests and errors in `metrics.ts`.
- Enhance `randomSleep` helper with integer range support.
- Adjust pool-related Shelley test data by removing inactive pool IDs.
- Refine load test user scaling and weight distribution.
- Improve API client for better error and metric tracking.
- Rename `testAccountEndpoints` to `testGetAccount` for improved clarity.
- Update smoke, stress, load, and soak tests to use the renamed function.
- Simplify `README.md` by removing deprecated report generation steps and clarifying result handling.
- Remove redundant comments and annotations from thresholds and `shelley-era-endpoints`.
- Relocate `buildUrl` to `helpers.ts` and update imports across scenarios.
- Improve readability of helper functions with consistent formatting.
- Simplify and consolidate Shelley-specific endpoint configurations.
Copy link
Collaborator

@whankinsiv whankinsiv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We discussed potentially making these tests more useable by including the omnibus startup and a configuration file with the storage options which are needed for the tests. This can be addressed in a follow up PR if not already provided by the Blockfrost test suite.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants