{ "definitions": { "application_schema": { "properties": { "name": { "title": "Application under performance test", "enum": [ "firefox", "chrome", "chrome-m", "chromium", "fennec", "geckoview", "refbrow", "fenix", "safari" ], "maxLength": 10, "type": "string" }, "version": { "title": "Application's version", "maxLength": 40, "type": "string" } }, "required": [ "name" ], "type": "object" }, "framework_schema": { "properties": { "name": { "title": "Framework name", "type": "string" } }, "type": "object" }, "subtest_schema": { "properties": { "name": { "title": "Subtest name", "type": "string" }, "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" }, "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 }, "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 } }, "required": [ "name", "value" ], "type": "object" }, "suite_schema": { "properties": { "name": { "title": "Suite name", "type": "string" }, "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 }, "lowerIsBetter": { "description": "Whether lower values are better for suite", "title": "Lower is better", "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 }, "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 } }, "required": [ "name", "subtests" ], "type": "object" } }, "description": "Structure for submitting performance data as part of a job", "id": "https://treeherder.mozilla.org/schemas/v1/performance-artifact.json#", "properties": { "application": { "$ref": "#/definitions/application_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" }