Skip to content

Commit 05efdf4

Browse files
update readme
Signed-off-by: Christoph Jerolimov <jerolimov+git@gmail.com>
1 parent 49e10b5 commit 05efdf4

1 file changed

Lines changed: 85 additions & 20 deletions

File tree

README.md

Lines changed: 85 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,64 @@
1-
# Some [RHDH](https://developers.redhat.com/rhdh) loadtest experiments 🧪
1+
# [RHDH](https://developers.redhat.com/rhdh) loadtests 🧪
22

3-
## Create instances with Helm
3+
This repository contains ArgoCD resources, Helm charts and other resources
4+
to setup different RHDH versions on Kubernetes with up to 200 dynamic (frontend) plugins
5+
and 50k catalog entities.
46

5-
To create all test instances at once (`rhdh-17`, `rhdh-18`, `rhdh-19`, `rhdh-110`, and `rhdh-next`) run
7+
Available versions: `rhdh-17`, `rhdh-18`, `rhdh-19`, `rhdh-110`, `rhdh-110-nfs`, and `rhdh-next`
8+
9+
## Create test instances with Helm
10+
11+
To create 1.9 and above:
612

713
```
814
make install-all
915
```
1016

17+
or for 1.7 up to 1.8:
18+
19+
```
20+
make install-legacy
21+
```
22+
1123
or for just one version use:
1224

1325
```
1426
cd helm/rhdh-110 && make install
1527
```
1628

17-
## Create instances with Argo CD
29+
## Create test instances with Argo CD
1830

19-
Start an OpenShift cluster with OpenShift GitOps operator.
20-
21-
To create all test apps (currently 4) run:
31+
Start an OpenShift cluster with OpenShift GitOps operator. To create all test apps (currently 4) run:
2232

2333
```bash
2434
oc apply -f argocd/app-project.yaml
25-
oc apply -f argocd/app-of-apps.yaml
35+
oc apply -f argocd/app-of-default-apps.yaml # for 1.9 and newer
36+
oc apply -f argocd/app-of-legacy-apps.yaml # for 1.7 and 1.8
2637
```
2738

2839
or, without cloning:
2940

3041
```bash
3142
oc apply -f https://raw.githubusercontent.com/christoph-jerolimov/rhdh-loadtests/refs/heads/main/argocd/app-project.yaml
32-
oc apply -f https://raw.githubusercontent.com/christoph-jerolimov/rhdh-loadtests/refs/heads/main/argocd/app-of-apps.yaml
43+
oc apply -f https://raw.githubusercontent.com/christoph-jerolimov/rhdh-loadtests/refs/heads/main/argocd/app-of-default-apps.yaml
44+
oc apply -f https://raw.githubusercontent.com/christoph-jerolimov/rhdh-loadtests/refs/heads/main/argocd/app-of-legacy-apps.yaml
3345
```
3446

35-
Or apply just a single application (current available: `rhdh-17`, `rhdh-18`, `rhdh-19`, `rhdh-110`, and `rhdh-next`):
47+
Or create just a single application:
3648

3749
```bash
3850
oc apply -f argocd/app-project.yaml
39-
oc apply -f argocd/app-of-apps/rhdh-19.yaml
51+
oc apply -f argocd/default-apps/rhdh-110-nfs.yaml
4052
```
4153

4254
or, without cloning:
4355

4456
```bash
4557
oc apply -f https://raw.githubusercontent.com/christoph-jerolimov/rhdh-loadtests/refs/heads/main/argocd/app-project.yaml
46-
oc apply -f https://raw.githubusercontent.com/christoph-jerolimov/rhdh-loadtests/refs/heads/main/argocd/app-of-apps/rhdh-19.yaml
58+
oc apply -f https://raw.githubusercontent.com/christoph-jerolimov/rhdh-loadtests/refs/heads/main/argocd/default-apps/rhdh-110-nfs.yaml
4759
```
4860

49-
## Catalog entities
61+
## Test catalog entities
5062

5163
Add and adjust the following catalog snippet into your `app-config.yaml`.
5264

@@ -80,22 +92,24 @@ upstream:
8092
- allow: [Template]
8193
```
8294
83-
## Plugins
95+
## RBAC
96+
97+
TODO
98+
99+
## Dynamic Plugins (Example container images for different RHDH versions)
84100
85101
The `plugins` folder contains multiple Backstage workspaces for different Backstage versions (1.42, 1.45 and 1.48).
86102
Each workspace contains currently two plugins.
87103
One that adds a new page to the main navigation and one that adds a new tab to the catalog details page.
88104

89-
The script **TODO/WIP** build these plugin 100 times with indepenend `pluginIds` to integrate these plugins multiple times into RHDH.
105+
The scripts folder contains scripts to build these plugins 100 times with indepenend `pluginIds` to integrate these plugins multiple times into RHDH.
90106

91107
They are published as one container image under [quay.io/jerolimov/rhdh-loadtest-plugins](https://quay.io/repository/jerolimov/rhdh-loadtest-plugins?tab=tags) with a tag for each combinaton. For example:
92108

93109
* `quay.io/jerolimov/rhdh-loadtest-plugins:bs_1.42_page-n`
94110
* `quay.io/jerolimov/rhdh-loadtest-plugins:bs_1.42_catalog-tab-n`
95111

96-
The Backstage version can be replaced with `bs_1.42`, `bs_1.45` or `bs_1.45`.
97-
98-
**TODO/WIP**: The `-n` can be replaced with a 1 to 100.
112+
The Backstage version can be replaced with `bs_1.42`, `bs_1.45` or `bs_1.45` and the `-n` can be replaced with a 1 to 100 so that up to 200 dynamic (frontend) plugins can be loaded for each RHDH release.
99113

100114
To integrate these into your local setup apply these RHDH dynamic plugin configurations:
101115

@@ -154,6 +168,57 @@ global:
154168

155169
You can pick up a complete example in [helm/rhdh-18/values.yaml](helm/rhdh-18/values.yaml).
156170

157-
## RBAC
171+
## Load Generator
158172

159-
TODO
173+
The `load-generator` directory contains a Playwright-based load generator that simulates user interactions with RHDH.
174+
175+
It is not a replacement for dedicated performance testing — the goal is to produce reproducible, lightweight load tests that can run on smaller test environments.
176+
177+
The test scenario (`guest-login-home-catalog.spec.ts`) runs a configurable number of loops (default: 100), each performing these steps:
178+
179+
1. **Login** — Opens the RHDH instance and waits for the guest "Enter" button
180+
2. **Home** — Clicks "Enter" and verifies the home page loads (Welcome, Get started, Explore cards)
181+
3. **Catalog** — Navigates to the Catalog page and verifies all 1000 components are listed
182+
4. **Component** — Opens "Component 1" and verifies its details (About, Group 1, System 1, Catalog Tab 1)
183+
5. **Catalog Tab** — Clicks the "Catalog Tab 1" tab and verifies the plugin content loads
184+
6. **Page Plugin** — Navigates to "Page 1" via the sidebar and verifies the plugin page loads
185+
186+
After the test completes, an analysis script (`scripts/analyse.mts`) parses the Playwright JSON report and prints per-step statistics (count, avg, p95, min, max).
187+
188+
Example output:
189+
190+
```
191+
Step Count Avg P95 Min Max
192+
---------------------------------------------------------------------------
193+
login 100 6661ms 7387ms 6194ms 8564ms
194+
home 100 1419ms 1905ms 1087ms 1997ms
195+
catalog 100 1361ms 1454ms 1011ms 1861ms
196+
component 100 689ms 776ms 543ms 1214ms
197+
catalog-tab-n 100 982ms 1071ms 425ms 2054ms
198+
page-n 100 982ms 1424ms 881ms 1916ms
199+
all 100 12126ms 13590ms 10686ms 14515ms
200+
```
201+
202+
### Run locally
203+
204+
```shell
205+
cd load-generator
206+
npm install
207+
npm run install-browser
208+
export RHDH_URL=https://your-rhdh-instance.example.com
209+
npm test
210+
```
211+
212+
### Run as a container
213+
214+
```shell
215+
cd load-generator
216+
podman build . --tag load-generator
217+
podman run -e RHDH_URL=https://your-rhdh-instance.example.com load-generator
218+
```
219+
220+
### Configuration
221+
222+
| Environment variable | Description |
223+
|---|---|
224+
| `RHDH_URL` (or `PLAYWRIGHT_BASEURL`) | Base URL of the RHDH instance to test |

0 commit comments

Comments
 (0)