From 6eff66d16b4af3fa09e12d60ed8543e86c44af9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20B=C3=A4ck?= Date: Fri, 30 Jul 2021 23:14:26 +0200 Subject: [PATCH] Add {mediaType,tags} to data.{liveLogs,persistentLogs} These new members for log location objects allows event producers to describe the log locations in a more structured manner by including tags and the media type of the log payload. This can e.g. be used to distinguish between different representations of the same log (say, HTML and plain text) or identify logs from a particular tool. The schemas don't contain a regular expression for the media type member and accept any string. This could be seen as a drawback, but media types are pretty complicated beasts so instead of risking a regexp bug that blocks legitimate media types we're lax about these strings, similar to how ArtC's data.identity doesn't try to include a regular expression for matching all package URLs. --- .../EiffelActivityFinishedEvent.md | 11 + .../EiffelActivityStartedEvent.md | 11 + .../EiffelTestCaseFinishedEvent.md | 11 + .../EiffelTestCaseStartedEvent.md | 11 + .../EiffelTestSuiteFinishedEvent.md | 11 + .../EiffelTestSuiteStartedEvent.md | 11 + .../EiffelActivityFinishedEvent/simple.json | 17 +- .../EiffelActivityStartedEvent/simple.json | 13 +- .../EiffelTestCaseFinishedEvent/simple.json | 17 +- .../EiffelTestCaseStartedEvent/simple.json | 13 +- .../EiffelTestSuiteFinishedEvent/simple.json | 17 +- .../EiffelTestSuiteStartedEvent/simple.json | 13 +- .../EiffelActivityFinishedEvent/3.1.0.json | 216 ++++++++++++++++ schemas/EiffelActivityStartedEvent/4.1.0.json | 194 ++++++++++++++ .../EiffelTestCaseFinishedEvent/3.1.0.json | 243 ++++++++++++++++++ schemas/EiffelTestCaseStartedEvent/3.1.0.json | 194 ++++++++++++++ .../EiffelTestSuiteFinishedEvent/3.1.0.json | 218 ++++++++++++++++ .../EiffelTestSuiteStartedEvent/3.1.0.json | 228 ++++++++++++++++ 18 files changed, 1425 insertions(+), 24 deletions(-) create mode 100644 schemas/EiffelActivityFinishedEvent/3.1.0.json create mode 100644 schemas/EiffelActivityStartedEvent/4.1.0.json create mode 100644 schemas/EiffelTestCaseFinishedEvent/3.1.0.json create mode 100644 schemas/EiffelTestCaseStartedEvent/3.1.0.json create mode 100644 schemas/EiffelTestSuiteFinishedEvent/3.1.0.json create mode 100644 schemas/EiffelTestSuiteStartedEvent/3.1.0.json diff --git a/eiffel-vocabulary/EiffelActivityFinishedEvent.md b/eiffel-vocabulary/EiffelActivityFinishedEvent.md index 77d6a6e1..25dc0d0b 100644 --- a/eiffel-vocabulary/EiffelActivityFinishedEvent.md +++ b/eiffel-vocabulary/EiffelActivityFinishedEvent.md @@ -46,11 +46,21 @@ __Type:__ Object[] __Required:__ No __Description:__ An array of persistent log files generated during execution. +#### data.persistentLogs.mediaType +__Type:__ String +__Required:__ No +__Description:__ The [media type](https://en.wikipedia.org/wiki/Media_type) of the URI's payload. Can be used to differentiate between various representations of the same log, e.g. text/html for human consumption and text/plain or application/json for the machine-readable form. + #### data.persistentLogs.name __Type:__ String __Required:__ Yes __Description:__ The name of the log file. +#### data.persistentLogs.tags +__Type:__ String[] +__Required:__ No +__Description:__ Arbitrary tags and keywords that describe this log. + #### data.persistentLogs.uri __Type:__ String __Required:__ Yes @@ -211,6 +221,7 @@ __Description:__ The number of the event within the named sequence. ## Version History | Version | Introduced in | Changes | | --------- | ------------------------------------------------------ | --------------------------------------- | +| 3.1.0 | Current version | Add `data.persistentLogs.{mediaType,tags}`. | | 3.0.0 | [edition-agen](../../../tree/edition-agen) | Improved information integrity protection | (see [Issue 185](https://github.com/eiffel-community/eiffel/issues/185)) | | 2.0.0 | [dc5ec6f](../../../blob/dc5ec6fb87e293eeffe88fdafe698eec0f5a2c89/eiffel-vocabulary/EiffelActivityFinishedEvent.md) | Introduced purl identifiers instead of GAVs (see [Issue 182](https://github.com/eiffel-community/eiffel/issues/182)) | | 1.1.0 | [edition-toulouse](../../../tree/edition-toulouse) | Multiple links of type FLOW_CONTEXT allowed. | diff --git a/eiffel-vocabulary/EiffelActivityStartedEvent.md b/eiffel-vocabulary/EiffelActivityStartedEvent.md index e18f0511..fa2c3cfe 100644 --- a/eiffel-vocabulary/EiffelActivityStartedEvent.md +++ b/eiffel-vocabulary/EiffelActivityStartedEvent.md @@ -29,11 +29,21 @@ __Type:__ Object[] __Required:__ No __Description:__ An array of live log files available during execution. These shall not be presumed to be stored persistently; in other words, once the activity has finished there is no guarantee that these links are valid. Persistently stored logs shall be (re-)declared by [EiffelActivityFinishedEvent](./EiffelActivityFinishedEvent.md). +#### data.liveLogs.mediaType +__Type:__ String +__Required:__ No +__Description:__ The [media type](https://en.wikipedia.org/wiki/Media_type) of the URI's payload. Can be used to differentiate between various representations of the same log, e.g. text/html for human consumption and text/plain or application/json for the machine-readable form. + #### data.liveLogs.name __Type:__ String __Required:__ Yes __Description:__ The name of the log file. +#### data.liveLogs.tags +__Type:__ String[] +__Required:__ No +__Description:__ Arbitrary tags and keywords that describe this log. + #### data.liveLogs.uri __Type:__ String __Required:__ Yes @@ -200,6 +210,7 @@ __Description:__ The number of the event within the named sequence. ## Version History | Version | Introduced in | Changes | | --------- | ------------------------------------------------------ | --------------------------------------- | +| 4.1.0 | Current version | Add `data.liveLogs.{mediaType,tags}`. | | 4.0.0 | [edition-agen-1](../../../tree/edition-agen-1) | Bug fix in schema file (see [Issue 205](https://github.com/eiffel-community/eiffel/issues/205)) | | 3.0.0 | [edition-agen](../../../tree/edition-agen) | Improved information integrity protection (see [Issue 185](https://github.com/eiffel-community/eiffel/issues/185)) | | 2.0.0 | [dc5ec6f](../../../blob/dc5ec6fb87e293eeffe88fdafe698eec0f5a2c89/eiffel-vocabulary/EiffelActivityStartedEvent.md) | Introduced purl identifiers instead of GAVs (see [Issue 182](https://github.com/eiffel-community/eiffel/issues/182)) | diff --git a/eiffel-vocabulary/EiffelTestCaseFinishedEvent.md b/eiffel-vocabulary/EiffelTestCaseFinishedEvent.md index a968d3ee..1f82c42b 100644 --- a/eiffel-vocabulary/EiffelTestCaseFinishedEvent.md +++ b/eiffel-vocabulary/EiffelTestCaseFinishedEvent.md @@ -73,11 +73,21 @@ __Type:__ Object[] __Required:__ No __Description:__ An array of persistent log files generated during execution. +#### data.persistentLogs.mediaType +__Type:__ String +__Required:__ No +__Description:__ The [media type](https://en.wikipedia.org/wiki/Media_type) of the URI's payload. Can be used to differentiate between various representations of the same log, e.g. text/html for human consumption and text/plain or application/json for the machine-readable form. + #### data.persistentLogs.name __Type:__ String __Required:__ Yes __Description:__ The name of the log file. +#### data.persistentLogs.tags +__Type:__ String[] +__Required:__ No +__Description:__ Arbitrary tags and keywords that describe this log. + #### data.persistentLogs.uri __Type:__ String __Required:__ Yes @@ -238,6 +248,7 @@ __Description:__ The number of the event within the named sequence. ## Version History | Version | Introduced in | Changes | | --------- | ------------------------------------------------------ | --------------------------------------- | +| 3.1.0 | Current version | Add `data.persistentLogs.{mediaType,tags}`. | | 3.0.0 | [edition-agen](../../../tree/edition-agen) | Improved information integrity protection | (see [Issue 185](https://github.com/eiffel-community/eiffel/issues/185)) | | 2.0.0 | [dc5ec6f](../../../blob/dc5ec6fb87e293eeffe88fdafe698eec0f5a2c89/eiffel-vocabulary/EiffelTestCaseFinishedEvent.md) | Introduced purl identifiers instead of GAVs (see [Issue 182](https://github.com/eiffel-community/eiffel/issues/182)) | | 1.1.0 | [edition-toulouse](../../../tree/edition-toulouse) | Multiple links of type FLOW_CONTEXT allowed. | diff --git a/eiffel-vocabulary/EiffelTestCaseStartedEvent.md b/eiffel-vocabulary/EiffelTestCaseStartedEvent.md index 98aa4aad..0326dc89 100644 --- a/eiffel-vocabulary/EiffelTestCaseStartedEvent.md +++ b/eiffel-vocabulary/EiffelTestCaseStartedEvent.md @@ -29,11 +29,21 @@ __Type:__ Object[] __Required:__ No __Description:__ An array of live log files available during execution. These shall not be presumed to be stored persistently; in other words, once the test case execution has finished there is no guarantee that these links are valid. Persistently stored logs shall be (re-)declared by [EiffelTestCaseFinishedEvent](./EiffelTestCaseFinishedEvent.md). +#### data.liveLogs.mediaType +__Type:__ String +__Required:__ No +__Description:__ The [media type](https://en.wikipedia.org/wiki/Media_type) of the URI's payload. Can be used to differentiate between various representations of the same log, e.g. text/html for human consumption and text/plain or application/json for the machine-readable form. + #### data.liveLogs.name __Type:__ String __Required:__ Yes __Description:__ The name of the log file. +#### data.liveLogs.tags +__Type:__ String[] +__Required:__ No +__Description:__ Arbitrary tags and keywords that describe this log. + #### data.liveLogs.uri __Type:__ String __Required:__ Yes @@ -201,6 +211,7 @@ __Description:__ The number of the event within the named sequence. ## Version History | Version | Introduced in | Changes | | --------- | ------------------------------------------------------ | --------------------------------------- | +| 3.1.0 | Current version | Add `data.liveLogs.{mediaType,tags}`. | | 3.0.0 | [edition-agen](../../../tree/edition-agen) | Improved information integrity protection | (see [Issue 185](https://github.com/eiffel-community/eiffel/issues/185)) | | 2.0.0 | [dc5ec6f](../../../blob/dc5ec6fb87e293eeffe88fdafe698eec0f5a2c89/eiffel-vocabulary/EiffelTestCaseStartedEvent.md) | Introduced purl identifiers instead of GAVs (see [Issue 182](https://github.com/eiffel-community/eiffel/issues/182)) | | 1.1.0 | [edition-toulouse](../../../tree/edition-toulouse) | Multiple links of type FLOW_CONTEXT allowed. | diff --git a/eiffel-vocabulary/EiffelTestSuiteFinishedEvent.md b/eiffel-vocabulary/EiffelTestSuiteFinishedEvent.md index 5a2e0553..01c5edf2 100644 --- a/eiffel-vocabulary/EiffelTestSuiteFinishedEvent.md +++ b/eiffel-vocabulary/EiffelTestSuiteFinishedEvent.md @@ -56,11 +56,21 @@ __Type:__ Object[] __Required:__ No __Description:__ An array of persistent log files generated during execution. +#### data.persistentLogs.mediaType +__Type:__ String +__Required:__ No +__Description:__ The [media type](https://en.wikipedia.org/wiki/Media_type) of the URI's payload. Can be used to differentiate between various representations of the same log, e.g. text/html for human consumption and text/plain or application/json for the machine-readable form. + #### data.persistentLogs.name __Type:__ String __Required:__ Yes __Description:__ The name of the log file. +#### data.persistentLogs.tags +__Type:__ String[] +__Required:__ No +__Description:__ Arbitrary tags and keywords that describe this log. + #### data.persistentLogs.uri __Type:__ String __Required:__ Yes @@ -221,6 +231,7 @@ __Description:__ The number of the event within the named sequence. ## Version History | Version | Introduced in | Changes | | --------- | ------------------------------------------------------ | --------------------------------------- | +| 3.1.0 | Current version | Add `data.persistentLogs.{mediaType,tags}`. | | 3.0.0 | [edition-agen](../../../tree/edition-agen) | Improved information integrity protection | (see [Issue 185](https://github.com/eiffel-community/eiffel/issues/185)) | | 2.0.0 | [dc5ec6f](../../../blob/dc5ec6fb87e293eeffe88fdafe698eec0f5a2c89/eiffel-vocabulary/EiffelTestSuiteFinishedEvent.md) | Introduced purl identifiers instead of GAVs (see [Issue 182](https://github.com/eiffel-community/eiffel/issues/182)) | | 1.1.0 | [edition-toulouse](../../../tree/edition-toulouse) | Multiple links of type FLOW_CONTEXT allowed. | diff --git a/eiffel-vocabulary/EiffelTestSuiteStartedEvent.md b/eiffel-vocabulary/EiffelTestSuiteStartedEvent.md index ea64c23a..3d599646 100644 --- a/eiffel-vocabulary/EiffelTestSuiteStartedEvent.md +++ b/eiffel-vocabulary/EiffelTestSuiteStartedEvent.md @@ -42,11 +42,21 @@ __Type:__ Object[] __Required:__ No __Description:__ An array of live log files available during execution. These shall not be presumed to be stored persistently; in other words, once the test suite has finished there is no guarantee that these links are valid. Persistently stored logs shall be (re-)declared by [EiffelTestSuiteFinishedEvent](./EiffelTestSuiteFinishedEvent.md). +#### data.liveLogs.mediaType +__Type:__ String +__Required:__ No +__Description:__ The [media type](https://en.wikipedia.org/wiki/Media_type) of the URI's payload. Can be used to differentiate between various representations of the same log, e.g. text/html for human consumption and text/plain or application/json for the machine-readable form. + #### data.liveLogs.name __Type:__ String __Required:__ Yes __Description:__ The name of the log file. +#### data.liveLogs.tags +__Type:__ String[] +__Required:__ No +__Description:__ Arbitrary tags and keywords that describe this log. + #### data.liveLogs.uri __Type:__ String __Required:__ Yes @@ -207,6 +217,7 @@ __Description:__ The number of the event within the named sequence. ## Version History | Version | Introduced in | Changes | | --------- | ------------------------------------------------------ | --------------------------------------- | +| 3.1.0 | Current version | Add `data.liveLogs.{mediaType,tags}`. | | 3.0.0 | [edition-agen](../../../tree/edition-agen) | Improved information integrity protection | (see [Issue 185](https://github.com/eiffel-community/eiffel/issues/185)) | | 2.0.0 | [dc5ec6f](../../../blob/dc5ec6fb87e293eeffe88fdafe698eec0f5a2c89/eiffel-vocabulary/EiffelTestSuiteStartedEvent.md) | Introduced purl identifiers instead of GAVs (see [Issue 182](https://github.com/eiffel-community/eiffel/issues/182)) | | 1.1.0 | [edition-toulouse](../../../tree/edition-toulouse) | Multiple links of type FLOW_CONTEXT allowed. | diff --git a/examples/events/EiffelActivityFinishedEvent/simple.json b/examples/events/EiffelActivityFinishedEvent/simple.json index 80caad16..82d742ca 100644 --- a/examples/events/EiffelActivityFinishedEvent/simple.json +++ b/examples/events/EiffelActivityFinishedEvent/simple.json @@ -1,7 +1,7 @@ { "meta": { "type": "EiffelActivityFinishedEvent", - "version": "3.0.0", + "version": "3.1.0", "time": 1234567890, "id": "aaaaaaaa-bbbb-5ccc-8ddd-eeeeeeeeeee0" }, @@ -12,12 +12,19 @@ }, "persistentLogs": [ { - "name": "firstLog", - "uri": "http://myHost.com/firstLog" + "name": "firstLog (HTML)", + "mediaType": "text/html", + "uri": "http://myHost.com/firstLog.html" }, { - "name": "otherLog", - "uri": "isbn:0-486-27557-4" + "name": "firstLog (plain text)", + "mediaType": "text/plain", + "tags": ["plain"], + "uri": "http://myHost.com/firstLog.log" + }, + { + "name": "otherLog", + "uri": "isbn:0-486-27557-4" } ] }, diff --git a/examples/events/EiffelActivityStartedEvent/simple.json b/examples/events/EiffelActivityStartedEvent/simple.json index 8d26cf8a..e22574b0 100644 --- a/examples/events/EiffelActivityStartedEvent/simple.json +++ b/examples/events/EiffelActivityStartedEvent/simple.json @@ -1,7 +1,7 @@ { "meta": { "type": "EiffelActivityStartedEvent", - "version": "3.0.0", + "version": "4.1.0", "time": 1234567890, "id": "aaaaaaaa-bbbb-5ccc-8ddd-eeeeeeeeeee0" }, @@ -9,8 +9,15 @@ "executionUri": "https://my.jenkins.host/myJob/43", "liveLogs": [ { - "name": "My build log", - "uri": "file:///tmp/logs/data.log" + "name": "My build log (HTML)", + "mediaType": "text/html", + "uri": "file:///tmp/logs/data.html" + }, + { + "name": "My build log (plain text)", + "mediaType": "text/plain", + "tags": ["plain"], + "uri": "file:///tmp/logs/data.log" } ] }, diff --git a/examples/events/EiffelTestCaseFinishedEvent/simple.json b/examples/events/EiffelTestCaseFinishedEvent/simple.json index 6692f2ca..3e56862a 100644 --- a/examples/events/EiffelTestCaseFinishedEvent/simple.json +++ b/examples/events/EiffelTestCaseFinishedEvent/simple.json @@ -1,7 +1,7 @@ { "meta": { "type": "EiffelTestCaseFinishedEvent", - "version": "3.0.0", + "version": "3.1.0", "time": 1234567890, "id": "aaaaaaaa-bbbb-5ccc-8ddd-eeeeeeeeeee0" }, @@ -27,12 +27,19 @@ }, "persistentLogs": [ { - "name": "firstLog", - "uri": "http://myHost.com/firstLog" + "name": "firstLog (HTML)", + "mediaType": "text/html", + "uri": "http://myHost.com/firstLog.html" }, { - "name": "otherLog", - "uri": "isbn:0-486-27557-4" + "name": "firstLog (plain text)", + "mediaType": "text/plain", + "tags": ["plain"], + "uri": "http://myHost.com/firstLog.log" + }, + { + "name": "otherLog", + "uri": "isbn:0-486-27557-4" } ] }, diff --git a/examples/events/EiffelTestCaseStartedEvent/simple.json b/examples/events/EiffelTestCaseStartedEvent/simple.json index 811169f8..ad4af321 100644 --- a/examples/events/EiffelTestCaseStartedEvent/simple.json +++ b/examples/events/EiffelTestCaseStartedEvent/simple.json @@ -1,7 +1,7 @@ { "meta": { "type": "EiffelTestCaseStartedEvent", - "version": "3.0.0", + "version": "3.1.0", "time": 1234567890, "id": "aaaaaaaa-bbbb-5ccc-8ddd-eeeeeeeeeee0" }, @@ -9,8 +9,15 @@ "executor": "My Test Framework", "liveLogs": [ { - "name": "My test log", - "uri": "file:///tmp/logs/data.log" + "name": "My text log (HTML)", + "mediaType": "text/html", + "uri": "file:///tmp/logs/data.html" + }, + { + "name": "My test log (plain text)", + "mediaType": "text/plain", + "tags": ["plain"], + "uri": "file:///tmp/logs/data.log" } ] }, diff --git a/examples/events/EiffelTestSuiteFinishedEvent/simple.json b/examples/events/EiffelTestSuiteFinishedEvent/simple.json index 7706c24c..b2678ce9 100644 --- a/examples/events/EiffelTestSuiteFinishedEvent/simple.json +++ b/examples/events/EiffelTestSuiteFinishedEvent/simple.json @@ -1,7 +1,7 @@ { "meta": { "type": "EiffelTestSuiteFinishedEvent", - "version": "3.0.0", + "version": "3.1.0", "time": 1234567890, "id": "aaaaaaaa-bbbb-5ccc-8ddd-eeeeeeeeeee0" }, @@ -13,12 +13,19 @@ }, "persistentLogs": [ { - "name": "firstLog", - "uri": "http://myHost.com/firstLog" + "name": "firstLog (HTML)", + "mediaType": "text/html", + "uri": "http://myHost.com/firstLog.html" }, { - "name": "otherLog", - "uri": "isbn:0-486-27557-4" + "name": "firstLog (plain text)", + "mediaType": "text/plain", + "tags": ["plain"], + "uri": "http://myHost.com/firstLog.log" + }, + { + "name": "otherLog", + "uri": "isbn:0-486-27557-4" } ] }, diff --git a/examples/events/EiffelTestSuiteStartedEvent/simple.json b/examples/events/EiffelTestSuiteStartedEvent/simple.json index 9338ac28..43b773db 100644 --- a/examples/events/EiffelTestSuiteStartedEvent/simple.json +++ b/examples/events/EiffelTestSuiteStartedEvent/simple.json @@ -1,7 +1,7 @@ { "meta": { "type": "EiffelTestSuiteStartedEvent", - "version": "3.0.0", + "version": "3.1.0", "time": 1234567890, "id": "aaaaaaaa-bbbb-5ccc-8ddd-eeeeeeeeeee0" }, @@ -16,8 +16,15 @@ ], "liveLogs": [ { - "name": "My test log", - "uri": "file:///tmp/logs/data.log" + "name": "My text log (HTML)", + "mediaType": "text/html", + "uri": "file:///tmp/logs/data.html" + }, + { + "name": "My test log (plain text)", + "mediaType": "text/plain", + "tags": ["plain"], + "uri": "file:///tmp/logs/data.log" } ] }, diff --git a/schemas/EiffelActivityFinishedEvent/3.1.0.json b/schemas/EiffelActivityFinishedEvent/3.1.0.json new file mode 100644 index 00000000..75f0c89f --- /dev/null +++ b/schemas/EiffelActivityFinishedEvent/3.1.0.json @@ -0,0 +1,216 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + }, + "type": { + "type": "string", + "enum": ["EiffelActivityFinishedEvent"] + }, + "version": { + "type": "string", + "enum": [ "3.1.0" ], + "default": "3.1.0" + }, + "time": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "source": { + "type": "object", + "properties": { + "domainId": { + "type": "string" + }, + "host": { + "type": "string" + }, + "name": { + "type": "string" + }, + "serializer": { + "type": "string", + "pattern": "^pkg:" + }, + "uri": { + "type": "string" + } + }, + "additionalProperties": false + }, + "security": { + "type": "object", + "properties": { + "authorIdentity": { + "type": "string" + }, + "integrityProtection": { + "type": "object", + "properties": { + "signature": { + "type": "string" + }, + "alg": { + "type": "string", + "enum": ["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "ES256", "ES384", "ES512", "PS256", "PS384", "PS512"] + }, + "publicKey": { + "type": "string" + } + }, + "required": [ + "signature", + "alg" + ], + "additionalProperties": false + }, + "sequenceProtection": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequenceName": { + "type": "string" + }, + "position": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "sequenceName", + "position" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "authorIdentity" + ] + } + }, + "required": [ + "id", + "type", + "version", + "time" + ], + "additionalProperties": false + }, + "data": { + "type": "object", + "properties": { + "outcome": { + "type": "object", + "properties": { + "conclusion": { + "type": "string", + "enum": [ + "SUCCESSFUL", + "UNSUCCESSFUL", + "FAILED", + "ABORTED", + "TIMED_OUT", + "INCONCLUSIVE" + ] + }, + "description": { + "type": "string" + } + }, + "required": [ + "conclusion" + ] + }, + "persistentLogs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "mediaType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "uri": { + "type": "string" + } + }, + "required": [ + "name", + "uri" + ], + "additionalProperties": false + } + }, + "customData": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + } + }, + "required": [ + "key", + "value" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false, + "required": [ + "outcome" + ] + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + } + }, + "required": [ + "type", + "target" + ], + "additionalProperties": false + } + } + }, + "required": [ + "meta", + "data", + "links" + ], + "additionalProperties": false +} diff --git a/schemas/EiffelActivityStartedEvent/4.1.0.json b/schemas/EiffelActivityStartedEvent/4.1.0.json new file mode 100644 index 00000000..de1fb9d9 --- /dev/null +++ b/schemas/EiffelActivityStartedEvent/4.1.0.json @@ -0,0 +1,194 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + }, + "type": { + "type": "string", + "enum": ["EiffelActivityStartedEvent"] + }, + "version": { + "type": "string", + "enum": [ "4.1.0" ], + "default": "4.1.0" + }, + "time": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "source": { + "type": "object", + "properties": { + "domainId": { + "type": "string" + }, + "host": { + "type": "string" + }, + "name": { + "type": "string" + }, + "serializer": { + "type": "string", + "pattern": "^pkg:" + }, + "uri": { + "type": "string" + } + }, + "additionalProperties": false + }, + "security": { + "type": "object", + "properties": { + "authorIdentity": { + "type": "string" + }, + "integrityProtection": { + "type": "object", + "properties": { + "signature": { + "type": "string" + }, + "alg": { + "type": "string", + "enum": ["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "ES256", "ES384", "ES512", "PS256", "PS384", "PS512"] + }, + "publicKey": { + "type": "string" + } + }, + "required": [ + "signature", + "alg" + ], + "additionalProperties": false + }, + "sequenceProtection": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequenceName": { + "type": "string" + }, + "position": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "sequenceName", + "position" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "authorIdentity" + ] + } + }, + "required": [ + "id", + "type", + "version", + "time" + ], + "additionalProperties": false + }, + "data": { + "type": "object", + "properties": { + "executionUri": { + "type": "string" + }, + "liveLogs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "mediaType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "uri": { + "type": "string" + } + }, + "required": [ + "name", + "uri" + ], + "additionalProperties": false + } + }, + "customData": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + } + }, + "required": [ + "key", + "value" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + } + }, + "required": [ + "type", + "target" + ], + "additionalProperties": false + } + } + }, + "required": [ + "meta", + "data", + "links" + ], + "additionalProperties": false +} diff --git a/schemas/EiffelTestCaseFinishedEvent/3.1.0.json b/schemas/EiffelTestCaseFinishedEvent/3.1.0.json new file mode 100644 index 00000000..4aed05f0 --- /dev/null +++ b/schemas/EiffelTestCaseFinishedEvent/3.1.0.json @@ -0,0 +1,243 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + }, + "type": { + "type": "string", + "enum": [ "EiffelTestCaseFinishedEvent" ] + }, + "version": { + "type": "string", + "enum": [ "3.1.0" ], + "default": "3.1.0" + }, + "time": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "source": { + "type": "object", + "properties": { + "domainId": { + "type": "string" + }, + "host": { + "type": "string" + }, + "name": { + "type": "string" + }, + "serializer": { + "type": "string", + "pattern": "^pkg:" + }, + "uri": { + "type": "string" + } + }, + "additionalProperties": false + }, + "security": { + "type": "object", + "properties": { + "authorIdentity": { + "type": "string" + }, + "integrityProtection": { + "type": "object", + "properties": { + "signature": { + "type": "string" + }, + "alg": { + "type": "string", + "enum": ["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "ES256", "ES384", "ES512", "PS256", "PS384", "PS512"] + }, + "publicKey": { + "type": "string" + } + }, + "required": [ + "signature", + "alg" + ], + "additionalProperties": false + }, + "sequenceProtection": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequenceName": { + "type": "string" + }, + "position": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "sequenceName", + "position" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "authorIdentity" + ] + } + }, + "required": [ + "id", + "type", + "version", + "time" + ], + "additionalProperties": false + }, + "data": { + "type": "object", + "properties": { + "outcome": { + "type": "object", + "properties": { + "verdict": { + "type": "string", + "enum": [ + "PASSED", + "FAILED", + "INCONCLUSIVE" + ] + }, + "conclusion": { + "type": "string", + "enum": [ + "SUCCESSFUL", + "FAILED", + "ABORTED", + "TIMED_OUT", + "INCONCLUSIVE" + ] + }, + "description": { + "type": "string" + }, + "metrics": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + } + } + }, + "required": [ + "verdict", + "conclusion" + ], + "additionalProperties": false + }, + "persistentLogs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "mediaType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "uri": { + "type": "string" + } + }, + "required": [ + "name", + "uri" + ], + "additionalProperties": false + } + }, + "customData": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + } + }, + "required": [ + "key", + "value" + ], + "additionalProperties": false + } + } + }, + "required": [ + "outcome" + ], + "additionalProperties": false + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + } + }, + "required": [ + "type", + "target" + ], + "additionalProperties": false + } + } + }, + "required": [ + "meta", + "data", + "links" + ], + "additionalProperties": false +} diff --git a/schemas/EiffelTestCaseStartedEvent/3.1.0.json b/schemas/EiffelTestCaseStartedEvent/3.1.0.json new file mode 100644 index 00000000..ac617922 --- /dev/null +++ b/schemas/EiffelTestCaseStartedEvent/3.1.0.json @@ -0,0 +1,194 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + }, + "type": { + "type": "string", + "enum": [ "EiffelTestCaseStartedEvent" ] + }, + "version": { + "type": "string", + "enum": [ "3.1.0" ], + "default": "3.1.0" + }, + "time": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "source": { + "type": "object", + "properties": { + "domainId": { + "type": "string" + }, + "host": { + "type": "string" + }, + "name": { + "type": "string" + }, + "serializer": { + "type": "string", + "pattern": "^pkg:" + }, + "uri": { + "type": "string" + } + }, + "additionalProperties": false + }, + "security": { + "type": "object", + "properties": { + "authorIdentity": { + "type": "string" + }, + "integrityProtection": { + "type": "object", + "properties": { + "signature": { + "type": "string" + }, + "alg": { + "type": "string", + "enum": ["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "ES256", "ES384", "ES512", "PS256", "PS384", "PS512"] + }, + "publicKey": { + "type": "string" + } + }, + "required": [ + "signature", + "alg" + ], + "additionalProperties": false + }, + "sequenceProtection": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequenceName": { + "type": "string" + }, + "position": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "sequenceName", + "position" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "authorIdentity" + ] + } + }, + "required": [ + "id", + "type", + "version", + "time" + ], + "additionalProperties": false + }, + "data": { + "type": "object", + "properties": { + "executor": { + "type": "string" + }, + "liveLogs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "mediaType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "uri": { + "type": "string" + } + }, + "required": [ + "name", + "uri" + ], + "additionalProperties": false + } + }, + "customData": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + } + }, + "required": [ + "key", + "value" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + } + }, + "required": [ + "type", + "target" + ], + "additionalProperties": false + } + } + }, + "required": [ + "meta", + "data", + "links" + ], + "additionalProperties": false +} diff --git a/schemas/EiffelTestSuiteFinishedEvent/3.1.0.json b/schemas/EiffelTestSuiteFinishedEvent/3.1.0.json new file mode 100644 index 00000000..0d3bbed6 --- /dev/null +++ b/schemas/EiffelTestSuiteFinishedEvent/3.1.0.json @@ -0,0 +1,218 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + }, + "type": { + "type": "string", + "enum": [ "EiffelTestSuiteFinishedEvent" ] + }, + "version": { + "type": "string", + "enum": [ "3.1.0" ], + "default": "3.1.0" + }, + "time": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "source": { + "type": "object", + "properties": { + "domainId": { + "type": "string" + }, + "host": { + "type": "string" + }, + "name": { + "type": "string" + }, + "serializer": { + "type": "string", + "pattern": "^pkg:" + }, + "uri": { + "type": "string" + } + }, + "additionalProperties": false + }, + "security": { + "type": "object", + "properties": { + "authorIdentity": { + "type": "string" + }, + "integrityProtection": { + "type": "object", + "properties": { + "signature": { + "type": "string" + }, + "alg": { + "type": "string", + "enum": ["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "ES256", "ES384", "ES512", "PS256", "PS384", "PS512"] + }, + "publicKey": { + "type": "string" + } + }, + "required": [ + "signature", + "alg" + ], + "additionalProperties": false + }, + "sequenceProtection": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequenceName": { + "type": "string" + }, + "position": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "sequenceName", + "position" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "authorIdentity" + ] + } + }, + "required": [ + "id", + "type", + "version", + "time" + ], + "additionalProperties": false + }, + "data": { + "type": "object", + "properties": { + "outcome": { + "type": "object", + "properties": { + "verdict": { + "type": "string", + "enum": [ + "PASSED", + "FAILED", + "INCONCLUSIVE" + ] + }, + "conclusion": { + "type": "string", + "enum": [ + "SUCCESSFUL", + "FAILED", + "ABORTED", + "TIMED_OUT", + "INCONCLUSIVE" + ] + }, + "description": { + "type": "string" + } + }, + "additionalProperties": false + }, + "persistentLogs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "mediaType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "uri": { + "type": "string" + } + }, + "required": [ + "name", + "uri" + ], + "additionalProperties": false + } + }, + "customData": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + } + }, + "required": [ + "key", + "value" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + } + }, + "required": [ + "type", + "target" + ], + "additionalProperties": false + } + } + }, + "required": [ + "meta", + "data", + "links" + ], + "additionalProperties": false +} diff --git a/schemas/EiffelTestSuiteStartedEvent/3.1.0.json b/schemas/EiffelTestSuiteStartedEvent/3.1.0.json new file mode 100644 index 00000000..23d181fc --- /dev/null +++ b/schemas/EiffelTestSuiteStartedEvent/3.1.0.json @@ -0,0 +1,228 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + }, + "type": { + "type": "string", + "enum": [ "EiffelTestSuiteStartedEvent" ] + }, + "version": { + "type": "string", + "enum": [ "3.1.0" ], + "default": "3.1.0" + }, + "time": { + "type": "integer" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "source": { + "type": "object", + "properties": { + "domainId": { + "type": "string" + }, + "host": { + "type": "string" + }, + "name": { + "type": "string" + }, + "serializer": { + "type": "string", + "pattern": "^pkg:" + }, + "uri": { + "type": "string" + } + }, + "additionalProperties": false + }, + "security": { + "type": "object", + "properties": { + "authorIdentity": { + "type": "string" + }, + "integrityProtection": { + "type": "object", + "properties": { + "signature": { + "type": "string" + }, + "alg": { + "type": "string", + "enum": ["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "ES256", "ES384", "ES512", "PS256", "PS384", "PS512"] + }, + "publicKey": { + "type": "string" + } + }, + "required": [ + "signature", + "alg" + ], + "additionalProperties": false + }, + "sequenceProtection": { + "type": "array", + "items": { + "type": "object", + "properties": { + "sequenceName": { + "type": "string" + }, + "position": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "sequenceName", + "position" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "authorIdentity" + ] + } + }, + "required": [ + "id", + "type", + "version", + "time" + ], + "additionalProperties": false + }, + "data": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "categories": { + "type": "array", + "items": { + "type": "string" + } + }, + "types": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "ACCESSIBILITY", + "BACKUP_RECOVERY", + "COMPATIBILITY", + "CONVERSION", + "DISASTER_RECOVERY", + "FUNCTIONAL", + "INSTALLABILITY", + "INTEROPERABILITY", + "LOCALIZATION", + "MAINTAINABILITY", + "PERFORMANCE", + "PORTABILITY", + "PROCEDURE", + "RELIABILITY", + "SECURITY", + "STABILITY", + "USABILITY" + ] + } + }, + "liveLogs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "mediaType": { + "type": "string" + }, + "name": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "uri": { + "type": "string" + } + }, + "required": [ + "name", + "uri" + ], + "additionalProperties": false + } + }, + "customData": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + } + }, + "required": [ + "key", + "value" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "links": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "target": { + "type": "string", + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" + } + }, + "required": [ + "type", + "target" + ], + "additionalProperties": false + } + } + }, + "required": [ + "meta", + "data", + "links" + ], + "additionalProperties": false +}