performance-artifact-schema.json (7698B)
1 { 2 "definitions": { 3 "application_schema": { 4 "properties": { 5 "name": { 6 "title": "Application under performance test", 7 "enum": [ 8 "firefox", 9 "chrome", 10 "chrome-m", 11 "fennec", 12 "geckoview", 13 "refbrow", 14 "fenix", 15 "focus", 16 "safari", 17 "safari-tp", 18 "custom-car", 19 "cstm-car-m" 20 ], 21 "maxLength": 10, 22 "type": "string" 23 }, 24 "version": { 25 "title": "Application's version", 26 "maxLength": 40, 27 "type": "string" 28 } 29 }, 30 "required": ["name"], 31 "type": "object" 32 }, 33 "os_schema": { 34 "type": "object", 35 "properties": { 36 "name": { 37 "title": "Operating system name", 38 "type": "string", 39 "minLength": 1, 40 "maxLength": 100 41 }, 42 "platform_version": { 43 "title": "Operating system version", 44 "type": "string", 45 "minLength": 1, 46 "maxLength": 100 47 } 48 } 49 }, 50 "framework_schema": { 51 "properties": { 52 "name": { 53 "title": "Framework name", 54 "type": "string" 55 } 56 }, 57 "type": "object" 58 }, 59 "subtest_schema": { 60 "properties": { 61 "name": { 62 "title": "Subtest name", 63 "type": "string", 64 "maxLength": 80 65 }, 66 "publicName": { 67 "title": "Public subtest name", 68 "description": "Allows renaming test's name, without breaking existing performance data series", 69 "maxLength": 30, 70 "type": "string" 71 }, 72 "value": { 73 "description": "Summary value for subtest", 74 "title": "Subtest value", 75 "type": "number", 76 "minimum": -1000000000000.0, 77 "maximum": 1000000000000.0 78 }, 79 "unit": { 80 "title": "Measurement unit", 81 "type": "string", 82 "minLength": 1, 83 "maxLength": 20 84 }, 85 "lowerIsBetter": { 86 "description": "Whether lower values are better for subtest", 87 "title": "Lower is better", 88 "type": "boolean" 89 }, 90 "shouldAlert": { 91 "description": "Whether we should alert", 92 "title": "Should alert", 93 "type": "boolean" 94 }, 95 "alertThreshold": { 96 "description": "% change threshold before alerting", 97 "title": "Alert threshold", 98 "type": "number", 99 "minimum": 0.0, 100 "maximum": 1000.0 101 }, 102 "minBackWindow": { 103 "description": "Minimum back window to use for alerting", 104 "title": "Minimum back window", 105 "type": "number", 106 "minimum": 1, 107 "maximum": 255 108 }, 109 "maxBackWindow": { 110 "description": "Maximum back window to use for alerting", 111 "title": "Maximum back window", 112 "type": "number", 113 "minimum": 1, 114 "maximum": 255 115 }, 116 "foreWindow": { 117 "description": "Fore window to use for alerting", 118 "title": "Fore window", 119 "type": "number", 120 "minimum": 1, 121 "maximum": 255 122 } 123 }, 124 "required": ["name", "value"], 125 "type": "object" 126 }, 127 "suite_schema": { 128 "properties": { 129 "name": { 130 "title": "Suite name", 131 "type": "string", 132 "maxLength": 80 133 }, 134 "publicName": { 135 "title": "Public suite name", 136 "description": "Allows renaming suite's name, without breaking existing performance data series", 137 "maxLength": 30, 138 "type": "string" 139 }, 140 "tags": { 141 "type": "array", 142 "title": "Free form tags, which ease the grouping & searching of performance tests", 143 "description": "Similar to extraOptions, except it does not break existing performance data series", 144 "items": { 145 "type": "string", 146 "pattern": "^[a-zA-Z0-9-]{1,24}$" 147 }, 148 "uniqueItems": true, 149 "maxItems": 14 150 }, 151 "extraOptions": { 152 "type": "array", 153 "title": "Extra options used in running suite", 154 "items": { 155 "type": "string", 156 "maxLength": 100 157 }, 158 "uniqueItems": true, 159 "maxItems": 8 160 }, 161 "subtests": { 162 "items": { 163 "$ref": "#/definitions/subtest_schema" 164 }, 165 "title": "Subtests", 166 "type": "array" 167 }, 168 "value": { 169 "title": "Suite value", 170 "type": "number", 171 "minimum": -1000000000000.0, 172 "maximum": 1000000000000.0 173 }, 174 "unit": { 175 "title": "Measurement unit", 176 "type": "string", 177 "minLength": 1, 178 "maxLength": 20 179 }, 180 "replicates": { 181 "title": "Suite replicates", 182 "type": "array", 183 "items": { 184 "type": "number", 185 "minimum": -1000000000000.0, 186 "maximum": 1000000000000.0 187 } 188 }, 189 "lowerIsBetter": { 190 "description": "Whether lower values are better for suite", 191 "title": "Lower is better", 192 "type": "boolean" 193 }, 194 "shouldAlert": { 195 "description": "Whether we should alert on this suite (overrides default behaviour)", 196 "title": "Should alert", 197 "type": "boolean" 198 }, 199 "alertThreshold": { 200 "description": "% change threshold before alerting", 201 "title": "Alert threshold", 202 "type": "number", 203 "minimum": 0.0, 204 "maximum": 1000.0 205 }, 206 "minBackWindow": { 207 "description": "Minimum back window to use for alerting", 208 "title": "Minimum back window", 209 "type": "integer", 210 "minimum": 1, 211 "maximum": 255 212 }, 213 "maxBackWindow": { 214 "description": "Maximum back window to use for alerting", 215 "title": "Maximum back window", 216 "type": "integer", 217 "minimum": 1, 218 "maximum": 255 219 }, 220 "foreWindow": { 221 "description": "Fore window to use for alerting", 222 "title": "Fore window", 223 "type": "integer", 224 "minimum": 1, 225 "maximum": 255 226 }, 227 "monitor": { 228 "description": "Enable non-sheriffed alerting (ignores shouldAlert settings)", 229 "title": "Monitor", 230 "type": "boolean" 231 }, 232 "alertNotifyEmails": { 233 "type": "array", 234 "title": "Notify these emails for any alerts produced", 235 "items": { 236 "type": "string", 237 "maxLength": 100 238 }, 239 "uniqueItems": true, 240 "maxItems": 8 241 } 242 }, 243 "required": ["name", "subtests"], 244 "type": "object" 245 } 246 }, 247 "description": "Structure for submitting performance data as part of a job", 248 "id": "https://treeherder.mozilla.org/schemas/v1/performance-artifact.json#", 249 "properties": { 250 "application": { 251 "$ref": "#/definitions/application_schema" 252 }, 253 "os": { 254 "$ref": "#/definitions/os_schema" 255 }, 256 "framework": { 257 "$ref": "#/definitions/framework_schema" 258 }, 259 "suites": { 260 "description": "List of suite-level data submitted as part of this structure", 261 "items": { 262 "$ref": "#/definitions/suite_schema" 263 }, 264 "title": "Performance suites", 265 "type": "array" 266 } 267 }, 268 "required": ["framework", "suites"], 269 "title": "Perfherder Schema", 270 "type": "object" 271 }