defProperty('source1', "nodeA-fivenodeping", "ID of a resource") defProperty('source2', "nodeB-fivenodeping", "ID of a resource") defProperty('source3', "nodeC-fivenodeping", "ID of a resource") defProperty('source4', "nodeD-fivenodeping", "ID of a resource") defProperty('source5', "nodeE-fivenodeping", "ID of a resource") #defProperty('graph', true, "Display graph or not") defProperty('sinkaddr11', '192.168.1.2', "Ping destination address") defProperty('sinkaddr12', '192.168.1.4', "Ping destination address") defProperty('sinkaddr11', '192.168.6.10', "Ping destination address") defProperty('sinkaddr12', '192.168.5.12', "Ping destination address") defProperty('sinkaddr21', '192.168.4.11', "Ping destination address") defProperty('sinkaddr22', '192.168.2.12', "Ping destination address") defProperty('sinkaddr23', '192.168.1.13', "Ping destination address") defProperty('sinkaddr31', '192.168.5.11', "Ping destination address") defProperty('sinkaddr32', '192.168.2.10', "Ping destination address") defProperty('sinkaddr33', '192.168.3.13', "Ping destination address") defProperty('sinkaddr34', '192.168.6.14', "Ping destination address") defProperty('sinkaddr41', '192.168.1.10', "Ping destination address") defProperty('sinkaddr42', '192.168.3.12', "Ping destination address") defProperty('sinkaddr51', '192.168.6.12', "Ping destination address") defApplication('ping') do |app| app.description = 'Simple Definition for the ping-oml2 application' # Define the path to the binary executable for this application app.binary_path = '/usr/local/bin/ping-oml2' # Define the configurable parameters for this application # For example if target is set to foo.com and count is set to 2, then the # application will be started with the command line: # /usr/bin/ping-oml2 -a foo.com -c 2 app.defProperty('target', 'Address to ping', '-a', {:type => :string}) app.defProperty('count', 'Number of times to ping', '-c', {:type => :integer}) # Define the OML2 measurement point that this application provides. # Here we have only one measurement point (MP) named 'ping'. Each measurement # sample from this MP will be composed of a 4-tuples (addr,ttl,rtt,rtt_unit) app.defMeasurement('ping') do |m| m.defMetric('dest_addr',:string) m.defMetric('ttl',:uint32) m.defMetric('rtt',:double) m.defMetric('rtt_unit',:string) end end defGroup('Source1', property.source1) do |node| node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr12) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end end defGroup('Source2', property.source2) do |node| node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr11) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr21) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr22) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr23) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end end defGroup('Source3', property.source3) do |node| node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr31) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr32) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr33) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr34) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end end defGroup('Source4', property.source4) do |node| node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr41) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr42) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end end defGroup('Source5', property.source5) do |node| node.addApplication("ping") do |app| app.setProperty('target', property.sinkaddr51) app.setProperty('count', 30) #app.setProperty('interval', 1) app.measure('ping', :samples => 1) end end #defGroup('Sink1', property.sink1) do |node| #end #defGroup('Sink2', property.sink2) do |node| #end #defGroup('Sink3', property.sink3) do |node| #end #defGroup('Sink4', property.sink4) do |node| #end #defGroup('Sink5', property.sink5) do |node| #end onEvent(:ALL_UP_AND_INSTALLED) do |event| info "Starting the ping" after 5 do allGroups.startApplications end after 70 do info "Stopping the ping" allGroups.stopApplications Experiment.done end end defGraph 'RTT' do |g| g.ms('ping').select(:oml_seq, :dest_addr, :rtt) g.caption "RTT of received packets." g.type 'line_chart3' g.mapping :x_axis => :oml_seq, :y_axis => :rtt, :group_by => :dest_addr g.xaxis :legend => 'oml_seq' g.yaxis :legend => 'rtt', :ticks => {:format => 's'} end