wiki:Old/Documentation/OTG/ScriptsRepository/OtgAppDef

Version 1 (modified by Surya Satyavolu, 18 years ago) ( diff )

	#
	# Create an application representation from scratch
	#
	require 'handler/appDefinition'
	
 	a = AppDefinition.create('test:app:otg')
 	a.name = "otg"
 	a.version(1, 1, 2)
 	a.shortDescription = "Programmable traffic generator"
 	a.description = <<TEXT
 	OTG is a configurable traffic generator. It contains generators
 	producing various forms of packet streams and port for sending
 	these packets via various transports, such as TCP and UDP.
 	TEXT
 	
 	# addProperty(name, description, mnemonic, type, isDynamic = false, constraints = nil)
 	a.addProperty('protocol', 'Protocol to use [udp|tcp]', nil, String, false)
 	a.addProperty('generator', "Generator to use [cbr|expoo]'; nil, String, false)
 	#UDP/TCP
 	a.addProperty("port",  "Local port to bind to [int]", nil, Integer, false)
 	a.addProperty("dsthostname", "Name of destination host [string]", nil, String, false)
 	a.addProperty("dstport", "Destination port to send to", nil, String, false)
 	a.addProperty("broadcast", "broadcast on/off", nil, String, false)
 	
 	# RAW
 	a.addProperty("txdev","the device to tranmsit packets", nil, String, false)
 	a.addProperty("dstmacaddr", "MAC address of the destination", nil, String, false)               
 	
 	# CBR Generator
 	a.addProperty("size", "Size of packet [bytes]", nil, Integer, false)
 	a.addProperty("interval", "Internval between consecutive packets [msec]", nil, Integer, false)
 	a.addProperty("rate", "Data rate of the flow [kbps]", nil, Integer, false)
 	
 	# Exponential On/Off traffic generator
 	a.addProperty("ontime", "average burst length in milliseconds", nil, Integer, false)
 	a.addProperty("offtime", "average idle time in milliseconds", nil, Integer, false)
 	
 	a.addMeasurement("senderport", nil, [
 	    ['pkt_seqno', 'long'],
 	    ['pkt_size', 'long'],
 	    ['gen_timestamp', Float],
 	    ['tx_timestamp', 'long']
 	])
 	
 	#a.aptName = 'orbit-otg'
 	
 	a.path = "/usr/bin/otg"
 	
 	
	if $0 == __FILE__
	  require 'stringio'
 	  require 'rexml/document'
 	  include REXML
 	   
 	  sio = StringIO.new()
 	  a.to_xml.write(sio, 2)
 	  sio.rewind
 	  puts sio.read
 	 
 	  sio.rewind
 	  doc = Document.new(sio)
 	  t = AppDefinition.from_xml(doc.root)
 	 
 	  puts
 	  puts "-------------------------"
 	  puts
 	  t.to_xml.write($stdout, 2)
 	  	end

Note: See TracWiki for help on using the wiki.