Flow

All loader definitions can be stitched together, allowing for very sophisticated load testing using internal memory stores.

Property

FieldDescriptionRequiredType
stepDefinition of the flow step.object
step.concurrencyMaximum concurrency for execution. -1 runs all flows simultaneously, 0 ensures sequential execution on the main thread.int
step.flowsDefinition of flows to execute.[]Flow
step.flows[].idUnique flow ID within the file. Note: the uniqueness applies across the file, not just parallel flows.string
step.flows[].depends_onDependencies that must resolve before starting, irrespective of concurrency.[]object
step.flows[].depends_on[].flowFlow ID dependency. Must be within the same file.string
step.flows[].depends_on[].eventEvent triggering the dependency resolution. Supported events are listed under Events.string
step.flows[].typeType of flow to execute. Supported types: file, flow, slaveCmd.string
step.flows[].filePath to the loader file to execute.✅ (type=file or type=slaveCmd)string
step.flows[].mkdirCreates a new directory for output related to the flow, useful for separating concurrent requests to different services. Defaults to false.boolean
step.flows[].countNumber of executions for type=file flows. Defaults to 1.int
step.flows[].valuesData stored in the global memory store. Accessible after execution but not during the same file’s parsing.[]object
step.flows[].values.keyKey for the memory store data.string
step.flows[].values.valueValue for the memory store data.any
step.flows[].thread_valuesData stored in the thread-local memory store, valid only within the flow.[]object
step.flows[].thread_values.keyKey for the thread memory store data.string
step.flows[].thread_values.valueValue for the thread memory store data.any
step.flows[].flowsNested flow definitions. Valid if type=flow.[]Flow
step.flows[].concurrencyMaximum concurrency for nested flows. -1 runs all flows simultaneously, 0 ensures sequential execution.✅ (type=flow)int
step.flows[].executorsSlave configuration for execution.[]object
step.flows[].executors.slave_idSlave ID as defined in SlaveConnect.string
step.flows[].executors.outputOutput configuration for individual slaves. Defaults to disabled.object
step.flows[].executors.output.enabledEnable output for individual slaves. Defaults to false.boolean
step.flows[].executors.output.root_pathRoot directory for slave-specific output. Required if output.enabled=true.✅ (output.enabled=true)string
step.flows[].executors.inherit_valuesInherit global memory store from the master during execution. Defaults to false.boolean
step.flows[].executors.additional_valuesData to store in the slave’s global memory store, allowing slave-specific values.[]object
step.flows[].executors.additional_values.keyKey for the slave memory store data.string
step.flows[].executors.additional_values.valueValue for the slave memory store data.any
step.flows[].executors.additional_thread_valuesData stored in the slave’s thread-local memory store, valid only within the flow, for slave-specific values.[]object
step.flows[].executors.additional_thread_values.keyKey for the slave thread memory store data.string
step.flows[].executors.additional_thread_values.valueValue for the slave thread memory store data.any
step.flows[].actionsAction definitions fired by events.[]object
step.flows[].actions[].idAction ID for unique.string
step.flows[].actions[].typeAction Type. Check the Action Types for available action types.string
step.flows[].actions[].onSpecify the trigger on the action.[]object
step.flows[].actions[].on[].flowWhich flow events to subscribe to.string
step.flows[].actions[].on[].eventWhich event to wait for in the specified flow. Supported events are listed under Events.string

Sample

kind: Flow
step:
  concurrency: -1
  flows:
    - id: "import"
      type: file
      mkdir: false
      file: {{ printf "scenario/%s/store_import.yaml" .Values.Case }}
    - id: "slaveSetup"
      type: flow
      mkdir: false
      concurrency: 0
      flows:
        - id: "slaveMemory"
          type: file
          mkdir: false
          file: "slave/memory.yaml"
          values: []
          thread_only_values: []
        - id: "slaveConnect"
          type: file
          mkdir: false
          file: "slave/connect.yaml"
          values: []
          thread_only_values:
            - key: "SlaveCount"
              value: {{ .Values.SlaveCount }}
          actions:
            - id: "disconnect"
              type: "slaveConnect:disconnect"
              on:
                - event: "sys:terminated"
                  flow: "request"
    - id: {{ .Values.Case }}
      type: flow
      mkdir: true
      concurrency: -1
      depends_on:
        - flow: slaveConnect
          event: slaveConnect:connected
        - flow: import
          event: sys:terminated
      flows:
        - id: "metrics"
          type: file
          mkdir: true
          file: "metrics/main.yaml"
          values:
            - key: "MetricsInterval"
              value: "5s"
            - key: "MetricsBreakTime"
              value: "90m"
          thread_only_values: []
        - id: "request"
          type: file
          mkdir: true
          file: "request.yaml"