diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..3469d988 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +language: python +python: + - "2.7" + +script: + - python examples/validate.py diff --git a/eiffel-vocabulary/EiffelActivityCanceledEvent.md b/eiffel-vocabulary/EiffelActivityCanceledEvent.md index 89e76b92..cc8a6ff5 100644 --- a/eiffel-vocabulary/EiffelActivityCanceledEvent.md +++ b/eiffel-vocabulary/EiffelActivityCanceledEvent.md @@ -8,4 +8,4 @@ __Required:__ No __Description:__ Any human readable information as to the reason for dequeueing. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelActivityCanceledEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelActivityCanceledEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelActivityFinishedEvent.md b/eiffel-vocabulary/EiffelActivityFinishedEvent.md index f7215c36..809503d4 100644 --- a/eiffel-vocabulary/EiffelActivityFinishedEvent.md +++ b/eiffel-vocabulary/EiffelActivityFinishedEvent.md @@ -40,4 +40,4 @@ __Required:__ Yes __Description:__ The URI at which the log can be retrieved. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelActivityFinishedEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelActivityFinishedEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelActivityStartedEvent.md b/eiffel-vocabulary/EiffelActivityStartedEvent.md index b44ec963..fc151143 100644 --- a/eiffel-vocabulary/EiffelActivityStartedEvent.md +++ b/eiffel-vocabulary/EiffelActivityStartedEvent.md @@ -23,4 +23,4 @@ __Required:__ Yes __Description:__ The URI at which the log can be retrieved. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelActivityStartedEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelActivityStartedEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelActivityTriggeredEvent.md b/eiffel-vocabulary/EiffelActivityTriggeredEvent.md index 1321787e..f5f8af15 100644 --- a/eiffel-vocabulary/EiffelActivityTriggeredEvent.md +++ b/eiffel-vocabulary/EiffelActivityTriggeredEvent.md @@ -42,4 +42,4 @@ __Legal values:__ MANUAL, SEMI_AUTOMATED, AUTOMATED, OTHER __Description:__ The type of execution (often related to, but ultimately separate from, __data.trigger.type__). ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelActivityTriggeredEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelActivityTriggeredEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelArtifactCreatedEvent.md b/eiffel-vocabulary/EiffelArtifactCreatedEvent.md index 46751079..045734a0 100644 --- a/eiffel-vocabulary/EiffelArtifactCreatedEvent.md +++ b/eiffel-vocabulary/EiffelArtifactCreatedEvent.md @@ -43,4 +43,4 @@ __Required:__ No __Description:__ The command used to build the artifact within the identified environment. Used for reproducability purposes. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelArtifactCreatedEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelArtifactCreatedEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelArtifactPublishedEvent.md b/eiffel-vocabulary/EiffelArtifactPublishedEvent.md index f98e5622..120fe5d9 100644 --- a/eiffel-vocabulary/EiffelArtifactPublishedEvent.md +++ b/eiffel-vocabulary/EiffelArtifactPublishedEvent.md @@ -23,4 +23,4 @@ __Required:__ Yes __Description:__ The URI at which the artifact can be retrieved. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelArtifactPublishedEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelArtifactPublishedEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelCompositionDefinedEvent.md b/eiffel-vocabulary/EiffelCompositionDefinedEvent.md index 7fbe4e21..b7affc5c 100644 --- a/eiffel-vocabulary/EiffelCompositionDefinedEvent.md +++ b/eiffel-vocabulary/EiffelCompositionDefinedEvent.md @@ -13,4 +13,4 @@ __Required:__ No __Description:__ The version of the composition, if any. This is in a sense redundant, as relationships between compositions can be tracked via the __PREVIOUS_VERSION__ link type, but can be used for improved clarity and semantics. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelCompositionDefinedEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelCompositionDefinedEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md b/eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md index 684baa21..2def24d3 100644 --- a/eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md +++ b/eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md @@ -44,4 +44,4 @@ __Required:__ No __Description:__ Any group, such as a development team, committee or test group, to which the issuer belongs. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelConfidenceLevelModifiedEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelConfidenceLevelModifiedEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelFlowContextDefinedEvent.md b/eiffel-vocabulary/EiffelFlowContextDefinedEvent.md index bc9349d8..4899b9e8 100644 --- a/eiffel-vocabulary/EiffelFlowContextDefinedEvent.md +++ b/eiffel-vocabulary/EiffelFlowContextDefinedEvent.md @@ -30,4 +30,4 @@ __Required:__ No __Description:__ A version context which other events can relate to. This member SHOULD be used in tandem with one of the other optional members - a version by itself is not very informative. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelFlowContextDefinedEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelFlowContextDefinedEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelSourceChangeCreatedEvent.md b/eiffel-vocabulary/EiffelSourceChangeCreatedEvent.md index 1715fb47..ae461675 100644 --- a/eiffel-vocabulary/EiffelSourceChangeCreatedEvent.md +++ b/eiffel-vocabulary/EiffelSourceChangeCreatedEvent.md @@ -192,4 +192,4 @@ __Required:__ Yes __Description:__ The URI of the repo. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelSourceChangeCreatedEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelSourceChangeCreatedEvent/simple.json) \ No newline at end of file diff --git a/eiffel-vocabulary/EiffelSourceChangeSubmittedEvent.md b/eiffel-vocabulary/EiffelSourceChangeSubmittedEvent.md index d792ad3c..9aab1676 100644 --- a/eiffel-vocabulary/EiffelSourceChangeSubmittedEvent.md +++ b/eiffel-vocabulary/EiffelSourceChangeSubmittedEvent.md @@ -127,4 +127,4 @@ __Required:__ Yes __Description:__ The URI of the repo. ## Examples -* [Simple example](https://github.com/Ericsson/eiffel-examples/blob/master/events/EiffelSourceChangeSubmittedEvent/simple.json) \ No newline at end of file +* [Simple example](../examples/events/EiffelSourceChangeSubmittedEvent/simple.json) \ No newline at end of file diff --git a/examples/events/EiffelActivityCanceledEvent/simple.json b/examples/events/EiffelActivityCanceledEvent/simple.json new file mode 100644 index 00000000..39c0762d --- /dev/null +++ b/examples/events/EiffelActivityCanceledEvent/simple.json @@ -0,0 +1,22 @@ +{ + "meta": { + "type": "EiffelActivityCanceledEvent", + "version": "1.0", + "time": 1234567890, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "reason": "Made irrelevant by newly scheduled execution." + }, + "links": [ + { + "type": "ACTIVITY_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] +} diff --git a/examples/events/EiffelActivityFinishedEvent/simple.json b/examples/events/EiffelActivityFinishedEvent/simple.json new file mode 100644 index 00000000..427000e2 --- /dev/null +++ b/examples/events/EiffelActivityFinishedEvent/simple.json @@ -0,0 +1,31 @@ +{ + "meta": { + "type": "EiffelActivityFinishedEvent", + "version": "1.0", + "time": 1234567890, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "outcome": { + "verdict": "TIMEOUT", + "description": "Compilation timed out." + }, + "persistentLogs": [ + { + "name": "firstLog", + "uri": "http://myHost.com/firstLog" + }, + { + "name": "otherLog", + "uri": "isbn:0-486-27557-4" + } + ] + }, + "links": [ + { + "type": "ACTIVITY_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + } + ] +} diff --git a/examples/events/EiffelActivityStartedEvent/simple.json b/examples/events/EiffelActivityStartedEvent/simple.json new file mode 100644 index 00000000..d8b3c87d --- /dev/null +++ b/examples/events/EiffelActivityStartedEvent/simple.json @@ -0,0 +1,28 @@ +{ + "meta": { + "type": "EiffelActivityStartedEvent", + "version": "1.0", + "time": 1234567890, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "executionUri": "https://my.jenkins.host/myJob/43", + "liveLogs": [ + { + "name": "My build log", + "uri": "file:///tmp/logs/data.log" + } + ] + }, + "links": [ + { + "type": "ACTIVITY_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "PREVIOUS_ACTIVITY_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] +} diff --git a/examples/events/EiffelActivityTriggeredEvent/simple-customdata.json b/examples/events/EiffelActivityTriggeredEvent/simple-customdata.json new file mode 100644 index 00000000..b5b68f45 --- /dev/null +++ b/examples/events/EiffelActivityTriggeredEvent/simple-customdata.json @@ -0,0 +1,36 @@ +{ + "meta": { + "domainId": "domainId-test", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0", + "type": "EiffelActivityTriggeredEvent", + "version": "1.0", + "time": 1234567890 + }, + "data": { + "name": "Component X Build", + "category": "Component Build", + "triggers": [ + { + "type": "MANUAL", + "description": "Triggered by EiffelArtifactPublishedEvent" + } + ], + "executionType": "AUTOMATED", + "customData" : [ + { + "key":"key1", + "value": "value1" + }, + { + "key":"key2", + "value": [1,2,3] + } + ] + }, + "links": [ + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + } + ] +} diff --git a/examples/events/EiffelActivityTriggeredEvent/simple.json b/examples/events/EiffelActivityTriggeredEvent/simple.json new file mode 100644 index 00000000..b3668809 --- /dev/null +++ b/examples/events/EiffelActivityTriggeredEvent/simple.json @@ -0,0 +1,26 @@ +{ + "meta": { + "domainId": "domainId-test", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0", + "type": "EiffelActivityTriggeredEvent", + "version": "1.0", + "time": 1234567890 + }, + "data": { + "name": "Component X Build", + "category": "Component Build", + "triggers": [ + { + "type": "MANUAL", + "description": "Triggered by EiffelArtifactPublishedEvent" + } + ], + "executionType": "AUTOMATED" + }, + "links": [ + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + } + ] +} diff --git a/examples/events/EiffelArtifactCreatedEvent/simple.json b/examples/events/EiffelArtifactCreatedEvent/simple.json new file mode 100644 index 00000000..e7a3aa4f --- /dev/null +++ b/examples/events/EiffelArtifactCreatedEvent/simple.json @@ -0,0 +1,49 @@ +{ + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 1234567890, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "artifact-name", + "version": "2.1.7" + }, + "fileInformation": [ + { + "classifier": "debug", + "extension": "jar" + }, + { + "classifier": "test", + "extension": "" + }, + { + "classifier": "", + "extension": "exe" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + }, + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "ENVIRONMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + } + ] +} diff --git a/examples/events/EiffelArtifactPublishedEvent/simple.json b/examples/events/EiffelArtifactPublishedEvent/simple.json new file mode 100644 index 00000000..54d67079 --- /dev/null +++ b/examples/events/EiffelArtifactPublishedEvent/simple.json @@ -0,0 +1,31 @@ +{ + "meta": { + "type": "EiffelArtifactPublishedEvent", + "version": "1.0", + "time": 1234567890, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "locations": [ + { + "type": "ARTIFACTORY", + "uri": "https://one.place" + }, + { + "type": "PLAIN", + "uri": "http://another.com" + } + ] + }, + "links": [ + { + "type": "CONTEXT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "ARTIFACT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] +} diff --git a/examples/events/EiffelCompositionDefinedEvent/simple.json b/examples/events/EiffelCompositionDefinedEvent/simple.json new file mode 100644 index 00000000..fe3dc36d --- /dev/null +++ b/examples/events/EiffelCompositionDefinedEvent/simple.json @@ -0,0 +1,35 @@ +{ + "meta": { + "type": "EiffelCompositionDefinedEvent", + "version": "1.0", + "time": 1234567890, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "name": "myCompositionName", + "version": "42.0.7" + }, + "links": [ + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + } + ] +} diff --git a/examples/events/EiffelConfidenceLevelModifiedEvent/simple.json b/examples/events/EiffelConfidenceLevelModifiedEvent/simple.json new file mode 100644 index 00000000..864b834a --- /dev/null +++ b/examples/events/EiffelConfidenceLevelModifiedEvent/simple.json @@ -0,0 +1,45 @@ +{ + "meta": { + "type": "EiffelConfidenceLevelModifiedEvent", + "version": "1.0", + "time": 1234567890, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "name": "stable", + "value": "SUCCESS", + "issuer": { + "name": "Gary Johnston", + "email": "gary.johnston@teamamerica.com", + "id": "garyj", + "group": "Team America" + } + }, + "links": [ + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + }, + { + "type": "SUBJECT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + }, + { + "type": "SUBJECT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + }, + { + "type": "SUB_CONFIDENCE_LEVEL", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + }, + { + "type": "SUB_CONFIDENCE_LEVEL", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee6" + } + ] +} diff --git a/examples/events/EiffelFlowContextDefinedEvent/simple.json b/examples/events/EiffelFlowContextDefinedEvent/simple.json new file mode 100644 index 00000000..e043e858 --- /dev/null +++ b/examples/events/EiffelFlowContextDefinedEvent/simple.json @@ -0,0 +1,20 @@ +{ + "meta": { + "type": "EiffelFlowContextDefined", + "version": "1.0", + "time": 1234567890, + "source": { + "domainId": "example.domain" + }, + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "product": "MyProduct", + "project": "NewImportantFeatures", + "program": "NewMarket", + "track": "CustomerXAdaptations", + "version": "4.3.0" + }, + "links": [ + ] +} diff --git a/examples/events/EiffelSourceChangeCreatedEvent/simple.json b/examples/events/EiffelSourceChangeCreatedEvent/simple.json new file mode 100644 index 00000000..88db7720 --- /dev/null +++ b/examples/events/EiffelSourceChangeCreatedEvent/simple.json @@ -0,0 +1,50 @@ +{ + "meta": { + "type": "EiffelSourceChangeCreatedEvent", + "version": "1.0", + "time": 1234567890, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "gitIdentifier": { + "commitId": "fd090b60a4aedc5161da9c035a49b14a319829b4", + "branch": "myBranch", + "repoName": "myPrivateRepo", + "repoUri": "https://github.com/johndoe/myPrivateRepo.git" + }, + "author": { + "name": "John Doe", + "email": "john.doe@company.com", + "id": "johndoe", + "group": "Team Gophers" + }, + "change": { + "files": "https://company.com/changes/fd090b60a4aedc5161da9c035a49b14a319829b4", + "insertions": 173, + "deletions": 79, + "tracker": "GitHub", + "details": "https://github.com/johndoe/myPrivateRepo/commit/fd090b60a4aedc5161da9c035a49b14a319829b4", + "id": "42" + }, + "issues": [ + { + "type": "BUG", + "tracker": "JIRA", + "id": "JIRA-1234", + "uri": "http://jira.company.com/browse/JIRA-1234", + "transition": "COMPLETE" + } + ] + }, + "links": [ + { + "type": "BASE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] +} diff --git a/examples/events/EiffelSourceChangeSubmittedEvent/simple.json b/examples/events/EiffelSourceChangeSubmittedEvent/simple.json new file mode 100644 index 00000000..cb641da7 --- /dev/null +++ b/examples/events/EiffelSourceChangeSubmittedEvent/simple.json @@ -0,0 +1,33 @@ +{ + "meta": { + "type": "EiffelSourceChangeSubmittedEvent", + "version": "1.0", + "time": 1234567890, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "svnIdentifier": { + "revision": 42, + "directory": "trunk", + "repoName": "Mainline", + "repoUri": "svn://repohost/mainline" + }, + "submitter": { + "name": "Jane Doe", + "email": "jane.doe@company.com", + "id": "j_doe", + "group": "Team Wombats" + } + }, + "links": [ + { + "type": "CHANGE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] +} diff --git a/examples/flows/build-avoidance/events.json b/examples/flows/build-avoidance/events.json new file mode 100644 index 00000000..2a1afed1 --- /dev/null +++ b/examples/flows/build-avoidance/events.json @@ -0,0 +1,357 @@ +[ + { + "meta": { + "type": "EiffelSourceChangeSubmittedEvent", + "version": "1.0", + "time": 1000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + ] + }, + { + "meta": { + "type": "EiffelSourceChangeSubmittedEvent", + "version": "1.0", + "time": 101000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + } + ] + }, + { + "meta": { + "type": "EiffelCompositionDefinedEvent", + "version": "1.0", + "time": 2000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + } + ] + }, + { + "meta": { + "type": "EiffelCompositionDefinedEvent", + "version": "1.0", + "time": 102000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 3000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "component-a", + "version": "1.0.0" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 4000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "component-b", + "version": "1.0.0" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 5000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee6" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "component-c", + "version": "1.0.0" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 6000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee7" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "component-d", + "version": "1.0.0" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 7000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee8" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "component-e", + "version": "1.0.0" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 103000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee9" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "component-a", + "version": "1.0.1" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 104000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee10" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "component-e", + "version": "1.0.1" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee8" + } + ] + }, + { + "meta": { + "type": "EiffelCompositionDefinedEvent", + "version": "1.0", + "time": 8000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee11" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee6" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee7" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee8" + } + ] + }, + { + "meta": { + "type": "EiffelCompositionDefinedEvent", + "version": "1.0", + "time": 105000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee12" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee9" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee6" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee7" + }, + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee10" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee11" + } + ] + } +] \ No newline at end of file diff --git a/examples/flows/confidence-level-joining/events.json b/examples/flows/confidence-level-joining/events.json new file mode 100644 index 00000000..11d9d9c3 --- /dev/null +++ b/examples/flows/confidence-level-joining/events.json @@ -0,0 +1,416 @@ +[ + { + "meta": { + "type": "EiffelEnvironmentDefinedEvent", + "version": "1.0", + "time": 1000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + ] + }, + { + "meta": { + "type": "EiffelCompositionDefinedEvent", + "version": "1.0", + "time": 2000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 3000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "artifact-name", + "version": "2.1.7" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + { + "type": "ENVIRONMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactPublishedEvent", + "version": "1.0", + "time": 4000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + }, + "data": { + "locations": [ + { + "type": "PLAIN", + "uri": "https://myrepository.com/myArtifact" + } + ] + }, + "links": [ + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + }, + { + "type": "ARTIFACT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelActivityTriggeredEvent", + "version": "1.0", + "time": 5000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + }, + "data": { + "name": "Act1", + "category": "Test Activity", + "triggers": [ + { + "type": "EIFFEL_EVENT" + } + ], + "executionType": "AUTOMATED" + }, + "links": [ + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + } + ] + }, + { + "meta": { + "type": "EiffelActivityTriggeredEvent", + "version": "1.0", + "time": 6000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + }, + "data": { + "name": "Act2", + "category": "Test Activity", + "triggers": [ + { + "type": "EIFFEL_EVENT" + } + ], + "executionType": "AUTOMATED" + }, + "links": [ + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + } + ] + }, + { + "meta": { + "type": "EiffelActivityStartedEvent", + "version": "1.0", + "time": 7000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee6" + }, + "data": { + }, + "links": [ + { + "type": "ACTIVITY_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + } + ] + }, + { + "meta": { + "type": "EiffelActivityStartedEvent", + "version": "1.0", + "time": 8000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee7" + }, + "data": { + }, + "links": [ + { + "type": "ACTIVITY_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseStartedEvent", + "version": "1.0", + "time": 9000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee8" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "CONTEXT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + }, + { + "type": "IUT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseStartedEvent", + "version": "1.0", + "time": 9000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee9" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "CONTEXT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + }, + { + "type": "IUT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseStartedEvent", + "version": "1.0", + "time": 9000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee10" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "CONTEXT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + }, + { + "type": "IUT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseStartedEvent", + "version": "1.0", + "time": 9000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee11" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "CONTEXT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + }, + { + "type": "IUT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseFinishedEvent", + "version": "1.0", + "time": 19000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee12" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "TEST_CASE_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee8" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseFinishedEvent", + "version": "1.0", + "time": 14000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee13" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "TEST_CASE_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee9" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseFinishedEvent", + "version": "1.0", + "time": 16000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee14" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "TEST_CASE_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee10" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseFinishedEvent", + "version": "1.0", + "time": 15000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee15" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "TEST_CASE_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee10" + } + ] + }, + { + "meta": { + "type": "EiffelActivityFinishedEvent", + "version": "1.0", + "time": 20000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee16" + }, + "data": { + "outcome": { + "conclusion": "UNSUCCESSFUL" + } + }, + "links": [ + { + "type": "ACTIVITY_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + } + ] + }, + { + "meta": { + "type": "EiffelActivityFinishedEvent", + "version": "1.0", + "time": 20000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee17" + }, + "data": { + "outcome": { + "conclusion": "SUCCESS" + } + }, + "links": [ + { + "type": "ACTIVITY_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + } + ] + }, + { + "meta": { + "type": "EiffelConfidenceLevelModifiedEvent", + "version": "1.0", + "time": 21000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee18" + }, + "data": { + "name": "functionalComponentTestsPassed", + "value": "FAILURE", + "issuer": { + "name": "componentTestsListener" + } + }, + "links": [ + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee13" + }, + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee14" + }, + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee15" + }, + { + "type": "CAUSE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee16" + }, + { + "type": "SUBJECT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + } + ] + } +] diff --git a/examples/flows/delivery-interface/events.json b/examples/flows/delivery-interface/events.json new file mode 100644 index 00000000..924ae907 --- /dev/null +++ b/examples/flows/delivery-interface/events.json @@ -0,0 +1,348 @@ +[ + { + "meta": { + "type": "EiffelSourceChangeSubmittedEvent", + "version": "1.0", + "time": 1000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + ] + }, + { + "meta": { + "type": "EiffelSourceChangeCreatedEvent", + "version": "1.0", + "time": 101000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "BASE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + } + ] + }, + { + "meta": { + "type": "EiffelSourceChangeCreatedEvent", + "version": "1.0", + "time": 102000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "BASE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee1" + } + ] + }, + { + "meta": { + "type": "EiffelSourceChangeSubmittedEvent", + "version": "1.0", + "time": 103000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "CHANGE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee2" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + } + ] + }, + { + "meta": { + "type": "EiffelSourceChangeCreatedEvent", + "version": "1.0", + "time": 201000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "BASE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + } + ] + }, + { + "meta": { + "type": "EiffelSourceChangeSubmittedEvent", + "version": "1.0", + "time": 202000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "CHANGE", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee4" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + } + ] + }, + { + "meta": { + "type": "EiffelCompositionDefinedEvent", + "version": "1.0", + "time": 2000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee6" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee0" + } + ] + }, + { + "meta": { + "type": "EiffelCompositionDefinedEvent", + "version": "1.0", + "time": 104000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee7" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee3" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee6" + } + ] + }, + { + "meta": { + "type": "EiffelCompositionDefinedEvent", + "version": "1.0", + "time": 203000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee8" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "ELEMENT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee5" + }, + { + "type": "PREVIOUS_VERSION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee7" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 3000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee9" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "artifact-name", + "version": "1.0.0" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee6" + } + ] + }, + { + "meta": { + "type": "EiffelArtifactCreatedEvent", + "version": "1.0", + "time": 204000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee10" + }, + "data": { + "gav": { + "groupId": "com.mycompany.myproduct", + "artifactId": "artifact-name", + "version": "1.1.0" + }, + "fileInformation": [ + { + "classifier": "", + "extension": "jar" + } + ], + "buildCommand": "/my/build/command with arguments" + }, + "links": [ + { + "type": "COMPOSITION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee8" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseStartedEvent", + "version": "1.0", + "time": 4000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee11" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "IUT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee9" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseStartedEvent", + "version": "1.0", + "time": 205000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee12" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "IUT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee10" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseFinishedEvent", + "version": "1.0", + "time": 5000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee13" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "TEST_CASE_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee11" + } + ] + }, + { + "meta": { + "type": "EiffelTestCaseFinishedEvent", + "version": "1.0", + "time": 206000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee14" + }, + "data": { + "placeholder": "The syntax of this event has not yet been defined." + }, + "links": [ + { + "type": "TEST_CASE_EXECUTION", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee12" + } + ] + }, + { + "meta": { + "type": "EiffelConfidenceLevelModifiedEvent", + "version": "1.0", + "time": 6000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee15" + }, + "data": { + "name": "approvedForSystemIntegration", + "value": "SUCCESS" + }, + "links": [ + { + "type": "SUBJECT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeee9" + } + ] + }, + { + "meta": { + "type": "EiffelConfidenceLevelModifiedEvent", + "version": "1.0", + "time": 207000, + "domainId": "example.domain", + "id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee16" + }, + "data": { + "name": "approvedForSystemIntegration", + "value": "SUCCESS" + }, + "links": [ + { + "type": "SUBJECT", + "target": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeee10" + } + ] + } +] \ No newline at end of file diff --git a/examples/validate.py b/examples/validate.py new file mode 100644 index 00000000..32289010 --- /dev/null +++ b/examples/validate.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +from __future__ import print_function +import fnmatch +import os +import json +import sys + +print("Search for json files...") +files = [] +for root, dirnames, filenames in os.walk('.'): + for filename in fnmatch.filter(filenames, '*.json'): + files.append(os.path.join(root, filename)) + +for file in files: + print("Validating {}... ".format(file), end="") + with open(file, 'r') as myfile: + data=myfile.read()#.replace('\n', '') + try: + json.loads(data) + except Exception as e: + print("\n{}".format(data)) + print(e) + sys.exit(1) + print("Ok") diff --git a/usage-examples/build-avoidance.md b/usage-examples/build-avoidance.md index 6505fb67..4ad7fc57 100644 --- a/usage-examples/build-avoidance.md +++ b/usage-examples/build-avoidance.md @@ -8,7 +8,7 @@ In a centralized scenario where everything is handled in a single orchestrating Compared to many other examples, only a very small number of link types is included: __ELEMENT__, __PREVIOUS_VERSION__ and __COMPOSITION__. These three are the types relevant to the example; other link types are of course legal and feasible, but not included here. -A JSON array of all events used in this example can be found [here](https://github.com/Ericsson/eiffel-examples/blob/master/flows/build-avoidance/events.json). +A JSON array of all events used in this example can be found [here](../examples/flows/build-avoidance/events.json). ## Event Graph ![alt text](./build-avoidance.png "Event Graph of Build Avoidance Example") diff --git a/usage-examples/confidence-level-joining.md b/usage-examples/confidence-level-joining.md index 560820fd..51cb63b2 100644 --- a/usage-examples/confidence-level-joining.md +++ b/usage-examples/confidence-level-joining.md @@ -1,7 +1,7 @@ # Confidence Level Joining Example This example illustrates how [EiffelConfidenceLevelModifiedEvent](../eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md) can be used to capture and summarize a larger body of lower level results, such as test suite verdicts, effectively _joining_ multiple flows in the continuous integration and delivery system. -A JSON array of all events used in this example can be found [here](https://github.com/Ericsson/eiffel-examples/blob/master/flows/confidence-level-joining/events.json). +A JSON array of all events used in this example can be found [here](../examples/flows/confidence-level-joining/events.json). ## Introduction A common use case in continuous integration and delivery systems is to join many separate (and disparate) tests into a larger entity, providing a stamp of approval to the item under test. In Eiffel, such stamps are provided by [EiffelConfidenceLevelModifiedEvent](../eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md). This not only serves the purpose of raising the level of abstraction, thereby facilitating analysis and release decisions, but also provides a pragmatic extension point of the production pipeline: an external listener (e.g. a product looking to integrate the item under test) is not interested in tracking individual test case results, particularly as they may well change over time or even from execution to execution, but simply wants to know "Is this artifact good enough for me to pick up?". diff --git a/usage-examples/delivery-interface.md b/usage-examples/delivery-interface.md index 8219df95..40bb74c1 100644 --- a/usage-examples/delivery-interface.md +++ b/usage-examples/delivery-interface.md @@ -6,7 +6,7 @@ A prime concern in designing delivery interfaces is to ensure traceability acros In this example the [EiffelConfidenceLevelModifiedEvents](../eiffel-vocabulary/EiffelConfidenceLevelModifiedEvent.md) __CLM1__ and __CLM2__ are used to signal that a new candidate is considered good enough to be integrated (__ArtC1__ and __ArtC2__), while the remaining events provide context and meta-data. -A JSON array of all events used in this example can be found [here](https://github.com/Ericsson/eiffel-examples/blob/master/flows/delivery-interface/events.json). +A JSON array of all events used in this example can be found [here](../examples/flows/delivery-interface/events.json). ## Event Graph ![alt text](./delivery-interface.png "Event Graph of Delivery Interface Example")