|   | 1 | [wiki:WikiStart Orbit] > [wiki:NodeHandler NodeHandler] > [wiki:NodeHandler/Tutorial Tutorial] > Understanding Hello World Experiment Script | 
          
          
            |   | 2 |  | 
          
          
            |   | 3 | = Understanding the tutorial script = | 
          
          
            |   | 4 | An experiment name is used to create the corresponding database to store results and to create a unique log for the same | 
          
          
            |   | 5 | {{{ | 
          
          
            |   | 6 | Experiment.name = "tutorial-1a" | 
          
          
            |   | 7 | Experiment.project = "orbit:tutorial" | 
          
          
            |   | 8 | }}} | 
          
          
            |   | 9 | Create a group of nodes called ‘sender’ and assign node1-1 to it | 
          
          
            |   | 10 | To the group sender, we assign a role that all nodes belonging to this group will  | 
          
          
            |   | 11 | play. Here, we instruct nodehandler to assign the prototype sender to node1-1  | 
          
          
            |   | 12 | Note that the ‘sender’ prototype is defined using a corresponding ‘sender.rb’ file  | 
          
          
            |   | 13 | and is tied to an actual underlying application that will actual get launched on the  | 
          
          
            |   | 14 | node (In this case, the application is ‘otg’ (ORBIT Traffic Generator) | 
          
          
            |   | 15 |  | 
          
          
            |   | 16 | These are the command line arguments that will be used by nodehandler when it  | 
          
          
            |   | 17 | asks the nodeagent to launch the application, for e.g, the following will  | 
          
          
            |   | 18 | description will cause nodeagent to launch ‘otg –destinationHost 192.168.1.3 -- | 
          
          
            |   | 19 | packetsize 1024  --rate 300 -- protocol udp | 
          
          
            |   | 20 | {{{ | 
          
          
            |   | 21 | defNodes('sender', [1,1]) {|node|                    | 
          
          
            |   | 22 | node.image = nil   #Default image on the node to be used for the experiment | 
          
          
            |   | 23 | node.prototype("test:proto:sender", { | 
          
          
            |   | 24 |    'destinationHost' => '192.168.1.3', | 
          
          
            |   | 25 |     'packetSize' => 1024, | 
          
          
            |   | 26 |     'rate' => 300, | 
          
          
            |   | 27 |     'protocol' => 'udp' | 
          
          
            |   | 28 |   }) | 
          
          
            |   | 29 | node.net.w0.mode = "ad-hoc" | 
          
          
            |   | 30 | } | 
          
          
            |   | 31 | }}} | 
          
          
            |   | 32 | Create a group of nodes called ‘receiver’ and assign node1-3 to it | 
          
          
            |   | 33 | To the group receiver, we assign a role that all nodes belonging to this group will  | 
          
          
            |   | 34 | play. Here, we instruct nodehandler to assign the prototype receiver to node1-3  | 
          
          
            |   | 35 | Note that the ‘sender’ prototype is defined using a corresponding ‘receiver.rb’ file  | 
          
          
            |   | 36 | and is tied to an actual underlying application that will actual get launched on the  | 
          
          
            |   | 37 | node (In this case, the application is ‘otr’ (ORBIT Traffic Receiver) | 
          
          
            |   | 38 |  | 
          
          
            |   | 39 | These are the command line arguments that will be used by nodehandler when it  | 
          
          
            |   | 40 | asks the nodeagent to launch the application, for e.g, the following will  | 
          
          
            |   | 41 | description will cause nodeagent to launch ‘otr -- hostname 192.168.1.3 –- protocol udp | 
          
          
            |   | 42 | {{{ | 
          
          
            |   | 43 | defNodes('receiver', [1,3]) {|node| | 
          
          
            |   | 44 |   node.image = nil   | 
          
          
            |   | 45 |   node.prototype("test:proto:receiver" , { | 
          
          
            |   | 46 |    'hostname' => '192.168.1.3', | 
          
          
            |   | 47 |     'protocol' => 'udp' | 
          
          
            |   | 48 |   }) | 
          
          
            |   | 49 |   node.net.w0.mode = "ad-hoc" | 
          
          
            |   | 50 | } | 
          
          
            |   | 51 | }}} | 
          
          
            |   | 52 | Configures the first wireless card on all nodes to 802.11b, essid ‘helloworld’ with ip  | 
          
          
            |   | 53 | addresses 192.168.x.y where x.y are the co-ordinates of the nodes | 
          
          
            |   | 54 | {{{ | 
          
          
            |   | 55 | allNodes.net.w0 { |w| | 
          
          
            |   | 56 |   w.type = 'b' | 
          
          
            |   | 57 |   w.essid = "helloworld" | 
          
          
            |   | 58 |   w.ip = "%192.168.%x.%y" | 
          
          
            |   | 59 | } | 
          
          
            |   | 60 | }}} | 
          
          
            |   | 61 | Now, start the application,  | 
          
          
            |   | 62 | This is a barrier where nodehandler waits to receive an OK message from each of | 
          
          
            |   | 63 | the nodeagents, only proceeds when initial configurations are OK. | 
          
          
            |   | 64 | {{{ | 
          
          
            |   | 65 | whenAllInstalled() {|node| | 
          
          
            |   | 66 | }}} | 
          
          
            |   | 67 | This command will request nodeagents to launch the application corresponding  | 
          
          
            |   | 68 | to the role that the node is playing, e.g sender will launch the application ‘otg’ and  | 
          
          
            |   | 69 | the receiver will launch the application ‘otr’ with the command line options | 
          
          
            |   | 70 | as specified before | 
          
          
            |   | 71 | {{{ | 
          
          
            |   | 72 | allNodes.startApplications | 
          
          
            |   | 73 | }}} | 
          
          
            |   | 74 | Conduct experiment for 60 seconds | 
          
          
            |   | 75 | {{{ | 
          
          
            |   | 76 |   wait 60 | 
          
          
            |   | 77 | }}} | 
          
          
            |   | 78 | End of experiment – Shut down all nodes | 
          
          
            |   | 79 | {{{ | 
          
          
            |   | 80 | Experiment.done | 
          
          
            |   | 81 | }}} |