-
Notifications
You must be signed in to change notification settings - Fork 0
Specs Reference
The machine-readable name of the test
name: mytestThe human-readable title of the test
title: My TestOne or more notes to include on the final report. This has no effect on the test.
notes:
Author: Ioannis
Scope: Bandwidth measurementsDefines details regarding the generation of the report
report:
name: report1 # [Optional] The name of the report (defaults to test name)
path: /path # [Optional] Were to write the report at
keep_output: /path # [Optional] If defined, keep the STDOUT/ERR of the application
in a logfile in the path specified.Defines global variables visible in macros all around the specifications.
globals:
bind_ip: 192.168.1.1 # Makes ${bind_ip} available everywhereWhich metrics is the test observing. These metrics will be included on the final report. You can specify various configuration options for each metric in order to properly format it's value.
While the test runs, roBob collects a series of values along with their timestamp that are later processed by an aggregator class in order to produce the final value of each metric. Refer to Aggregate Classes for more details regarding the possible values of the aggregate property.
By default roBob will calculate the average of the values.
metrics:
- name: metric1 # [Required] Metric name
prefix: si|iec # [Optional] Apply SI prefix (kilo,mega,...)
# or IEC (kibibyte,mibibyte,...)
units: "" # [Optional] The units of this metric
scale: 1.0 # [Optional] Multiply final result by this
initial: 0 # [Optional] The initial value of this metric
dec: 2 # [Optional] In case of float values, the number of decimals
showunits: false # [Optional] Set to 'true' to show units on every occurance
# of this metric rather than only in the title.
aggregate: [] # [Optional] One or more aggregation objects for this metric
aggregate: #
- class: ... # [Optional] You can also configure each aggregator using this
... # syntax.
stdin: | # [Optional] Send the specified payload to standard input
...Defines the test cases to run. The final test-cases will be calculated as the product of the individual test-cases specified in this entry. For example, the following will create 6 test cases: (1024,1), (1024,2), (2048,1), (2048,2) etc..
test-cases:
message_size: [ 1024, 2048, 4096 ]
interval: [ 1, 2 ]Defines the machines involved in the test:
Refer to Access Classes for more details regarding the possible values of the access property.
machines:
- name: machine1 # [Required] Machine name
host: 192.168.1.1 # [Required] Hostname or IP of the machine
access: # [Required] One or more access mechanisms
- class: ... # [Required] Name of the access class to sue
... # Each class has it's own specifics Defines the environment variable groups used in the applications. Each group can be used by one or more applications.
environments:
env1: # The name of the environment variable group
LD_LIBARY_PATH: ".." # The variables to expose to the applicationDefines the applications being controlled by the test:
apps:
- name: app1 # [Required] App name
binary: /path/to # [Required] Path to application binary
args: [ ] # [Optional] An array of arguments to pass to the binary
env: env1 # [Optional] Which environment variable group to use
parser: parser1 # [Optional] The name of the output parser to use
parsers: [ ] # [Optional] An array of output parsers to use
files: # [Optional] Create the given file(s) with the specified
# contents before running the application
- name: file1 # [Required] The name of the file
contents: .. # [Required] The contents of the file (macros supported)
path: /.. # [Optional] The full path to the file to create. If missing
# a random file name will be generated
suffix: .tmp # [Optional] Use a custom suffix when generating random fileDefines the parsers and configures them in order to parse the application output and update the metrics accordingly.
Refer to Parser Classes for more details regarding the possible values of the class property.
parsers:
- name: app1 # [Required] Parser name
class: robob... # [Required] Class name of this parser
... # Each class has it's own specific configurationDefines small scripts that runs in parallel with the monitored application and collects additional information that can be parsed with a separate parser. Each streamlet is a shell script that should run infinitely and will be interrupted when the main application exits.
There is already a collection of streamlets available
streamlets:
- name: streamlet1 # [Required] Streamlet name
script: | # [Required] The contents of the script to run
while true; do
uptime
sleep
done
title: Streamlet 1 # [Optional] Human-readable streamlet name
parser: parser1 # [Optional] The name of the output parser to use
parsers: [ ] # [Optional] An array of multiple parsers to useThe streams to open for running the test. Each stream is a separate application on a separate node.
streams:
- node: node1 # [Required] Node on which to run the app
app: app1 # [Required] The app to run
delay: 1[s|m|h] # [Optional] How long to wait before starting this stream
timeout: 0[s|m|h] # [Optional] How long to wait before stopping the stream due to timeout
idle: 0[s|m|h] # [Optional] How long to wait for some output before considering the stream stale
enabled: true # [Optional] Enable or disable this stream (useful when combined with macro)
filter: [ ] # [Optional] Track only the specified metrics and not everything what parsers detect
streamlets: [ ] # [Optional] Use one or more streamlets in this stream
streamlets:
- streamlet: n # [Optional] Another syntax to specify a streamlet with the additional
define: # ability to define variables in streamlet scope
var: value
alias: # [Optional] Rename metrics streamlet parsers
old_name: new_name
define: # [Optional] Define a variable in this scope
macro: value
alias: # [Optional] Rename metrics from app and streamlet parsers
old_name: new_name