[wiki:WikiStart Orbit] > [wiki:NodeHandler NodeHandler] > [wiki:NodeHandler/Tutorial Tutorial] > Understanding Hello World Experiment Script = Understanding the tutorial script = An experiment name is used to create the corresponding database to store results and to create a unique log for the same {{{ Experiment.name = "tutorial-1a" Experiment.project = "orbit:tutorial" }}} Create a group of nodes called ‘sender’ and assign node1-1 to it To the group sender, we assign a role that all nodes belonging to this group will play. Here, we instruct nodehandler to assign the prototype sender to node1-1 Note that the ‘sender’ prototype is defined using a corresponding ‘sender.rb’ file and is tied to an actual underlying application that will actual get launched on the node (In this case, the application is ‘otg’ (ORBIT Traffic Generator) These are the command line arguments that will be used by nodehandler when it asks the nodeagent to launch the application, for e.g, the following will description will cause nodeagent to launch ‘otg –destinationHost 192.168.1.3 -- packetsize 1024 --rate 300 -- protocol udp {{{ defNodes('sender', [1,1]) {|node| node.image = nil #Default image on the node to be used for the experiment node.prototype("test:proto:sender", { 'destinationHost' => '192.168.1.3', 'packetSize' => 1024, 'rate' => 300, 'protocol' => 'udp' }) node.net.w0.mode = "ad-hoc" } }}} Create a group of nodes called ‘receiver’ and assign node1-3 to it To the group receiver, we assign a role that all nodes belonging to this group will play. Here, we instruct nodehandler to assign the prototype receiver to node1-3 Note that the ‘sender’ prototype is defined using a corresponding ‘receiver.rb’ file and is tied to an actual underlying application that will actual get launched on the node (In this case, the application is ‘otr’ (ORBIT Traffic Receiver) These are the command line arguments that will be used by nodehandler when it asks the nodeagent to launch the application, for e.g, the following will description will cause nodeagent to launch ‘otr -- hostname 192.168.1.3 –- protocol udp {{{ defNodes('receiver', [1,3]) {|node| node.image = nil node.prototype("test:proto:receiver" , { 'hostname' => '192.168.1.3', 'protocol' => 'udp' }) node.net.w0.mode = "ad-hoc" } }}} Configures the first wireless card on all nodes to 802.11b, essid ‘helloworld’ with ip addresses 192.168.x.y where x.y are the co-ordinates of the nodes {{{ allNodes.net.w0 { |w| w.type = 'b' w.essid = "helloworld" w.ip = "%192.168.%x.%y" } }}} Now, start the application, This is a barrier where nodehandler waits to receive an OK message from each of the nodeagents, only proceeds when initial configurations are OK. {{{ whenAllInstalled() {|node| }}} This command will request nodeagents to launch the application corresponding to the role that the node is playing, e.g sender will launch the application ‘otg’ and the receiver will launch the application ‘otr’ with the command line options as specified before {{{ allNodes.startApplications }}} Conduct experiment for 60 seconds {{{ wait 60 }}} End of experiment – Shut down all nodes {{{ Experiment.done }}}