Scenarios
- Defined using simple XML files
- Defined using simple XML files
- Allows hierarchical structure and schema validation
- Has reasonably balanced horizontal aestetics - compared to JSON
Definition files are located in /tools/test/scenarios
Scenario can import other scenarios
- import can be qualified with a namespace
Comprised of steps or groups with dependencies
- Dependencies can be inherent or injected later
- Defines process flow as an execution DAG
Steps and Groups
- Step is an individual node in the scenario process flow
- associated with some form of executable via exec attribute
- Group is a collection of other groups and steps
- used for grouping related sets of steps
- used for encapsulation and definition of shared dependencies
- Has a name unique within the scope of a scenario
- namespace can be used to preserve uniqueness for scenario import
- Specifies other steps or groups it inherently requires
- Can be marked as optional using if or unless attributes
Properties and Environment
- Most attributes support property expansion
- specified as ${property}
- evaluated using values of environment variables or Java properties
- Pass-through properties for downstream steps
- @key=value included in output one property per line
- only supported for exec attribute
- Steps and groups can specify env attribute
- value can be a path to a file to be sourced-in
- value can be “~“ to indicate command exit status should be ignored
- Steps and groups can specify cwd attribute
- value is directory to be set before execution of the step command
Parallel Chains
- Dynamically clones process flow subgraph region
- Used for repeating steps for independent portions of test environment
- e.g. install, uninstall, collect logs on all ONOS instances concurrently
- Has an iteration variable specified as ${var#} property
- Clones subgraphs for each of var1, var2, … varN
- Stops cloning when varX becomes undefined or empty
- Value N can be abstracted using ${#} special property
Sequential Chains
- Dynamically clones process flow subgraph region
- Used for sequencing steps for portions of test environment
- e.g. process a task for all ONOS instances sequentially
- Has an iteration variable specified as ${var#} property
- Clones subgraphs for each of var1, var2, … varN
- Stops cloning when varX becomes undefined or empty
- Value N can be abstracted using ${#} special property
- Value N-1 can be abstracted using ${#-1} property