|
| 1 | +# Complete Configuration Options Guide |
| 2 | + |
| 3 | +This guide demonstrates all possible configuration options using `example_complete_features.json`. |
| 4 | + |
| 5 | +## Machine Configuration Options |
| 6 | + |
| 7 | +### 1. Single-Type Machine (Traditional) |
| 8 | +```json |
| 9 | +{ |
| 10 | + "name": "single-type-machine", |
| 11 | + "capabilities": { |
| 12 | + "sut": { |
| 13 | + "priority": 1, |
| 14 | + "profiles": ["single-type-basic"], |
| 15 | + "default_profile": "single-type-basic" |
| 16 | + } |
| 17 | + }, |
| 18 | + "preferred_partners": ["dedicated-load", "dedicated-db"] |
| 19 | +} |
| 20 | +``` |
| 21 | +**Features:** |
| 22 | +- ✅ One machine type only (SUT) |
| 23 | +- ✅ Single profile available |
| 24 | +- ✅ Preferred partners for load/db roles |
| 25 | + |
| 26 | +### 2. Multi-Type Machine (Advanced) |
| 27 | +```json |
| 28 | +{ |
| 29 | + "name": "multi-type-machine", |
| 30 | + "capabilities": { |
| 31 | + "sut": { |
| 32 | + "priority": 1, |
| 33 | + "profiles": [ |
| 34 | + "multi-sut-normal", |
| 35 | + "multi-sut-high-cpu", |
| 36 | + "multi-sut-low-memory" |
| 37 | + ], |
| 38 | + "default_profile": "multi-sut-normal" |
| 39 | + }, |
| 40 | + "load": { |
| 41 | + "priority": 2, |
| 42 | + "profiles": [ |
| 43 | + "multi-load-normal", |
| 44 | + "multi-load-high-throughput", |
| 45 | + "multi-load-burst-mode" |
| 46 | + ], |
| 47 | + "default_profile": "multi-load-normal" |
| 48 | + }, |
| 49 | + "db": { |
| 50 | + "priority": 3, |
| 51 | + "profiles": [ |
| 52 | + "multi-db-normal", |
| 53 | + "multi-db-memory-optimized" |
| 54 | + ], |
| 55 | + "default_profile": "multi-db-normal" |
| 56 | + } |
| 57 | + } |
| 58 | +} |
| 59 | +``` |
| 60 | +**Features:** |
| 61 | +- ✅ Multiple machine types (SUT, LOAD, DB) |
| 62 | +- ✅ Priority ordering (1=preferred, 2=secondary, 3=fallback) |
| 63 | +- ✅ Multiple sub-profiles per type |
| 64 | +- ✅ Default profile for each type |
| 65 | + |
| 66 | +### 3. Specialized Machine |
| 67 | +```json |
| 68 | +{ |
| 69 | + "name": "dedicated-load", |
| 70 | + "capabilities": { |
| 71 | + "load": { |
| 72 | + "priority": 1, |
| 73 | + "profiles": [ |
| 74 | + "dedicated-load-standard", |
| 75 | + "dedicated-load-high-connections", |
| 76 | + "dedicated-load-low-latency" |
| 77 | + ], |
| 78 | + "default_profile": "dedicated-load-standard" |
| 79 | + } |
| 80 | + } |
| 81 | +} |
| 82 | +``` |
| 83 | +**Features:** |
| 84 | +- ✅ Dedicated to one role (LOAD only) |
| 85 | +- ✅ Multiple specialized profiles |
| 86 | +- ✅ No preferred partners needed |
| 87 | + |
| 88 | +### 4. Specialized Machines (Dedicated Role) |
| 89 | + |
| 90 | +```json |
| 91 | +{ |
| 92 | + "name": "dedicated-db", |
| 93 | + "capabilities": { |
| 94 | + "db": { |
| 95 | + "priority": 1, |
| 96 | + "profiles": [ |
| 97 | + "dedicated-db-standard", |
| 98 | + "dedicated-db-high-iops", |
| 99 | + "dedicated-db-large-dataset" |
| 100 | + ], |
| 101 | + "default_profile": "dedicated-db-standard" |
| 102 | + } |
| 103 | + }, |
| 104 | + "preferred_partners": [] |
| 105 | +} |
| 106 | +``` |
| 107 | + |
| 108 | +**Features:** |
| 109 | + |
| 110 | +- ✅ Dedicated to one role (DB only) |
| 111 | +- ✅ Multiple specialized profiles for different workloads |
| 112 | +- ✅ No preferred partners needed (self-contained) |
| 113 | + |
| 114 | +## Scenario Configuration Options |
| 115 | + |
| 116 | +### 1. Basic Scenario (Default Profiles) |
| 117 | + |
| 118 | +```json |
| 119 | +{ |
| 120 | + "name": "Simple Single Machine Test", |
| 121 | + "template": "simple-single.yml", |
| 122 | + "scenario_type": 1, |
| 123 | + "target_machines": ["single-type-machine", "multi-type-machine"], |
| 124 | + "estimated_runtime": 10.0, |
| 125 | + "description": "Basic single machine scenario with default profiles" |
| 126 | +} |
| 127 | +``` |
| 128 | +**Result:** Uses default profiles for all machines |
| 129 | + |
| 130 | +### 2. Custom Profile Selection |
| 131 | +```json |
| 132 | +{ |
| 133 | + "name": "Triple Machine Test with Custom Profiles", |
| 134 | + "template": "triple-custom.yml", |
| 135 | + "scenario_type": 3, |
| 136 | + "target_machines": ["multi-type-machine"], |
| 137 | + "estimated_runtime": 45.0, |
| 138 | + "profile_overrides": { |
| 139 | + "multi-type-machine": { |
| 140 | + "sut": "multi-sut-high-cpu", |
| 141 | + "load": "multi-load-high-throughput", |
| 142 | + "db": "multi-db-memory-optimized" |
| 143 | + } |
| 144 | + } |
| 145 | +} |
| 146 | +``` |
| 147 | +**Result:** Uses specific custom profiles for each machine type |
| 148 | + |
| 149 | +### 3. Mixed Profile Usage |
| 150 | +```json |
| 151 | +{ |
| 152 | + "name": "Mixed Profile Scenario", |
| 153 | + "template": "mixed-profiles.yml", |
| 154 | + "scenario_type": 2, |
| 155 | + "target_machines": ["single-type-machine", "multi-type-machine"], |
| 156 | + "profile_overrides": { |
| 157 | + "multi-type-machine": { |
| 158 | + "sut": "multi-sut-low-memory" |
| 159 | + } |
| 160 | + } |
| 161 | +} |
| 162 | +``` |
| 163 | +**Result:** |
| 164 | +- `single-type-machine`: Uses default profile |
| 165 | +- `multi-type-machine` SUT: Uses custom profile |
| 166 | +- `multi-type-machine` LOAD: Uses default profile |
| 167 | + |
| 168 | +## Configuration Properties Explained |
| 169 | + |
| 170 | +### Machine Properties |
| 171 | +| Property | Required | Description | |
| 172 | +|----------|----------|-------------| |
| 173 | +| `name` | ✅ | Unique machine identifier | |
| 174 | +| `capabilities` | ✅ | Dict of machine types this machine can fulfill | |
| 175 | +| `preferred_partners` | ❌ | List of preferred machines for other roles | |
| 176 | + |
| 177 | +### Capability Properties |
| 178 | +| Property | Required | Description | |
| 179 | +|----------|----------|-------------| |
| 180 | +| `machine_type` | ✅ | Key: "sut", "load", or "db" | |
| 181 | +| `priority` | ✅ | 1=preferred, 2=secondary, 3=fallback | |
| 182 | +| `profiles` | ✅ | List of available profile names | |
| 183 | +| `default_profile` | ❌ | Which profile to use by default (defaults to first profile in list) | |
| 184 | + |
| 185 | +### Scenario Properties |
| 186 | +| Property | Required | Description | |
| 187 | +|----------|----------|-------------| |
| 188 | +| `name` | ✅ | Scenario identifier | |
| 189 | +| `template` | ✅ | YAML template file | |
| 190 | +| `scenario_type` | ✅ | 1=single, 2=dual, 3=triple machine | |
| 191 | +| `target_machines` | ✅ | List of machines to run on | |
| 192 | +| `estimated_runtime` | ❌ | Runtime in minutes | |
| 193 | +| `description` | ❌ | Human-readable description | |
| 194 | +| `profile_overrides` | ❌ | Custom profile overrides | |
| 195 | + |
| 196 | +### Profile Overrides Structure |
| 197 | +```json |
| 198 | +"profile_overrides": { |
| 199 | + "machine-name": { |
| 200 | + "machine-type": "profile-name" |
| 201 | + } |
| 202 | +} |
| 203 | +``` |
| 204 | + |
| 205 | +## Testing the Configuration |
| 206 | + |
| 207 | +Run these commands to test the example: |
| 208 | + |
| 209 | +```bash |
| 210 | +# Test configuration loading and basic validation |
| 211 | +python main.py --config example_complete_features.json --list-jobs |
| 212 | + |
| 213 | +# Test scheduling without YAML generation |
| 214 | +python main.py --config example_complete_features.json |
| 215 | + |
| 216 | +# Test with template and YAML generation |
| 217 | +python main.py --config example_complete_features.json --template benchmarks.template.liquid --yaml-output ./output |
| 218 | + |
| 219 | +# List jobs grouped by target machine |
| 220 | +python main.py --config example_complete_features.json --list-jobs-by-machine |
| 221 | +``` |
| 222 | + |
| 223 | +## Key Features Demonstrated |
| 224 | + |
| 225 | +1. ✅ **Multi-type machines** - One machine can be SUT, LOAD, and DB |
| 226 | +2. ✅ **Priority-based selection** - Preferred roles vs fallback roles |
| 227 | +3. ✅ **Sub-profile support** - Multiple profiles per machine type |
| 228 | +4. ✅ **Default behavior** - No configuration change needed for existing setups |
| 229 | +5. ✅ **Custom overrides** - Specific profiles for specific scenarios |
| 230 | +6. ✅ **Backward compatibility** - Old single-type machines still work |
| 231 | +7. ✅ **Flexible scheduling** - Scheduler automatically picks best assignments |
0 commit comments