Source code
Revision control
Copy as Markdown
Other Tools
{
"definitions": {
"application_schema": {
"properties": {
"name": {
"title": "Application under performance test",
"enum": [
"firefox",
"chrome",
"chrome-m",
"fennec",
"geckoview",
"refbrow",
"fenix",
"focus",
"safari",
"safari-tp",
"custom-car",
"cstm-car-m"
],
"maxLength": 10,
"type": "string"
},
"version": {
"title": "Application's version",
"maxLength": 40,
"type": "string"
}
},
"required": ["name"],
"type": "object"
},
"os_schema": {
"type": "object",
"properties": {
"name": {
"title": "Operating system name",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"platform_version": {
"title": "Operating system version",
"type": "string",
"minLength": 1,
"maxLength": 100
}
}
},
"framework_schema": {
"properties": {
"name": {
"title": "Framework name",
"type": "string"
}
},
"type": "object"
},
"detection_technique_schema": {
"title": "Detection technique",
"description": "Either the name of a change detection technique to run, or an object configuring one",
"oneOf": [
{
"title": "Technique name",
"description": "Runs the technique with its default settings",
"type": "string",
"minLength": 1,
"maxLength": 50
},
{
"title": "Technique configuration",
"properties": {
"name": {
"title": "Detection technique name",
"description": "Name surfaced in the alerts this technique produces. Defaults to \"<technique>-<hash>\", where <hash> is a hash of this object, or to \"<technique>-<preset>\" when a preset is given without custom arguments",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"technique": {
"title": "Technique",
"description": "Name of the change detection technique to run, e.g. \"mwu\"",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"preset": {
"title": "Preset",
"description": "Named set of settings to run the technique with, e.g. \"sensitive\"",
"type": "string",
"minLength": 1,
"maxLength": 50
},
"args": {
"title": "Technique arguments",
"description": "Settings for the technique, overriding those of the preset, or the technique's defaults when no preset is given, e.g. {\"p_value_threshold\": 0.01}",
"type": "object",
"additionalProperties": {
"type": ["number", "string", "boolean"]
}
}
},
"required": ["technique"],
"additionalProperties": false,
"type": "object"
}
]
},
"subtest_schema": {
"properties": {
"name": {
"title": "Subtest name",
"type": "string",
"maxLength": 80
},
"publicName": {
"title": "Public subtest name",
"description": "Allows renaming test's name, without breaking existing performance data series",
"maxLength": 30,
"type": "string"
},
"value": {
"description": "Summary value for subtest",
"title": "Subtest value",
"type": "number",
"minimum": -1000000000000.0,
"maximum": 1000000000000.0
},
"unit": {
"title": "Measurement unit",
"type": "string",
"minLength": 1,
"maxLength": 20
},
"lowerIsBetter": {
"description": "Whether lower values are better for subtest",
"title": "Lower is better",
"type": "boolean"
},
"orderedTrials": {
"description": "Whether the replicates list is ordered (default is by trial run).",
"title": "Trials ordered",
"type": "boolean"
},
"shouldAlert": {
"description": "Whether we should alert",
"title": "Should alert",
"type": "boolean"
},
"alertThreshold": {
"description": "% change threshold before alerting",
"title": "Alert threshold",
"type": "number",
"minimum": 0.0,
"maximum": 1000.0
},
"alertSeverity": {
"description": "Severity level for alerts produced by this subtest",
"title": "Alert severity",
"enum": ["critical", "subcritical", "normal"],
"type": "string"
},
"minBackWindow": {
"description": "Minimum back window to use for alerting",
"title": "Minimum back window",
"type": "number",
"minimum": 1,
"maximum": 255
},
"maxBackWindow": {
"description": "Maximum back window to use for alerting",
"title": "Maximum back window",
"type": "number",
"minimum": 1,
"maximum": 255
},
"foreWindow": {
"description": "Fore window to use for alerting",
"title": "Fore window",
"type": "number",
"minimum": 1,
"maximum": 255
},
"detectionTechniques": {
"title": "Detection techniques",
"description": "Change detection techniques to run on this subtest's data, and how to configure them",
"type": "array",
"items": {
"$ref": "#/definitions/detection_technique_schema"
},
"uniqueItems": true,
"maxItems": 8
}
},
"required": ["name", "value"],
"type": "object"
},
"suite_schema": {
"properties": {
"name": {
"title": "Suite name",
"type": "string",
"maxLength": 80
},
"publicName": {
"title": "Public suite name",
"description": "Allows renaming suite's name, without breaking existing performance data series",
"maxLength": 30,
"type": "string"
},
"tags": {
"type": "array",
"title": "Free form tags, which ease the grouping & searching of performance tests",
"description": "Similar to extraOptions, except it does not break existing performance data series",
"items": {
"type": "string",
"pattern": "^[a-zA-Z0-9-]{1,24}$"
},
"uniqueItems": true,
"maxItems": 14
},
"extraOptions": {
"type": "array",
"title": "Extra options used in running suite",
"items": {
"type": "string",
"maxLength": 100
},
"uniqueItems": true,
"maxItems": 8
},
"subtests": {
"items": {
"$ref": "#/definitions/subtest_schema"
},
"title": "Subtests",
"type": "array"
},
"value": {
"title": "Suite value",
"type": "number",
"minimum": -1000000000000.0,
"maximum": 1000000000000.0
},
"unit": {
"title": "Measurement unit",
"type": "string",
"minLength": 1,
"maxLength": 20
},
"replicates": {
"title": "Suite replicates",
"type": "array",
"items": {
"type": "number",
"minimum": -1000000000000.0,
"maximum": 1000000000000.0
}
},
"lowerIsBetter": {
"description": "Whether lower values are better for suite",
"title": "Lower is better",
"type": "boolean"
},
"orderedTrials": {
"description": "Whether the replicates list is ordered (default is by trial run).",
"title": "Trials ordered",
"type": "boolean"
},
"shouldAlert": {
"description": "Whether we should alert on this suite (overrides default behaviour)",
"title": "Should alert",
"type": "boolean"
},
"alertThreshold": {
"description": "% change threshold before alerting",
"title": "Alert threshold",
"type": "number",
"minimum": 0.0,
"maximum": 1000.0
},
"alertSeverity": {
"description": "Severity level for alerts produced by this suite",
"title": "Alert severity",
"enum": ["critical", "subcritical", "normal"],
"type": "string"
},
"minBackWindow": {
"description": "Minimum back window to use for alerting",
"title": "Minimum back window",
"type": "integer",
"minimum": 1,
"maximum": 255
},
"maxBackWindow": {
"description": "Maximum back window to use for alerting",
"title": "Maximum back window",
"type": "integer",
"minimum": 1,
"maximum": 255
},
"foreWindow": {
"description": "Fore window to use for alerting",
"title": "Fore window",
"type": "integer",
"minimum": 1,
"maximum": 255
},
"monitor": {
"description": "Enable non-sheriffed alerting (ignores shouldAlert settings)",
"title": "Monitor",
"type": "boolean"
},
"alertNotifyEmails": {
"type": "array",
"title": "Notify these emails for any alerts produced",
"items": {
"type": "string",
"maxLength": 100
},
"uniqueItems": true,
"maxItems": 8
},
"detectionTechniques": {
"title": "Detection techniques",
"description": "Change detection techniques to run on this suite's data, and how to configure them",
"type": "array",
"items": {
"$ref": "#/definitions/detection_technique_schema"
},
"uniqueItems": true,
"maxItems": 8
}
},
"required": ["name", "subtests"],
"type": "object"
}
},
"description": "Structure for submitting performance data as part of a job",
"properties": {
"application": {
"$ref": "#/definitions/application_schema"
},
"os": {
"$ref": "#/definitions/os_schema"
},
"framework": {
"$ref": "#/definitions/framework_schema"
},
"suites": {
"description": "List of suite-level data submitted as part of this structure",
"items": {
"$ref": "#/definitions/suite_schema"
},
"title": "Performance suites",
"type": "array"
}
},
"required": ["framework", "suites"],
"title": "Perfherder Schema",
"type": "object"
}