
########## Benchmark tests ##################################
	# The purpose of this experiment is to benchmark the node CPU
	# capabilities in terms of the maximum offered load that it can
	# generate and consume on the wired Ethernet link
	
	# It has one sender and one receiver
	# Sender, Receiver - Wired interface
	# UDP flow at 500Mbps
	# Receiver reports throughput, jitter and packet loss per second
 	# Iperf traffic generator
 	############################################################
 	
 	Experiment.name = "iperf-udp"
 	Experiment.project = "orbit:tutorial"
 	
 	#
 	# Define nodes used in experiment
 	#
 	###########################################
 	# Sender definition and configuration
 	###########################################
 	defNodes('sender', [4,1]) {|node|
 	  node.image = nil  # assume the right image to be on disk
 	  # use prototype "sender"
 	  # and set it's property "destinationHost" to
 	  # the receiver node
 	  # and bind the remaining properties to the
 	  # experiment property space
 	  node.prototype("test:proto:iperfudpsender", {
 	    'client' => '10.10.4.3',  #Send to
 	    'use_udp' => nil,           #UDP client
 	    'sender_rate' => '500M',      #Input offered load (bits per sec)
 	    'len' => 1400               #Payload length (bytes)
 	  })
 	}
 	###########################################
 	# Receiver definition and configuration
 	###########################################
 	
 	defNodes('receiver', [4,3]) {|node|
 	  node.image = nil  # assume the right image to be on disk
 	  node.prototype("test:proto:iperfudpreceiver" , {
 	  'server' => nil,         # Server
 	  'use_udp' => nil,        # Use UDP
 	  'len' => 1400,           #Payload length (bytes)
 	  'report_interval' => 10   #Report interval(seconds)
 	  })
 	}
 	
 	###########################################
 	# When nodeAgents have reported "OK" to
 	# the nodeHandler start the application
 	###########################################
 	whenAllInstalled() {|node|
 	
 	  nodes('receiver').startApplications
 	
 	  wait 10
 	  nodes('sender').startApplications
 	  wait 60
 	 
 	  allNodes.stopApplications 
 	
 	
 	  Experiment.done
 	
 	}
