Skip to content

Commit

Permalink
Merge pull request #52 from mbehr1/feat/seq_alt_steps
Browse files Browse the repository at this point in the history
feat(sequences): add alt(ernative) steps support
  • Loading branch information
mbehr1 authored Dec 22, 2024
2 parents c1625ed + 8ff491a commit 82c8692
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 13 deletions.
55 changes: 52 additions & 3 deletions docs/fishbone/docs/sequences.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,13 @@ attribute | description
--------- | -----------
`name` | Optional: Name of this step. If not provided name of the filter or name of the contained sequence will be used.
`card` | Optional: Cardinality of this step. Defaults to "exactly once/mandatory step" if not provided. Can be any of:<br/>`?`:zero or once, so an optional step,<br/>`*`:any number of times = 0.., so an optional step that can occur not at all or any number of times<br/>`+`:once or multiple times, so a mandatory step that can occur multiple times but at least once
`canCreateNew`| Optional: Determines whether this step can create a new sequence occurrence. Defaults to `true`. Must not be `false`for the first step in a sequence. Set to `false` if this step shall only be checked for a created occurrence from an earlier step. So the `filter` or `sequence` will be ignored then.
`filter` | [DLT filter](https://mbehr1.github.io/dlt-logs/docs/filterReference#details) definition. If this filter matches a msg the step is seen as "matching". Either `filter` or `sequence` must be provided.
`canCreateNew`| Optional: Determines whether this step can create a new sequence occurrence. Defaults to `true`. Must not be `false` for the first step in a sequence. Set to `false` if this step shall only be checked for a created occurrence from an earlier step. So the `filter`,`sequence` or `alt` will be ignored then.
`filter` | [DLT filter](https://mbehr1.github.io/dlt-logs/docs/filterReference#details) definition. If this filter matches a msg the step is seen as "matching". Either `filter`,`sequence` or `alt` must be provided.
`sequence` | A definition of a `sub-sequence`. For this step a full sequence is used. This is useful to either break down a bigger sequence into smaller parts of if this step can be executed multiple times (e.g. with `card:*`) but consists of multiple events/steps. See [example](#example).
`alt`| A definition for a list of alternative steps. The `alt` attribute is an array/list of step definitions. Any `card` or `canCreateNew` attribute will automatically be applied to the alternative steps. For this step to be `ok` exactly one step needs to be `ok`. See [example alt](#example-alternative-steps).
:::important
A step must contain either a filter or a sub-sequence but not both!
A step must contain either a filter or a sub-sequence or an alt-list but not more than one!
:::
:::caution
Expand Down Expand Up @@ -191,6 +192,54 @@ sequences=[
]
```
### example alt(ernative) steps
See here an example for the `alt` attribute of a step:
```mermaid
sequenceDiagram
autoNumber
actor tester
participant flash
alt
tester->>+flash: flash new SW if new SW is newer
else
tester->>+flash: skip flash if new SW is the same
else
tester->>+flash: reject flash if new SW is older
end
```
```jsonc {8,10,14,18,21}
/get/docs/0/filters?
sequences=[
{
"name": "SW Update",
"steps":[
{ // this step is an alternative step with 3 alternatives:
"name":"flash",
"alt":[
{ // alt step 1
"name":"flash new SW if new SW is newer",
"sequence":// e.g. sub-sequence to detect if flash was started with newer SW
},
{ // alt-step 2
"name":"skip flash if new SW is the same",
"filter":// filter to detect skip of SW
},
{ // alt-step 3
"name":"reject flash if new SW is older",
"filter":// filter to detect rejection...
}
]
}
],
"failures:[ // ommitted here
],
}
]
```
### context
Any filter payload regex can capture `context` via capture group names.
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@
},
"dependencies": {
"@vscode/extension-telemetry": "^0.8.4",
"dlt-logs-utils": "0.6.0",
"dlt-logs-utils": "0.7.0",
"jju": "github:mbehr1/jju#3aa4169df926e99083fdd511d7c20b5bd9ba789f",
"js-yaml": "^4.1.0",
"json5": "2.2.3",
Expand Down
2 changes: 1 addition & 1 deletion src/webview/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^14.4.3",
"dlt-logs-utils": "^0.6.0",
"dlt-logs-utils": "0.7.0",
"dompurify": "^2.4.0",
"jju": "github:mbehr1/jju#3aa4169df926e99083fdd511d7c20b5bd9ba789f",
"js-yaml": "^4.1.0",
Expand Down
8 changes: 4 additions & 4 deletions src/webview/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4259,10 +4259,10 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"

dlt-logs-utils@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/dlt-logs-utils/-/dlt-logs-utils-0.6.0.tgz#f4104a86fb05fe3c096088c9acac258b86c99b8a"
integrity sha512-1LmVBxZFdp1NNorqWADcztoOdCMewJGbHLTk3LEoUhyusR2RRubPt2DG3Tdmznfv9PY2yiLfjI6v/NDdoAMZnA==
dlt-logs-utils@0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/dlt-logs-utils/-/dlt-logs-utils-0.7.0.tgz#4b1d611f8257c88daf56e318b37616683157a8b2"
integrity sha512-Pu+B0CLt+9Z3rzip2TltCWZ3Hvhvb0xwuU1nPaOomSHIvuyzKh/Vnbgv7Pubhj/kiLweXJBbxiI9az7zIGnnUg==

dlv@^1.1.3:
version "1.1.3"
Expand Down
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2453,10 +2453,10 @@ dir-glob@^3.0.0, dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"

dlt-logs-utils@0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/dlt-logs-utils/-/dlt-logs-utils-0.6.0.tgz#f4104a86fb05fe3c096088c9acac258b86c99b8a"
integrity sha512-1LmVBxZFdp1NNorqWADcztoOdCMewJGbHLTk3LEoUhyusR2RRubPt2DG3Tdmznfv9PY2yiLfjI6v/NDdoAMZnA==
dlt-logs-utils@0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/dlt-logs-utils/-/dlt-logs-utils-0.7.0.tgz#4b1d611f8257c88daf56e318b37616683157a8b2"
integrity sha512-Pu+B0CLt+9Z3rzip2TltCWZ3Hvhvb0xwuU1nPaOomSHIvuyzKh/Vnbgv7Pubhj/kiLweXJBbxiI9az7zIGnnUg==

doctrine@^3.0.0:
version "3.0.0"
Expand Down

0 comments on commit 82c8692

Please sign in to comment.