Version 11 (modified by, 6 years ago) (diff)


<-- Back to LabWiki and OEDL | Jump to Main Tutorial Page | Next to Experiment 2 -->

Experiment 1


The objective of this first step is to show how to design, execute, and view the result of a very simple experiment using LabWiki and OEDL.

The scenario of this simple experiment involves 2 computing resources (i.e. ExoGENI virtual machines), which will send ping probes to each other, and report the observed delays.

As mentioned earlier, the resources for this experiment have already been allocated and provisioned. Thus at this stage, you should have received the names of your allocated resource, if not please let the session presenters know.

Part 1 - Design/Setup

For help on all actions regarding LabWiki, please refer to the previous page

  1. First, if you have not done it yet, login into LabWiki
  1. Create a new experiment file with the name of your choice
  1. Cut-and-paste the following OEDL experiment description into that file, then save it
    defProperty('resource1', "your_resource_ID", "ID of a resource")
    defProperty('resource2', "your_resource_ID", "ID of a resource")
    defApplication('ping') do |app|
      app.description = 'Simple Definition for the ping-oml2 application'
      app.binary_path = '/usr/bin/ping-oml2'
      app.defProperty('target', 'Address to ping', '', {:type => :string})
      app.defProperty('count', 'Number of times to ping', '-c', {:type => :integer})
      app.defMeasurement('ping') do |m|
      app.defMeasurement('rtt_stats') do |m|
    defGroup('First_Peer', property.resource1) do |g| = ""
      g.addApplication("ping") do |app|
        app.setProperty('target', '')
        app.setProperty('count', 10)
        app.measure('ping', :samples => 1)
        app.measure('rtt_stats', :samples => 1)
    defGroup('Second_Peer', property.resource2) do |g| = ""
      g.addApplication("ping") do |app|
        app.setProperty('target', '')
        app.setProperty('count', 15)
        app.measure('ping', :samples => 1)
        app.measure('rtt_stats', :samples => 1)
    onEvent(:ALL_UP_AND_INSTALLED) do |event|
      info "This is my first OMF experiment"
      after 5.seconds do
      after 30.seconds do
    defGraph 'RTT1' do |g|'ping').select {[ :oml_sender_id, :oml_ts_client, :oml_ts_server, :rtt ]}
      g.caption "Round Trip Time (RTT) reported by each resource"
      g.type 'line_chart3'
      g.mapping :x_axis => :oml_ts_client, :y_axis => :rtt, :group_by => :oml_sender_id
      g.xaxis :legend => 'time [s]'
      g.yaxis :legend => 'RTT [ms]', :ticks => {:format => 's'}
    defGraph 'RTT2' do |g|'rtt_stats').select {[ :oml_sender_id, :avg ]}
      g.caption "RTT Comparison Between Resources [ms]"
      g.type 'pie_chart2'
      g.mapping :value => :avg, :label => :oml_sender_id
  1. Here is a walk-through the above OEDL experiment description. For more details on each OEDL commands described below, please refer to the OEDL reference page
    1. defProperty. This command is used to define experiment properties (aka variables), you can set the values of these properties as parameters for each experiment instances, and access them throughout the entire experiment run. Its syntax is available here. In this example, we are defining 2 properties, to hold the names of each of the resources that we will use.
    2. defApplication. This command declares the details of an application that we would like to use in this experiment. The application may be already installed on the resources or may be deployed as part of the experiment's execution. The information declared via this command are generic attributes of the application (e.g. the path to its binary), the parameters that it accepts (e.g. 'target' in this example), and the measurements that it provides (e.g. "rtt_stats" in this example). This command's syntax is available here
    3. defGroup. This command is used to define a group of resources which we will use in this experiment. A group may contain many resources and a resource may be included in many groups. This commands may also be used to associate a set of configurations and applications to all resources in a group. Its syntax is available here. In this example, we are defining 2 groups (First_Peer and Second_Peer), each with only one resource, then we are configuring the IP addresses of these resources, and associating the previously declared application to them.
    4. onEvent.
    5. defGraph.

Part 2 - Execute

Part 3 - Finish

Help & Additional Resources

<-- Back to Experiment | Jump to Main Tutorial Page | Next to Experiment 2 -->

Attachments (6)

Download all attachments as: .zip