wiki:GEC16Agenda/WiMAX-Tutorial/Coop/05

Previous

Writing the Experiment Script

Once all of the OMF application wrappers are installed on the OMF EC console, we can prepare the experiment script:


Deconstructing the experiment script:
Every OMF-enabled node in the experiment (purple node) is represented by a "defGroup" stanza.
Every OML-enabled application that runs on an OMF node is represented by an "addApplication" stanza within the "defGroup"


defProperty('hrnPrefix', "omf.witest.node", "Prefix to use for the HRN of resources")
defProperty('nodeList', "13,4,6", "List of IDs for the resources to use as senders")
defProperty('duration',50, "Duration of experiment")
defProperty('mcsUrl', "http://wimaxrf:5052/wimaxrf/bs/set?dl_profile1", "URL prefix for setting MCS")
defProperty('queue',50, "Length to buffer for")

property.nodeList.value.split(",").each do |i|
  defGroup("Receiver#{i}", "#{property.hrnPrefix}#{i}") do |node|
    # configure WiMAX interface
    node.net.x0.profile = '51'
    node.net.x0.ip = "128.238.38.%y%"
    node.net.x0.netmask = "255.255.255.0"
    # configure WiFi interface
    node.net.w0.mode = "adhoc"
    node.net.w0.type = 'g'
    node.net.w0.channel = "6"
    node.net.w0.essid = "witest"
    node.net.w0.ip = "192.168.0.%y%"
    node.net.w0.netmask = "255.255.255.0"
    # set up WiMAX logging application
    node.addApplication("wmxstat_universal") do |app|
      app.measure('status_link')
    end
    # set up iperf application
    node.addApplication("test:app:iperf") do |app|
      app.setProperty('udp', true)
      app.setProperty('server', true)
      app.setProperty('port', 12345)
      app.setProperty('interval', 1)
      app.measure('UDP_Rich_Info', :samples =>1)
    end
    # set up coopshim application
    node.addApplication("coopshim") do |app|
      app.setProperty('queue-length', "#{property.queue-length}")
      app.measure('req', :samples =>1)
      app.measure('recv', :samples =>1)
      app.measure('sent', :samples =>1)
    end

  end
end

onEvent(:ALL_UP_AND_INSTALLED) do |event|
  # Setting a QPSK modulation so clients will connect, even with a poor signal
  system("/usr/bin/wget -qO- #{property.mcsUrl}=13")
  wait 15
  # Setting a 64QAM modulation so that we can test the application where some clients
  # have a great deal of packet loss
  system("/usr/bin/wget -qO- #{property.mcsUrl}=21")
  system("/home/#{ENV['USER']}/getbsconf -i wimaxrf --oml-server tcp:localhost:3003 --oml-id console --oml-exp-id #{Experiment.ID}")
  allGroups.startApplications
  wait property.duration
  wait 10
  # Restore QPSK modulation
  system("/usr/bin/wget -qO- #{property.mcsUrl}=13")
  allGroups.stopApplications
  Experiment.done
end




Next

Last modified 11 years ago Last modified on 07/22/13 21:17:07