|
| 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