Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(tests): initial performance test #2828

Merged
merged 14 commits into from
Aug 20, 2024
81 changes: 42 additions & 39 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pnpm-workspace.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
packages:
- 'packages/*'
- 'localenv/mock-account-servicing-entity'
- 'test/integration'
- 'test/*'
- 'bruno/collections/Rafiki'
30 changes: 30 additions & 0 deletions test/performance/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Performance Tests

This package contains a script that will determine the performance of Rafiki by repeatedly making a series of requests to a Rafiki instance to create several kinds of resources (receivers, quotes, outgoing payments).

## Prerequisites

- [Grafana k6](https://grafana.com/docs/k6/latest/set-up/install-k6/)

- [Grafana k6](https://grafana.com/docs/k6/latest/) is used to run performance test scripts against Rafiki.

- [Running local playground for Rafiki](../../localenv/README.md)
- It is recommended to start the local playground with Telemetry running in order to see the impact of a performance test.

If the local environment isn't running it may be started by using the command `pnpm localenv:compose:telemetry:up`.

## Run tests

To run the performance tests (of which there is currently only one):

```
pnpm --filter performance run-tests
```

The test makes a few checks to verify the local playground is running, then runs the k6 binary on the [create-outgoing-payments.js](./scripts/create-outgoing-payments.js) script.

The test can also be run inside of a Docker container on the same Docker network as the Local Playground:

```
pnpm --filter performance run-tests-docker
Copy link
Contributor

Choose a reason for hiding this comment

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

this script is useful such that we don't need to set the host names?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I took this from the description of the issue:

Since the local playground is within docker, we will need to run this script in docker as well, e.g.
docker run --rm -i grafana/k6 run - script.js

(Though not setting the host names is a benefit).

```
18 changes: 18 additions & 0 deletions test/performance/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "performance",
"version": "1.0.0",
"description": "",
"scripts": {
"test": "k6 run ./scripts/create-outgoing-payments.js",
"test-docker": "docker run --rm --network=rafiki_rafiki -v ./scripts:/scripts -i grafana/k6 run /scripts/create-outgoing-payments.js",
"run-tests": "./scripts/run-tests.sh",
"run-tests-docker": "./scripts/run-tests.sh --docker",
"hostile": "hostile"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"hostile": "^1.4.0"
}
}
Loading
Loading