Skip to content

Specs Reference

Ioannis Charalampidis edited this page Apr 22, 2016 · 13 revisions

name:

The machine-readable name of the test

name: mytest

title:

The human-readable title of the test

title: My Test

notes:

One or more notes to include on the final report. This has no effect on the test.

notes:
  Author: Ioannis
  Scope: Bandwidth measurements

globals:

Defines global variables visible in macros all around the specifications.

globals:
   bind_ip: 192.168.1.1  # Makes ${bind_ip} available everywhere

metrics:

Which 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.

test-cases:

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 ]

nodes:

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 

environments:

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 application

applications:

Defines 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

parsers:

Defines 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 configuration

streamlets:

Defines 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 use

streams:

The 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
    enabled: true     # [Optional] Enable or disable this stream (useful when combined with macro)
    define:           # [Optional] Define a variable in this scope
      macro: value
    alias:            # [Optional] Rename metrics collected in this context to a different name
      new_name: old_name

Clone this wiki locally