Skip to content

Commit ef690d7

Browse files
committed
added readme to CI inputs
1 parent ec4c1d0 commit ef690d7

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Benchmark Configuration Guide
2+
3+
This directory contains configuration files for the benchmark CI workflow.
4+
5+
## CI Workflow Inputs
6+
7+
### Predefined Configs
8+
9+
| Input | Description | Options |
10+
| ------------------ | ------------------------------------ | ----------------------------------------------------------------------------------------- |
11+
| `primary_driver` | Client library to benchmark | `spring-data-valkey`, `spring-data-redis`, `valkey-glide`, `jedis`, `lettuce`, `redisson` |
12+
| `secondary_driver` | Underlying driver for spring-data-\* | `valkey-glide`, `jedis`, `lettuce`, `none` |
13+
| `topology` | Server topology | `standalone`, `cluster` |
14+
| `workload` | Test scenario | `example-workload`, `example-workload-single-client` |
15+
16+
### Custom Configs
17+
18+
For custom use cases, you can provide custom JSON configs directly:
19+
20+
| Input | Description |
21+
| ------------------------ | -------------------------------------------------------- |
22+
| `custom_driver_config` | Custom driver JSON (overrides driver/topology selection) |
23+
| `custom_workload_config` | Custom workload JSON (overrides workload selection) |
24+
25+
### Version Inputs
26+
27+
| Input | Description |
28+
| ------------------- | ----------------------------------------------------------------------------------------------------------- |
29+
| `primary_version` | Version of primary driver. Leave empty for `spring-data-valkey` (uses branch HEAD) |
30+
| `secondary_version` | Version or commit ID of secondary driver. Commit IDs (7-40 hex chars) trigger source build for valkey-glide |
31+
| `job_id_prefix` | Optional prefix for job ID (e.g., `nightly`, `pr-123`) |
32+
33+
## How Config Selection Works
34+
35+
The CI workflow maps your input selections to JSON config files using a naming convention.
36+
37+
### Driver Config Resolution
38+
39+
The workflow constructs the driver config filename from your inputs:
40+
41+
| Primary Driver | Secondary Driver | Topology | Resolved File |
42+
| -------------------- | ---------------- | ------------ | -------------------------------------------------- |
43+
| `valkey-glide` | (ignored) | `standalone` | `example-valkey-glide-standalone.json` |
44+
| `valkey-glide` | (ignored) | `cluster` | `example-valkey-glide-cluster.json` |
45+
| `spring-data-valkey` | `valkey-glide` | `standalone` | `example-spring-data-valkey-glide-standalone.json` |
46+
| `spring-data-valkey` | `valkey-glide` | `cluster` | `example-spring-data-valkey-glide-cluster.json` |
47+
| `spring-data-valkey` | `jedis` | `cluster` | `example-spring-data-valkey-jedis-cluster.json` |
48+
49+
**Pattern:**
50+
51+
- Standalone drivers: `example-{primary_driver}-{topology}.json`
52+
- Spring-data drivers: `example-{primary_driver}-{secondary_driver}-{topology}.json`
53+
- Note: `valkey-glide` is shortened to `glide` in filenames
54+
55+
### Workload Config Resolution
56+
57+
The `workload` input maps directly to a file:
58+
59+
- `example-workload``workloads/example-workload.json`
60+
- `example-workload-single-client``workloads/example-workload-single-client.json`
61+
62+
### Custom Configs
63+
64+
When you provide `custom_driver_config` or `custom_workload_config`, the workflow:
65+
66+
1. Writes your JSON to a temp file
67+
2. Validates it with `jq`
68+
3. Uses it instead of the predefined config
69+
70+
This allows testing configurations not in the predefined set.
71+
72+
For the full specification of config formats to use when constructing custom configs, see the JSON schema files:
73+
74+
- **Driver config schema:** [schemas/driver-config.schema.json](schemas/driver-config.schema.json)
75+
- **Workload config schema:** [schemas/workload-config.schema.json](schemas/workload-config.schema.json)
76+
77+
### Key config rules:
78+
79+
- `spring-data-valkey` and `spring-data-redis` require `secondary_driver_id`
80+
- `spring-data-redis` does NOT support `valkey-glide` as secondary driver
81+
- Standalone drivers (`jedis`, `lettuce`, `valkey-glide`, `redisson`) ignore `secondary_driver_id`

0 commit comments

Comments
 (0)