Test Step Commands
This page describes the structure of test step commands and provides a reference for all available commands.
Test Step Command Structure
Each test step in a stage has this structure:
| Attribute | Type | Required | Description |
|---|---|---|---|
cmd | string | Yes | Identifies which test step to execute |
name | string | Yes | Uniquely identifies the step for reports and logs |
transport | TransportObject | Yes | Defines how the command is executed |
parameters | object | Yes | Command-specific parameters |
options | OptionsObject | No | Additional command options |
Examples
- cmd: dutctl
name: Shutdown the DUT.
parameters:
host: "[[attributes.Flasher]]"
command: power
args: ["off"]
- cmd: dutctl
name: Flash the provided binary.
parameters:
host: "[[attributes.Flasher]]"
command: flash
args: [write, "[[input.Binary]]"]
- cmd: sleep
name: Wait for the DUT to settle
parameters:
duration: 15s
- cmd: dutctl
name: Turn the DUT on
parameters:
host: "[[attributes.Flasher]]"
command: power
args: ["hardreset"]
options:
timeout: 2m
- cmd: ping
name: Wait for the device to become online.
options:
timeout: 4m
parameters:
host: "[[attributes.Host]]"Transport
The transport object defines how test steps are executed, either locally or on a remote machine. This configuration ensures proper command execution and authentication.
| Attribute | Type | Required | Description |
|---|---|---|---|
proto | string | Yes | Protocol for command execution: local (local execution) or ssh (remote execution) |
options | TransportOptions | Required for SSH | Protocol-specific configuration options |
Transport Options
When using the SSH protocol (proto: "ssh"), the following options are available:
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
host | string | Yes | Hostname or IP address of remote machine | |
port | integer | No | 22 | SSH port number |
user | string | Yes | Username for authentication | |
password | string | No* | User’s password | |
identity_file | string | No* | Path to SSH private key or template reference (e.g., [[ssh-keys.key_name]]) | |
timeout | string | No | Timeout duration for SSH connections (e.g., ’30s’, ‘5m’) | |
jump_host | JumpHostOptions | No | Configuration for jump host (bastion) to connect through |
* Both password and identity_file are optional. If neither is provided, all organization SSH keys are automatically discovered and tried. If identity_file is specified, only that key is used. See SSH Key Management for details.
Jump Host Options
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
host | string | Yes | Hostname or IP address of jump host | |
port | integer | No | 22 | SSH port number for jump host |
user | string | Yes | Username for authentication on jump host | |
password | string | No* | Password for jump host | |
identity_file | string | No* | Path to SSH private key or template reference for jump host | |
timeout | string | No | Timeout duration for jump host SSH connections (e.g., ’30s’, ‘5m’) |
* Both password and identity_file are optional for jump host. If neither is provided, auto-discovery is used.
Protocol-Specific Requirements
Local Protocol
When using proto: "local":
- Commands execute on the local machine
- No options are required or allowed
SSH Protocol
When using proto: "ssh":
- The
optionsobject is required - Must provide
hostanduser - Authentication (
passwordoridentity_file) is optional:- If
identity_fileis provided, only that SSH key is used - If
passwordis provided, password authentication is used - If neither is provided, all organization SSH keys are automatically discovered and tried (auto-discovery)
- You can provide both
passwordandidentity_file, and both methods will be tried
- If
Transport Examples
Local Execution
transport:
proto: localSSH with Password
transport:
proto: ssh
options:
host: "192.168.1.100"
user: "admin"
password: "secretpassword"SSH with Organization SSH Key
Use SSH keys managed at the organization level via template syntax:
transport:
proto: ssh
options:
host: "[[attributes.Host]]"
user: "root"
identity_file: "[[ssh-keys.deployment_key]]"See SSH Key Management for details on managing organization SSH keys.
SSH with Auto-Discovery
When no authentication is specified, all organization SSH keys are automatically discovered and tried:
transport:
proto: ssh
options:
host: "[[attributes.Host]]"
user: "root"
# No password or identity_file - uses auto-discoverySSH with Jump Host
transport:
proto: ssh
options:
host: "192.168.1.100"
user: "admin"
identity_file: "[[ssh-keys.deployment_key]]"
jump_host:
host: "bastion.example.com"
user: "jump_user"
identity_file: "[[ssh-keys.deployment_key]]"
port: 22
timeout: "30s"Options
The options object provides common configuration settings that can be applied to any test step. These settings control the test step’s execution behavior.
| Attribute | Type | Required | Default | Description |
|---|---|---|---|---|
timeout | string | No | 6h00m00s | Maximum duration for test step execution. If the step takes longer than this timeout, it will fail. Format: hours(h), minutes(m), seconds(s) |
path | string | No | Optional path specifying the directory where required files for command execution are copied to on the machine before the command runs. If not specified these tools will be copied to /root/default-tools instead. |
Timeout Format
The timeout value must follow this pattern: ^((\\d+h)?(\\d+m)?(\\d+s)?)?$
Valid examples:
"30s"- 30 seconds"5m"- 5 minutes"2h30m"- 2 hours and 30 minutes"1h30m45s"- 1 hour, 30 minutes, and 45 seconds
Timeout Examples
Basic Timeout
options:
timeout: "30s"Complex Timeout
options:
timeout: "1h30m45s"Command Categories
Commands are organized into the following categories:
File Operations
File manipulation and archive operations.
Execution
Execute commands on target systems.
- Command - Execute arbitrary commands
Network
Network connectivity and testing.
- Ping - Wait for network connectivity
Hardware Control
Control and manage hardware devices.
Firmware Analysis
Firmware security and vulnerability scanning.
- Binarly - Binarly firmware analysis
- ChipSec - ChipSec security analysis
- Firmware Version - Read firmware version
- FWHunt - FWHunt vulnerability scanning
- FWTS - Firmware Test Suite
- HSI - Hardware Security Index
BIOS Operations
BIOS/UEFI configuration and management.
- BIOS Certificate - Manage BIOS certificates
- BIOS Settings Get - Read BIOS settings
- BIOS Settings Set - Update BIOS settings
- SecureBoot Management - Manage SecureBoot
CPU Operations
CPU performance and monitoring.
Benchmarking
Performance testing and benchmarking.
- S0ix-Selftest - S0ix state testing
- SysBench - System benchmarking
Automation
Test automation and control flow.
- Robot Test Framework - Run Robot Framework tests
- Sleep - Wait for specified duration
All Commands Reference
Complete alphabetical list of all available commands:
| Command | Category | Description |
|---|---|---|
| Archive | File Operations | Extract archives (zip, tar, tar.gz, etc.) |
| Binarly | Firmware Analysis | Analyze firmware with Binarly |
| BIOS Certificate | BIOS Operations | Manage BIOS/UEFI certificates |
| BIOS Settings Get | BIOS Operations | Read current BIOS settings |
| BIOS Settings Set | BIOS Operations | Update BIOS settings |
| ChipSec | Firmware Analysis | Run ChipSec security checks |
| Command | Execution | Execute arbitrary commands |
| Copy | File Operations | Copy files/directories between locations |
| CPULoad | CPU Operations | Generate CPU load for testing |
| CPUSet | CPU Operations | Set CPU affinity for processes |
| CPUStats | CPU Operations | Collect CPU performance statistics |
| DUTCTL | Hardware Control | Control DUT hardware (power, flash, etc.) |
| Firmware Version | Firmware Analysis | Read firmware version information |
| FWHunt | Firmware Analysis | Scan firmware for vulnerabilities |
| FWTS | Firmware Analysis | Run Firmware Test Suite |
| HSI | Firmware Analysis | Check Hardware Security Index |
| PiKVM | Hardware Control | Control device via PiKVM |
| Ping | Network | Wait for network connectivity |
| Qemu | Hardware Control | Manage QEMU virtual machines |
| Robot Test Framework | Automation | Execute Robot Framework test suites |
| S0ix-Selftest | Benchmarking | Test S0ix suspend states |
| SecureBoot Management | BIOS Operations | Manage SecureBoot configuration |
| Sleep | Automation | Pause execution for specified duration |
| SysBench | Benchmarking | Run system benchmarks |