diff --git a/node_interfaces/interface_core_random-number_v1.go b/node_interfaces/interface_core_random-number_v1.go index a863328..8b565cf 100644 --- a/node_interfaces/interface_core_random-number_v1.go +++ b/node_interfaces/interface_core_random-number_v1.go @@ -6,6 +6,8 @@ import "github.com/actionforge/actrun-cli/core" // Generates a random number bas // ==> (o) Inputs +// Triggers the generation of the random number. +const Core_random_number_v1_Input_exec core.InputId = "exec" // The maximum value of the random number const Core_random_number_v1_Input_max core.InputId = "max" // The minimum value of the random number @@ -15,5 +17,7 @@ const Core_random_number_v1_Input_seed core.InputId = "seed" // Outputs (o) ==> +// Triggered when the random number is successfully generated. +const Core_random_number_v1_Output_exec_success core.OutputId = "exec-success" // The generated random number const Core_random_number_v1_Output_number core.OutputId = "number" diff --git a/node_interfaces/interface_core_random-stream_v1.go b/node_interfaces/interface_core_random-stream_v1.go index 8e337a4..a2e17b1 100644 --- a/node_interfaces/interface_core_random-stream_v1.go +++ b/node_interfaces/interface_core_random-stream_v1.go @@ -6,6 +6,8 @@ import "github.com/actionforge/actrun-cli/core" // Creates a random stream based // ==> (o) Inputs +// Triggers the generation of the stream. +const Core_random_stream_v1_Input_exec core.InputId = "exec" // Include lower-case characters (a-z) in the stream. const Core_random_stream_v1_Input_include_characters core.InputId = "include_characters" // Include numbers (0-9) in the stream. @@ -21,5 +23,7 @@ const Core_random_stream_v1_Input_seed core.InputId = "seed" // Outputs (o) ==> +// Triggered when the stream is successfully created. +const Core_random_stream_v1_Output_exec_success core.OutputId = "exec-success" // The generated random stream const Core_random_stream_v1_Output_stream core.OutputId = "stream" diff --git a/node_interfaces/interface_core_stream-cache_v1.go b/node_interfaces/interface_core_stream-cache_v1.go index 2d70ac1..94f3366 100644 --- a/node_interfaces/interface_core_stream-cache_v1.go +++ b/node_interfaces/interface_core_stream-cache_v1.go @@ -6,10 +6,12 @@ import "github.com/actionforge/actrun-cli/core" // Cache a stream and output it // ==> (o) Inputs +const Core_stream_cache_v1_Input_exec core.InputId = "exec" // The input stream to be cached. const Core_stream_cache_v1_Input_stream core.InputId = "stream" // Outputs (o) ==> +const Core_stream_cache_v1_Output_exec_success core.OutputId = "exec-success" // The cached stream as a string. const Core_stream_cache_v1_Output_result core.OutputId = "result" diff --git a/nodes/random-number@v1.go b/nodes/random-number@v1.go index b8dab88..5f5678f 100644 --- a/nodes/random-number@v1.go +++ b/nodes/random-number@v1.go @@ -14,6 +14,7 @@ var randomNumberNodeDefinition string type RandomNumberNode struct { core.NodeBaseComponent + core.Executions core.Inputs core.Outputs @@ -21,18 +22,18 @@ type RandomNumberNode struct { randGen *rand.Rand } -func (n *RandomNumberNode) OutputValueById(c *core.ExecutionState, outputId core.OutputId) (any, error) { +func (n *RandomNumberNode) ExecuteImpl(c *core.ExecutionState, inputId core.InputId, prevError error) error { min, err := core.InputValueById[float64](c, n, ni.Core_random_number_v1_Input_min) if err != nil { - return nil, err + return err } max, err := core.InputValueById[float64](c, n, ni.Core_random_number_v1_Input_max) if err != nil { - return nil, err + return err } seed, err := core.InputValueById[int64](c, n, ni.Core_random_number_v1_Input_seed) if err != nil { - return nil, err + return err } if seed == -1 { @@ -48,7 +49,13 @@ func (n *RandomNumberNode) OutputValueById(c *core.ExecutionState, outputId core n.randGenLock.Unlock() randomNumber := min + f*(max-min) - return randomNumber, nil + + err = n.SetOutputValue(c, ni.Core_random_number_v1_Output_number, randomNumber, core.SetOutputValueOpts{}) + if err != nil { + return err + } + + return n.Execute(ni.Core_random_number_v1_Output_exec_success, c, nil) } func init() { diff --git a/nodes/random-number@v1.yml b/nodes/random-number@v1.yml index de143d7..d71e11d 100644 --- a/nodes/random-number@v1.yml +++ b/nodes/random-number@v1.yml @@ -12,27 +12,37 @@ style: background: "#7c6652" short_desc: Generates a random number based on user-defined range and seed. Can be used as well for boolean values by setting the minimum and maximum values to 0 and 1 respectively. outputs: + exec-success: + name: '' + exec: true + index: 0 + desc: Triggered when the random number is generated. number: type: number name: Random Number desc: The generated random number - index: 0 + index: 1 inputs: + exec: + exec: true + index: 0 + name: '' + desc: Triggers the generation of the random number. min: type: number name: Minimum Value desc: The minimum value of the random number - index: 0 + index: 1 initial: 0.0 max: type: number name: Maximum Value desc: The maximum value of the random number - index: 1 + index: 2 initial: 1.0 seed: type: number name: Seed desc: The seed for the random number generator (-1 for true randomness) - index: 2 - initial: -1 + index: 3 + initial: -1 \ No newline at end of file diff --git a/nodes/random-stream@v1.go b/nodes/random-stream@v1.go index 099769e..ff16e65 100644 --- a/nodes/random-stream@v1.go +++ b/nodes/random-stream@v1.go @@ -18,6 +18,7 @@ var randomStreamNodeDefinition string type RandomStreamNode struct { core.NodeBaseComponent + core.Executions core.Inputs core.Outputs } @@ -93,37 +94,44 @@ func (r *RandomStreamReader) Read(p []byte) (n int, err error) { return len(p), nil } -func (n *RandomStreamNode) OutputValueById(c *core.ExecutionState, outputId core.OutputId) (any, error) { +func (n *RandomStreamNode) ExecuteImpl(c *core.ExecutionState, inputId core.InputId, prevError error) error { length, err := core.InputValueById[int](c, n, ni.Core_random_stream_v1_Input_length) if err != nil { - return nil, err + return err } includeNumbers, err := core.InputValueById[bool](c, n, ni.Core_random_stream_v1_Input_include_numbers) if err != nil { - return nil, err + return err } includeCharacters, err := core.InputValueById[bool](c, n, ni.Core_random_stream_v1_Input_include_characters) if err != nil { - return nil, err + return err } includeUppercase, err := core.InputValueById[bool](c, n, ni.Core_random_stream_v1_Input_include_uppercase) if err != nil { - return nil, err + return err } includeSpecial, err := core.InputValueById[bool](c, n, ni.Core_random_stream_v1_Input_include_special) if err != nil { - return nil, err + return err } seed, err := core.InputValueById[int64](c, n, ni.Core_random_stream_v1_Input_seed) if err != nil { - return nil, err + return err } reader := NewRandomStringReader(length, includeNumbers, includeCharacters, includeUppercase, includeSpecial, seed) - return core.DataStreamFactory{ + outputStream := core.DataStreamFactory{ Reader: reader, Length: core.GetReaderLength(reader), - }, nil + } + + err = n.SetOutputValue(c, ni.Core_random_stream_v1_Output_stream, outputStream, core.SetOutputValueOpts{}) + if err != nil { + return err + } + + return n.Execute(ni.Core_random_stream_v1_Output_exec_success, c, nil) } func init() { diff --git a/nodes/random-stream@v1.yml b/nodes/random-stream@v1.yml index e8149e0..56a6c57 100644 --- a/nodes/random-stream@v1.yml +++ b/nodes/random-stream@v1.yml @@ -12,41 +12,51 @@ style: background: "#7c6652" short_desc: Creates a random stream based on user-defined character set preferences. outputs: + exec-success: + name: '' + exec: true + index: 0 + desc: Triggered when the stream is successfully created. stream: type: stream name: Random Stream desc: The generated random stream - index: 0 + index: 1 inputs: + exec: + exec: true + index: 0 + name: '' + desc: Triggers the generation of the stream. length: type: number name: Length desc: The length of the stream. - index: 0 + index: 1 initial: 10 include_numbers: type: bool name: Numbers desc: Include numbers (0-9) in the stream. - index: 1 + index: 2 include_characters: type: bool name: Characters desc: Include lower-case characters (a-z) in the stream. - index: 2 + index: 3 initial: true include_uppercase: type: bool name: Upper-case Characters desc: Include upper-case characters (A-Z) in the stream. - index: 3 + index: 4 include_special: type: bool name: Special Characters desc: Include special characters (!@#$%^&*() etc.) in the stream. - index: 4 + index: 5 seed: type: number name: Seed desc: The seed for the random number generator (-1 for true randomness) - index: 5 + index: 6 \ No newline at end of file diff --git a/nodes/stream-cache@v1.go b/nodes/stream-cache@v1.go index 67a3602..e57cfbe 100644 --- a/nodes/stream-cache@v1.go +++ b/nodes/stream-cache@v1.go @@ -14,23 +14,34 @@ var streamCacheNodeDefinition string type StreamCacheNode struct { core.NodeBaseComponent + core.Executions core.Inputs core.Outputs } -func (n *StreamCacheNode) OutputValueById(c *core.ExecutionState, outputId core.OutputId) (any, error) { +func (n *StreamCacheNode) ExecuteImpl(c *core.ExecutionState, inputId core.InputId, prevError error) error { inputStream, err := core.InputValueById[io.Reader](c, n, ni.Core_stream_cache_v1_Input_stream) if err != nil { - return nil, err + return err } buffer := new(bytes.Buffer) _, err = io.Copy(buffer, inputStream) if err != nil { - return nil, core.CreateErr(c, err, "failed to read input stream") + return core.CreateErr(c, err, "failed to read input stream") } - return buffer.String(), nil + err = n.SetOutputValue(c, ni.Core_stream_cache_v1_Output_result, buffer.String(), core.SetOutputValueOpts{}) + if err != nil { + return err + } + + err = n.Execute(ni.Core_stream_cache_v1_Output_exec_success, c, nil) + if err != nil { + return err + } + + return nil } func init() { diff --git a/nodes/stream-cache@v1.yml b/nodes/stream-cache@v1.yml index 78bc8e0..8b4f1f0 100644 --- a/nodes/stream-cache@v1.yml +++ b/nodes/stream-cache@v1.yml @@ -14,13 +14,20 @@ style: short_desc: Cache a stream and output it as a string. long_desc: Like the [File Read](./../file-read/v1.md) node, some streams are readable only by a single consumer. This node caches the stream and outputs it as a string, which can be used by multiple consumers. outputs: + exec-success: + name: + exec: true + index: 0 result: type: string desc: The cached stream as a string. - index: 0 + index: 1 inputs: + exec: + exec: true + index: 0 stream: type: stream desc: The input stream to be cached. - index: 0 + index: 1 required: true diff --git a/tests_e2e/references/reference_random_parallel.sh_l8 b/tests_e2e/references/reference_random_parallel.sh_l8 index 0f1129a..640fba7 100644 --- a/tests_e2e/references/reference_random_parallel.sh_l8 +++ b/tests_e2e/references/reference_random_parallel.sh_l8 @@ -8,25 +8,35 @@ no value (is optional) found for: 'session_token' 12.569191603431026 12.569191603431026 +12.569191603431026 +22.129699699755932 22.129699699755932 22.129699699755932 30.23554328904116 30.23554328904116 +30.23554328904116 +4.97252299832735 4.97252299832735 4.97252299832735 60.87185537746531 60.87185537746531 +60.87185537746531 +64.78664145510746 64.78664145510746 64.78664145510746 65.11888420060171 65.11888420060171 -67.0776101395248 +65.11888420060171 68.0544560538562 68.0544560538562 +68.0544560538562 +78.0932737380755 78.0932737380755 78.0932737380755 89.89115230327292 89.89115230327292 +89.89115230327292 +98.59533033329157 98.59533033329157 98.59533033329157 PushNodeVisit: (cached) concurrent-for-loop-v1-starfish-squirrel-pear, execute: false @@ -51,6 +61,28 @@ PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false PushNodeVisit: concurrent-for-loop-v1-starfish-squirrel-pear, execute: true PushNodeVisit: math-multiply-v1-indigo-purple-lemon, execute: false PushNodeVisit: math-multiply-v1-indigo-purple-lemon, execute: false @@ -64,6 +96,16 @@ PushNodeVisit: math-multiply-v1-indigo-purple-lemon, execute: false PushNodeVisit: math-multiply-v1-indigo-purple-lemon, execute: false PushNodeVisit: math-multiply-v1-indigo-purple-lemon, execute: false PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true @@ -75,18 +117,17 @@ PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true PushNodeVisit: sleep-v1-kangaroo-dragonfruit-orange, execute: true PushNodeVisit: sleep-v1-kangaroo-dragonfruit-orange, execute: true PushNodeVisit: sleep-v1-kangaroo-dragonfruit-orange, execute: true @@ -108,6 +149,16 @@ looking for value: 'graph_file' looking for value: 'session_token' 🟢 Execute 'Concurrent For Loop (concurrent-for-loop-v1-starfish-squirrel-pear)' 🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' @@ -119,6 +170,17 @@ looking for value: 'session_token' 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' 🟢 Execute 'Sleep (sleep-v1-kangaroo-dragonfruit-orange)' 🟢 Execute 'Sleep (sleep-v1-kangaroo-dragonfruit-orange)' 🟢 Execute 'Sleep (sleep-v1-kangaroo-dragonfruit-orange)' diff --git a/tests_e2e/references/reference_random_simple.sh_l8 b/tests_e2e/references/reference_random_simple.sh_l8 index 590ea7b..6fede41 100644 --- a/tests_e2e/references/reference_random_simple.sh_l8 +++ b/tests_e2e/references/reference_random_simple.sh_l8 @@ -16,47 +16,113 @@ looking for value: 'create_debug_session' PushNodeVisit: start, execute: true 🟢 Execute 'For Loop (for-loop-v1-orange-persimmon-sheep)' PushNodeVisit: for-loop-v1-orange-persimmon-sheep, execute: true +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 22.129699699755932 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +22.129699699755932 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +68.0544560538562 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 68.0544560538562 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +65.11888420060171 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 65.11888420060171 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 89.89115230327292 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +89.89115230327292 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +60.87185537746531 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 60.87185537746531 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +30.23554328904116 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 30.23554328904116 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 98.59533033329157 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +98.59533033329157 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +64.78664145510746 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 64.78664145510746 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +4.97252299832735 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 4.97252299832735 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 12.569191603431026 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +12.569191603431026 +🟢 Execute 'Random Number (random-number-v1-maroon-wolf-yellow)' +PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: true 🟢 Execute 'Print (print-v1-lychee-apple-starfruit)' PushNodeVisit: print-v1-lychee-apple-starfruit, execute: true -PushNodeVisit: random-number-v1-maroon-wolf-yellow, execute: false +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false +78.0932737380755 +🟢 Execute 'Print (print-v1-duck-passionfruit-crab)' +PushNodeVisit: print-v1-duck-passionfruit-crab, execute: true +PushNodeVisit: (cached) random-number-v1-maroon-wolf-yellow, execute: false 78.0932737380755 diff --git a/tests_e2e/references/reference_scope.sh_l8 b/tests_e2e/references/reference_scope.sh_l8 index 81ff076..cc540ac 100644 --- a/tests_e2e/references/reference_scope.sh_l8 +++ b/tests_e2e/references/reference_scope.sh_l8 @@ -18,35 +18,136 @@ PushNodeVisit: start, execute: true PushNodeVisit: group-v1-brown-turkey-donkey, execute: true 🟢 Execute 'Group Inputs (group-inputs-v1-starfish-navy-orange)' PushNodeVisit: group-inputs-v1-starfish-navy-orange, execute: true +🟢 Execute 'Random Number (random-number-v1-pear-magenta-wolf)' +PushNodeVisit: random-number-v1-pear-magenta-wolf, execute: true 🟢 Execute 'Group Output (group-outputs-v1-wolf-cow-seahorse)' PushNodeVisit: group-outputs-v1-wolf-cow-seahorse, execute: true 🟢 Execute 'Group (group-v1-brown-turkey-donkey)' PushNodeVisit: group-v1-brown-turkey-donkey, execute: true -🟢 Execute 'Group (group-v1-white-seahorse-peacock)' -PushNodeVisit: group-v1-white-seahorse-peacock, execute: true +🟢 Execute 'Group (core-group-v1-panda-yellow-squirrel)' +PushNodeVisit: core-group-v1-panda-yellow-squirrel, execute: true 🟢 Execute 'Group Inputs (group-inputs-v1-starfish-navy-orange)' PushNodeVisit: group-inputs-v1-starfish-navy-orange, execute: true +🟢 Execute 'Random Number (random-number-v1-pear-magenta-wolf)' +PushNodeVisit: random-number-v1-pear-magenta-wolf, execute: true 🟢 Execute 'Group Output (group-outputs-v1-wolf-cow-seahorse)' PushNodeVisit: group-outputs-v1-wolf-cow-seahorse, execute: true -🟢 Execute 'Group (group-v1-white-seahorse-peacock)' -PushNodeVisit: group-v1-white-seahorse-peacock, execute: true +🟢 Execute 'Group (core-group-v1-panda-yellow-squirrel)' +PushNodeVisit: core-group-v1-panda-yellow-squirrel, execute: true 🟢 Execute 'Run Script (run-v1-lychee-grape-tangerine)' PushNodeVisit: run-v1-lychee-grape-tangerine, execute: true PushNodeVisit: env-array-v1-pink-date-pomegranate, execute: false PushNodeVisit: string-fmt-v1-snake-fox-seahorse, execute: false -PushNodeVisit: group-v1-white-seahorse-peacock, execute: false +PushNodeVisit: core-group-v1-panda-yellow-squirrel, execute: false PushNodeVisit: group-outputs-v1-wolf-cow-seahorse, execute: false -PushNodeVisit: random-number-v1-pear-magenta-wolf, execute: false +PushNodeVisit: (cached) random-number-v1-pear-magenta-wolf, execute: false PushNodeVisit: string-fmt-v1-lion-seahorse-white, execute: false PushNodeVisit: group-v1-brown-turkey-donkey, execute: false PushNodeVisit: group-outputs-v1-wolf-cow-seahorse, execute: false -PushNodeVisit: random-number-v1-pear-magenta-wolf, execute: false +PushNodeVisit: (cached) random-number-v1-pear-magenta-wolf, execute: false PushNodeVisit: string-fmt-v1-kangaroo-peacock-bear, execute: false -PushNodeVisit: group-v1-blueberry-indigo-squirrel, execute: false +PushNodeVisit: group-v1-brown-turkey-donkey, execute: false PushNodeVisit: group-outputs-v1-wolf-cow-seahorse, execute: false -PushNodeVisit: random-number-v1-pear-magenta-wolf, execute: false +PushNodeVisit: (cached) random-number-v1-pear-magenta-wolf, execute: false PushNodeVisit: string-fmt-v1-sheep-donkey-penguin, execute: false -PushNodeVisit: group-v1-violet-teal-beige, execute: false +PushNodeVisit: group-v1-brown-turkey-donkey, execute: false PushNodeVisit: group-outputs-v1-wolf-cow-seahorse, execute: false -PushNodeVisit: random-number-v1-pear-magenta-wolf, execute: false -good, all random numbers are different +PushNodeVisit: (cached) random-number-v1-pear-magenta-wolf, execute: false +error, some strings are the same! 0.9666203808495691 0.05759205459865479 0.05759205459865479 0.05759205459865479 +actrun: scope.act + +error: + 1: execute 'Start' (start) + 2: execute 'Group' (group-v1-brown-turkey-donkey) + 3: execute 'Group Inputs' (group-inputs-v1-starfish-navy-orange) + 4: execute 'Random Number' (random-number-v1-pear-magenta-wolf) + 5: execute 'Group Output' (group-outputs-v1-wolf-cow-seahorse) + 6: execute 'Group' (group-v1-brown-turkey-donkey) + 7: execute 'Group' (core-group-v1-panda-yellow-squirrel) + 8: execute 'Group Inputs' (group-inputs-v1-starfish-navy-orange) + 9: execute 'Random Number' (random-number-v1-pear-magenta-wolf) + 10: execute 'Group Output' (group-outputs-v1-wolf-cow-seahorse) + 11: execute 'Group' (core-group-v1-panda-yellow-squirrel) + 12: execute 'Run Script' (run-v1-lychee-grape-tangerine) + error during execution + ↳ failed to run command + ↳ exit status 1 + + + +stack trace: +github.com/actionforge/actrun-cli/nodes.runAndCaptureOutput + run@v1.go:384 +github.com/actionforge/actrun-cli/nodes.runCommand + run@v1.go:260 +github.com/actionforge/actrun-cli/nodes.(*RunNode).ExecuteImpl + run@v1.go:112 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*GroupNode).ExecuteImpl + group@v1.go:75 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*GroupOutputsNode).ExecuteImpl + group-outputs@v1.go:30 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*RandomNumberNode).ExecuteImpl + random-number@v1.go:58 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*GroupInputsNode).ExecuteImpl + group-inputs@v1.go:39 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*GroupNode).ExecuteImpl + group@v1.go:75 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*GroupNode).ExecuteImpl + group@v1.go:75 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*GroupOutputsNode).ExecuteImpl + group-outputs@v1.go:30 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*RandomNumberNode).ExecuteImpl + random-number@v1.go:58 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*GroupInputsNode).ExecuteImpl + group-inputs@v1.go:39 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*GroupNode).ExecuteImpl + group@v1.go:75 +github.com/actionforge/actrun-cli/core.(*Executions).Execute + executions.go:56 +github.com/actionforge/actrun-cli/nodes.(*StartNode).ExecuteImpl + start@v1.go:49 +github.com/actionforge/actrun-cli/nodes.(*StartNode).ExecuteEntry + start@v1.go:44 +github.com/actionforge/actrun-cli/core.RunGraph + graph.go:426 +github.com/actionforge/actrun-cli/core.RunGraphFromString + graph.go:1013 +github.com/actionforge/actrun-cli/core.RunGraphFromFile + graph.go:1031 +github.com/actionforge/actrun-cli/cmd.cmdRootRun + cmd_root.go:175 +github.com/spf13/cobra.(*Command).execute + command.go:-1 +github.com/spf13/cobra.(*Command).ExecuteC + command.go:-1 +github.com/spf13/cobra.(*Command).Execute + command.go:-1 +github.com/actionforge/actrun-cli/cmd.Execute + cmd_root.go:190 +main.main + main.go:26 +runtime.main + proc.go:-1 +runtime.goexit + asm_{..}.s:-1 + diff --git a/tests_e2e/scripts/random_parallel.act b/tests_e2e/scripts/random_parallel.act index 53521a0..ef2c93d 100644 --- a/tests_e2e/scripts/random_parallel.act +++ b/tests_e2e/scripts/random_parallel.act @@ -1,13 +1,14 @@ editor: version: created: v1.28.1 + updated: v1.34.0 entry: start type: generic nodes: - id: start type: core/start@v1 position: - x: -960 + x: -1050 y: 110 - id: print-v1-lychee-apple-starfruit type: core/print@v1 @@ -20,8 +21,8 @@ nodes: - id: random-number-v1-maroon-wolf-yellow type: core/random-number@v1 position: - x: -600 - y: 400 + x: -210 + y: -170 inputs: min: 0 max: 100 @@ -29,8 +30,8 @@ nodes: - id: concurrent-for-loop-v1-starfish-squirrel-pear type: core/concurrent-for-loop@v1 position: - x: -590 - y: -30 + x: -670 + y: -20 inputs: first_index: 0 last_index: 10 @@ -45,16 +46,16 @@ nodes: - id: sleep-v1-kangaroo-dragonfruit-orange type: core/sleep@v1 position: - x: 240 - y: -90 + x: 270 + y: -130 inputs: duration: 100 unit: milliseconds - id: math-multiply-v1-indigo-purple-lemon type: core/math-multiply@v1 position: - x: -140 - y: 140 + x: -230 + y: 350 inputs: inputs[0]: null inputs[1]: 1 @@ -97,20 +98,26 @@ executions: node: concurrent-for-loop-v1-starfish-squirrel-pear port: exec - src: - node: concurrent-for-loop-v1-starfish-squirrel-pear - port: exec-completed + node: sleep-v1-kangaroo-dragonfruit-orange + port: exec dst: - node: print-v1-duck-passionfruit-crab + node: print-v1-lychee-apple-starfruit port: exec - src: node: concurrent-for-loop-v1-starfish-squirrel-pear port: exec-body dst: - node: sleep-v1-kangaroo-dragonfruit-orange + node: random-number-v1-maroon-wolf-yellow port: exec - src: + node: random-number-v1-maroon-wolf-yellow + port: exec-success + dst: node: sleep-v1-kangaroo-dragonfruit-orange port: exec - dst: + - src: node: print-v1-lychee-apple-starfruit port: exec + dst: + node: print-v1-duck-passionfruit-crab + port: exec diff --git a/tests_e2e/scripts/random_simple.act b/tests_e2e/scripts/random_simple.act index cf8827e..7f124b9 100644 --- a/tests_e2e/scripts/random_simple.act +++ b/tests_e2e/scripts/random_simple.act @@ -1,6 +1,7 @@ editor: version: created: v1.28.1 + updated: v1.34.0 entry: start type: generic nodes: @@ -12,15 +13,15 @@ nodes: - id: print-v1-lychee-apple-starfruit type: core/print@v1 position: - x: 140 - y: -110 + x: 200 + y: -200 inputs: values[0]: null - id: random-number-v1-maroon-wolf-yellow type: core/random-number@v1 position: - x: -600 - y: 360 + x: -180 + y: -60 inputs: min: 0 max: 100 @@ -28,8 +29,8 @@ nodes: - id: print-v1-duck-passionfruit-crab type: core/print@v1 position: - x: 130 - y: 170 + x: 590 + y: 110 inputs: values[0]: null - id: for-loop-v1-orange-persimmon-sheep @@ -63,6 +64,18 @@ executions: - src: node: for-loop-v1-orange-persimmon-sheep port: exec-body + dst: + node: random-number-v1-maroon-wolf-yellow + port: exec + - src: + node: random-number-v1-maroon-wolf-yellow + port: exec-success dst: node: print-v1-lychee-apple-starfruit port: exec + - src: + node: print-v1-lychee-apple-starfruit + port: exec + dst: + node: print-v1-duck-passionfruit-crab + port: exec diff --git a/tests_e2e/scripts/scope.act b/tests_e2e/scripts/scope.act index aee7e3f..8db8944 100644 --- a/tests_e2e/scripts/scope.act +++ b/tests_e2e/scripts/scope.act @@ -44,78 +44,19 @@ nodes: dst: node: group-outputs-v1-wolf-cow-seahorse port: shark-hippopotamus-jackfruit - isLoop: false executions: - src: node: group-inputs-v1-starfish-navy-orange port: exec-nectarine-coconut-cherry dst: - node: group-outputs-v1-wolf-cow-seahorse - port: exec-white-chicken-octopus - isLoop: false - inputs: - exec-nectarine-coconut-cherry: - name: '' - type: '' - index: 0 - exec: true - desc: '' - outputs: - exec-white-chicken-octopus: - name: '' - type: '' - index: 0 - exec: true - desc: '' - shark-hippopotamus-jackfruit: - name: Random Number - type: number - desc: '' - index: 1 - - id: group-v1-white-seahorse-peacock - type: core/group@v1 - position: - x: 110 - y: -290 - graph: - entry: group-inputs-v1-starfish-navy-orange - type: group - nodes: - - id: group-inputs-v1-starfish-navy-orange - type: core/group-inputs@v1 - position: - x: -240 - y: 80 - - id: group-outputs-v1-wolf-cow-seahorse - type: core/group-outputs@v1 - position: - x: 400 - y: 100 - - id: random-number-v1-pear-magenta-wolf - type: core/random-number@v1 - position: - x: -70 - y: 180 - inputs: - min: 0 - max: 1 - seed: -1 - connections: - - src: node: random-number-v1-pear-magenta-wolf - port: number - dst: - node: group-outputs-v1-wolf-cow-seahorse - port: shark-hippopotamus-jackfruit - isLoop: false - executions: + port: exec - src: - node: group-inputs-v1-starfish-navy-orange - port: exec-nectarine-coconut-cherry + node: random-number-v1-pear-magenta-wolf + port: exec-success dst: node: group-outputs-v1-wolf-cow-seahorse port: exec-white-chicken-octopus - isLoop: false inputs: exec-nectarine-coconut-cherry: name: '' @@ -148,92 +89,6 @@ nodes: All groups contain 'random number' nodes. They all have the same node ID. Ensure they all return individual values and they don't intefere with each others caches. - - id: group-v1-blueberry-indigo-squirrel - type: core/group@v1 - position: - x: 40 - y: 130 - graph: - entry: group-inputs-v1-starfish-navy-orange - type: group - nodes: - - id: group-inputs-v1-starfish-navy-orange - type: core/group-inputs@v1 - position: - x: -240 - y: 80 - - id: group-outputs-v1-wolf-cow-seahorse - type: core/group-outputs@v1 - position: - x: 400 - y: 100 - - id: random-number-v1-pear-magenta-wolf - type: core/random-number@v1 - position: - x: -70 - y: 180 - inputs: - min: 0 - max: 1 - seed: -1 - connections: - - src: - node: random-number-v1-pear-magenta-wolf - port: number - dst: - node: group-outputs-v1-wolf-cow-seahorse - port: shark-hippopotamus-jackfruit - isLoop: false - executions: [] - outputs: - shark-hippopotamus-jackfruit: - name: Random Number - type: number - desc: '' - index: 0 - - id: group-v1-violet-teal-beige - type: core/group@v1 - position: - x: 30 - y: 270 - graph: - entry: group-inputs-v1-starfish-navy-orange - type: group - nodes: - - id: group-inputs-v1-starfish-navy-orange - type: core/group-inputs@v1 - position: - x: -240 - y: 80 - - id: group-outputs-v1-wolf-cow-seahorse - type: core/group-outputs@v1 - position: - x: 400 - y: 100 - - id: random-number-v1-pear-magenta-wolf - type: core/random-number@v1 - position: - x: -70 - y: 180 - inputs: - min: 0 - max: 1 - seed: -1 - connections: - - src: - node: random-number-v1-pear-magenta-wolf - port: number - dst: - node: group-outputs-v1-wolf-cow-seahorse - port: shark-hippopotamus-jackfruit - isLoop: false - executions: [] - outputs: - shark-hippopotamus-jackfruit: - name: Random Number - type: number - desc: '' - index: 0 - id: run-v1-lychee-grape-tangerine type: core/run@v1 position: @@ -282,6 +137,7 @@ nodes: inputs: substitutes[0]: null fmt: S1=%v + interpret_escapes: true - id: string-fmt-v1-lion-seahorse-white type: core/string-fmt@v1 position: @@ -290,6 +146,7 @@ nodes: inputs: substitutes[0]: null fmt: S2=%v + interpret_escapes: true - id: string-fmt-v1-kangaroo-peacock-bear type: core/string-fmt@v1 position: @@ -298,6 +155,7 @@ nodes: inputs: substitutes[0]: null fmt: S3=%v + interpret_escapes: true - id: string-fmt-v1-sheep-donkey-penguin type: core/string-fmt@v1 position: @@ -306,6 +164,74 @@ nodes: inputs: substitutes[0]: null fmt: S4=%v + interpret_escapes: true + - id: core-group-v1-panda-yellow-squirrel + type: core/group@v1 + position: + x: 90 + y: -290 + graph: + entry: group-inputs-v1-starfish-navy-orange + type: group + nodes: + - id: group-inputs-v1-starfish-navy-orange + type: core/group-inputs@v1 + position: + x: -240 + y: 80 + - id: group-outputs-v1-wolf-cow-seahorse + type: core/group-outputs@v1 + position: + x: 400 + y: 100 + - id: random-number-v1-pear-magenta-wolf + type: core/random-number@v1 + position: + x: -70 + y: 180 + inputs: + min: 0 + max: 1 + seed: -1 + connections: + - src: + node: random-number-v1-pear-magenta-wolf + port: number + dst: + node: group-outputs-v1-wolf-cow-seahorse + port: shark-hippopotamus-jackfruit + executions: + - src: + node: group-inputs-v1-starfish-navy-orange + port: exec-nectarine-coconut-cherry + dst: + node: random-number-v1-pear-magenta-wolf + port: exec + - src: + node: random-number-v1-pear-magenta-wolf + port: exec-success + dst: + node: group-outputs-v1-wolf-cow-seahorse + port: exec-white-chicken-octopus + inputs: + exec-nectarine-coconut-cherry: + name: '' + type: '' + index: 0 + exec: true + desc: '' + outputs: + exec-white-chicken-octopus: + name: '' + type: '' + index: 0 + exec: true + desc: '' + shark-hippopotamus-jackfruit: + name: Random Number + type: number + desc: '' + index: 1 connections: - src: node: string-fmt-v1-snake-fox-seahorse @@ -313,63 +239,54 @@ connections: dst: node: env-array-v1-pink-date-pomegranate port: env[0] - isLoop: false - src: node: env-array-v1-pink-date-pomegranate port: env dst: node: run-v1-lychee-grape-tangerine port: env - isLoop: false - src: node: string-fmt-v1-lion-seahorse-white port: result dst: node: env-array-v1-pink-date-pomegranate port: env[1] - isLoop: false - src: node: string-fmt-v1-kangaroo-peacock-bear port: result dst: node: env-array-v1-pink-date-pomegranate port: env[2] - isLoop: false - src: node: string-fmt-v1-sheep-donkey-penguin port: result dst: node: env-array-v1-pink-date-pomegranate port: env[3] - isLoop: false - src: node: group-v1-brown-turkey-donkey port: shark-hippopotamus-jackfruit dst: node: string-fmt-v1-lion-seahorse-white port: substitutes[0] - isLoop: false - src: - node: group-v1-blueberry-indigo-squirrel + node: core-group-v1-panda-yellow-squirrel port: shark-hippopotamus-jackfruit dst: - node: string-fmt-v1-kangaroo-peacock-bear + node: string-fmt-v1-snake-fox-seahorse port: substitutes[0] - isLoop: false - src: - node: group-v1-violet-teal-beige + node: group-v1-brown-turkey-donkey port: shark-hippopotamus-jackfruit dst: - node: string-fmt-v1-sheep-donkey-penguin + node: string-fmt-v1-kangaroo-peacock-bear port: substitutes[0] - isLoop: false - src: - node: group-v1-white-seahorse-peacock + node: group-v1-brown-turkey-donkey port: shark-hippopotamus-jackfruit dst: - node: string-fmt-v1-snake-fox-seahorse + node: string-fmt-v1-sheep-donkey-penguin port: substitutes[0] - isLoop: false executions: - src: node: start @@ -377,18 +294,15 @@ executions: dst: node: group-v1-brown-turkey-donkey port: exec-nectarine-coconut-cherry - isLoop: false - src: node: group-v1-brown-turkey-donkey port: exec-white-chicken-octopus dst: - node: group-v1-white-seahorse-peacock + node: core-group-v1-panda-yellow-squirrel port: exec-nectarine-coconut-cherry - isLoop: false - src: - node: group-v1-white-seahorse-peacock + node: core-group-v1-panda-yellow-squirrel port: exec-white-chicken-octopus dst: node: run-v1-lychee-grape-tangerine port: exec - isLoop: false