'''[wiki:GEC16Agenda/WiMAX-Tutorial/Streamload/05 Previous]''' == Writing the Experiment Script == While the disk image is loading onto his nodes, he prepares an experiment script. This script describes the configuration of all the OMF-enabled resources in the experiment, and the sequence of events in the experiment. The experiment script is given here: {{{ #!ruby defProperty('hrnSuffix', ".sb4.orbit-lab.org", "Suffix to use for the HRN of resources") defProperty('hrnPrefix', "node1-", "Prefix to use for the HRN of resources") defProperty('client1', "6", "ID for the first resource to use as downloader") defProperty('client2', "5", "ID for the second resource to use as downloader") defProperty('server', "7", "ID for the resource to use as server") defProperty('duration', 120, "Duration of experiment") defProperty('attUrl', "http://internal2dmz.orbit-lab.org:5052/instr/set?", "Path to use to set attenuation") defProperty('buffer', 4, "Buffer size for downloading base layer") defProperty('window', 3, "Window to use for streamloading") defGroup("server", "#{property.hrnPrefix}#{property.server}#{property.hrnSuffix}") do |node| node.net.x0.profile = '51' node.net.x0.ip = '10.41.14.%y%' node.net.x0.netmask = "255.255.0.0" end defGroup("client1", "#{property.hrnPrefix}#{property.client1}#{property.hrnSuffix}") do |node| node.net.x0.profile = '51' node.net.x0.ip = '10.41.14.%y%' node.net.x0.netmask = "255.255.0.0" node.addApplication("wmxstat_universal") do |app| app.measure('status') end node.addApplication("streamload") do |app| app.setProperty('url', "http://10.41.14.#{property.server}:8000/root/") app.setProperty('video', "vidoe#{property.buffer}") app.setProperty('window', property.window) app.setProperty('streamload', "True") app.measure('dl', :samples =>1) app.measure('conf', :samples =>1) app.measure('play', :samples =>1) end end defGroup("client2", "#{property.hrnPrefix}#{property.client2}#{property.hrnSuffix}") do |node| node.net.x0.profile = '51' node.net.x0.ip = '10.41.14.%y%' node.net.x0.netmask = "255.255.0.0" node.addApplication("wmxstat_universal") do |app| app.measure('status') end node.addApplication("streamload") do |app| app.setProperty('url', "http://10.41.14.#{property.server}:8000/root/") app.setProperty('video', "video#{property.buffer}") app.setProperty('window', property.window) app.setProperty('streamload', "False") app.measure('dl', :samples =>1) app.measure('conf', :samples =>1) app.measure('play', :samples =>1) end end onEvent(:ALL_UP_AND_INSTALLED) do |event| wait 5 system("/home/#{ENV['USER']}/getbsconf -i wimaxrf --oml-server tcp:oml:3003 --oml-id console --oml-exp-id #{Experiment.ID}") info "This is my experiment ID: #{Experiment.ID}" group("server").exec("/usr/bin/python -m SimpleHTTPServer") group("client1").startApplications wait property.duration group("client1").stopApplications wait 5 group("client2").startApplications wait property.duration group("client2").stopApplications wait 5 allGroups.stopApplications Experiment.done end }}} [[br]] > '''Deconstructing the experiment script''': [[br]] > Every OMF-enabled node in the experiment (purple node) is represented by a "defGroup" stanza. [[br]] > Every OML-enabled application that runs on an OMF node is represented by an "addApplication" stanza within the "defGroup" [[br]] '''[wiki:GEC16Agenda/WiMAX-Tutorial/Streamload/07 Next]'''