test-suite-diffusion3.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:41k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (c) 1998 University of Southern California.
  3. # All rights reserved.                                            
  4. #                                                                
  5. # Redistribution and use in source and binary forms are permitted
  6. # provided that the above copyright notice and this paragraph are
  7. # duplicated in all such forms and that any documentation, advertising
  8. # materials, and other materials related to such distribution and use
  9. # acknowledge that the software was developed by the University of
  10. # Southern California, Information Sciences Institute.  The name of the
  11. # University may not be used to endorse or promote products derived from
  12. # this software without specific prior written permission.
  13. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  14. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  15. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16. # To run all tests: test-all-diffusion3
  17. # to run individual test:
  18. # ns test-suite-diffusion3.tcl simple-ping
  19. # To view a list of available test to run with this script:
  20. # ns test-suite-diffusion3.tcl
  21. # This test validates a simple diffusion (ping) application
  22. remove-all-packet-headers       ; # removes all except common
  23. add-packet-header Flags IP TCP Diffusion ARP LL Mac 
  24. # hdrs reqd for validation test
  25. # FOR UPDATING GLOBAL DEFAULTS:
  26. Agent/TCP set precisionReduce_ false ;   # default changed on 2006/1/24.
  27. Agent/TCP set rtxcur_init_ 6.0 ;      # Default changed on 2006/01/21
  28. Agent/TCP set updated_rttvar_ false ;  # Variable added on 2006/1/21
  29. Agent/TCP set minrto_ 1
  30. # default changed on 10/14/2004.
  31. Queue/RED set bytes_ false
  32. # default changed on 10/11/2004.
  33. Queue/RED set queue_in_bytes_ false
  34. # default changed on 10/11/2004.
  35. Agent/TCP set tcpTick_ 0.1
  36. # The default for tcpTick_ is being changed to reflect a changing reality.
  37. Agent/TCP set rfc2988_ false
  38. # The default for rfc2988_ is being changed to true.
  39. Agent/TCP set exitFastRetrans_ false
  40. Mac/802_11 set bugFix_timer_ false;     # default changed 2006/1/30
  41. if {![TclObject is-class Agent/DiffusionRouting]} {
  42. puts "Diffusion3 module is not present; validation skipped"
  43. exit 2
  44. }
  45. # ======================================================================
  46. # Define options
  47. # ======================================================================
  48. global opt
  49. set opt(chan) Channel/WirelessChannel
  50. set opt(prop) Propagation/TwoRayGround
  51. set opt(netif) Phy/WirelessPhy
  52. set opt(mac) Mac/802_11
  53. set opt(ifq) Queue/DropTail/PriQueue
  54. set opt(ll) LL
  55. set opt(ant)            Antenna/OmniAntenna
  56. set opt(ifqlen) 50 ;# max packet in ifq
  57. set opt(seed) 0.0
  58. set opt(lm)             "off"           ;# log movement
  59. set opt(x) 670 ;# X dimension of the topography
  60. set opt(y) 670     ;# Y dimension of the topography
  61. set opt(stop) 300 ;# simulation time
  62. set opt(adhocRouting)   Directed_Diffusion
  63. # ======================================================================
  64. LL set mindelay_ 50us
  65. LL set delay_ 25us
  66. LL set bandwidth_ 0 ;# not used
  67. Agent/Null set sport_ 0
  68. Agent/Null set dport_ 0
  69. Agent/CBR set sport_ 0
  70. Agent/CBR set dport_ 0
  71. Agent/TCPSink set sport_ 0
  72. Agent/TCPSink set dport_ 0
  73. Agent/TCP set sport_ 0
  74. Agent/TCP set dport_ 0
  75. Agent/TCP set packetSize_ 1460
  76. Queue/DropTail/PriQueue set Prefer_Routing_Protocols    1
  77. # unity gain, omni-directional antennas
  78. # set up the antennas to be centered in the node and 1.5 meters above it
  79. Antenna/OmniAntenna set X_ 0
  80. Antenna/OmniAntenna set Y_ 0
  81. Antenna/OmniAntenna set Z_ 1.5
  82. Antenna/OmniAntenna set Gt_ 1.0
  83. Antenna/OmniAntenna set Gr_ 1.0
  84. # Initialize the SharedMedia interface with parameters to make
  85. # it work like the 914MHz Lucent WaveLAN DSSS radio interface
  86. Phy/WirelessPhy set CPThresh_ 10.0
  87. Phy/WirelessPhy set CSThresh_ 1.559e-11
  88. Phy/WirelessPhy set RXThresh_ 3.652e-10
  89. Phy/WirelessPhy set Rb_ 2*1e6
  90. Phy/WirelessPhy set Pt_ 0.2818
  91. Phy/WirelessPhy set freq_ 914e+6 
  92. Phy/WirelessPhy set L_ 1.0
  93. # ======================================================================
  94. Class TestSuite
  95. proc usage {} {
  96.     global argv0
  97.     puts stderr "usage: ns $argv0 <tests> "
  98.     puts "Valid Tests: simple-ping 2pp-5n-1s-1r 2pp-10n-4s-1r 2pp-10n-1s-4r
  99. push-5n-1s-1r push-10n-4s-1r push-10n-1s-4r 1pp-5n-1s-1r 1pp-10n-4s-1r 1pp-10n-1s-4r gear-2pp-10n-4s-1r gear-push-10n-1s-4r"
  100.     puts " "
  101.     exit 1
  102. }
  103. TestSuite instproc init {} {
  104.     global opt tracefd quiet
  105.     $self instvar ns_
  106.     set ns_ [new Simulator]
  107.     set tracefd [open temp.rands w]
  108.     $ns_ trace-all $tracefd
  109.     # stealing seed from another test-suite
  110.     ns-random 188312339
  111. Class Test/simple-ping -superclass TestSuite
  112. Test/simple-ping instproc init {} {
  113.     global opt
  114.     set opt(nn) 3
  115.     set opt(filters) GradientFilter
  116.     $self instvar ns_ testName_
  117.     set testName_ simple-ping
  118.     $self next
  119. }
  120. Test/simple-ping instproc run {} {
  121.     global opt
  122.     $self instvar ns_ topo god_
  123.     set topo [new Topography]
  124.     $topo load_flatgrid $opt(x) $opt(y)
  125.     set god_ [create-god $opt(nn)]
  126.     $ns_ node-config -adhocRouting $opt(adhocRouting) 
  127.  -llType $opt(ll) 
  128.  -macType $opt(mac) 
  129.  -ifqType $opt(ifq) 
  130.  -ifqLen $opt(ifqlen) 
  131.  -antType $opt(ant) 
  132.  -propType $opt(prop) 
  133.  -phyType $opt(netif) 
  134.  -channelType $opt(chan) 
  135.  -topoInstance $topo 
  136.          -diffusionFilter $opt(filters) 
  137.  -agentTrace ON 
  138.                  -routerTrace ON 
  139.                  -macTrace OFF 
  140.              
  141.     for {set i 0} {$i < $opt(nn) } {incr i} {
  142. set node_($i) [$ns_ node $i]
  143.         $node_($i) color black
  144. $node_($i) random-motion 0 ;# disable random motion
  145.         $god_ new_node $node_($i)
  146.     }
  147. # defining node positions
  148.     $node_(0) set X_ 500.716707738489
  149.     $node_(0) set Y_ 620.707335765875
  150.     $node_(0) set Z_ 0.000000000000
  151.     
  152.     $node_(1) set X_ 320.192740186325
  153.     $node_(1) set Y_ 450.384818286195
  154.     $node_(1) set Z_ 0.000000000000
  155.     #3rd node NOT in hearing range of other two
  156.     $node_(2) set X_ 177.438972165239
  157.     $node_(2) set Y_ 245.843469852367
  158.     $node_(2) set Z_ 0.000000000000
  159.     #Diffusion application - ping src
  160.     set src_(0) [new Application/DiffApp/PingSender/TPP]
  161.     $ns_ attach-diffapp $node_(0) $src_(0)
  162.     $ns_ at 0.123 "$src_(0) publish"
  163.     #Diffusion application - ping sink
  164.     set snk_(0) [new Application/DiffApp/PingReceiver/TPP]
  165.     $ns_ attach-diffapp $node_(2) $snk_(0)
  166.     $ns_ at 1.456 "$snk_(0) subscribe"
  167.     #
  168.     # Tell nodes when the simulation ends
  169.     #
  170.     for {set i 0} {$i < $opt(nn) } {incr i} {
  171. $ns_ at $opt(stop).000000001 "$node_($i) reset";
  172.     }
  173.     $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  174.     $ns_ run
  175. }
  176. Class Test/2pp-5n-1s-1r -superclass TestSuite
  177. Test/2pp-5n-1s-1r instproc init {} {
  178.      global opt
  179.      set opt(nn) 5
  180.      set opt(filters) GradientFilter
  181.      $self instvar ns_ testName_
  182.      set testName_ 2pp-5n-1s-1r
  183.      $self next
  184.  }
  185. Test/2pp-5n-1s-1r instproc run {} {
  186.      global opt
  187.      $self instvar ns_ topo god_
  188.      set topo [new Topography]
  189.      $topo load_flatgrid $opt(x) $opt(y)
  190.      set god_ [create-god $opt(nn)]
  191.      $ns_ node-config -adhocRouting $opt(adhocRouting) 
  192.  -llType $opt(ll) 
  193.  -macType $opt(mac) 
  194.  -ifqType $opt(ifq) 
  195.  -ifqLen $opt(ifqlen) 
  196.  -antType $opt(ant) 
  197.  -propType $opt(prop) 
  198.  -phyType $opt(netif) 
  199.  -channelType $opt(chan) 
  200.  -topoInstance $topo 
  201.  -diffusionFilter $opt(filters) 
  202.  -agentTrace ON 
  203.  -routerTrace ON 
  204.  -macTrace OFF
  205.              
  206.      for {set i 0} {$i < $opt(nn) } {incr i} {
  207.  set node_($i) [$ns_ node $i]
  208.  $node_($i) color black
  209.  $node_($i) random-motion 0 ;# disable random motion
  210.  $god_ new_node $node_($i)
  211.      }
  212.      # defining node positions
  213.      $node_(0) set X_ 618.716707738489
  214.      $node_(0) set Y_ 620.707335765875
  215.      $node_(0) set Z_ 0.000000000000
  216.     
  217.      $node_(1) set X_ 524.192740186325
  218.      $node_(1) set Y_ 540.384818286195
  219.      $node_(1) set Z_ 0.000000000000
  220.     
  221.      $node_(2) set X_ 406.438972165239
  222.      $node_(2) set Y_ 425.843469852367
  223.      $node_(2) set Z_ 0.000000000000
  224.     
  225.      $node_(3) set X_ 320.192740186325
  226.      $node_(3) set Y_ 350.384818286195
  227.      $node_(3) set Z_ 0.000000000000
  228.     
  229.      $node_(4) set X_ 177.438972165239
  230.      $node_(4) set Y_ 145.843469852367
  231.      $node_(4) set Z_ 0.000000000000
  232.     
  233.      #Diffusion application - ping sender
  234.      set src_(0) [new Application/DiffApp/PingSender/TPP]
  235.      $ns_ attach-diffapp $node_(0) $src_(0)
  236.      $ns_ at 0.123 "$src_(0) publish"
  237.      #Diffusion application - ping receiver
  238.      set snk_(0) [new Application/DiffApp/PingReceiver/TPP]
  239.      $ns_ attach-diffapp $node_(2) $snk_(0)
  240.      $ns_ at 1.456 "$snk_(0) subscribe"
  241. #     #
  242. #     # Tell nodes when the simulation ends
  243. #     #
  244.      for {set i 0} {$i < $opt(nn) } {incr i} {
  245.  $ns_ at $opt(stop).000000001 "$node_($i) reset";
  246.      }
  247.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  248.      $ns_ run
  249.  }
  250. Class Test/2pp-10n-4s-1r -superclass TestSuite
  251.  Test/2pp-10n-4s-1r instproc init {} {
  252.      global opt
  253.      set opt(nn) 10
  254.      set opt(sndr) 4
  255.      set opt(rcvr) 1
  256.      set opt(filters) GradientFilter
  257.      $self instvar ns_ testName_
  258.      set testName_ 2pp-10n-4s-1r
  259.      $self next
  260.  }
  261.  Test/2pp-10n-4s-1r instproc run {} {
  262.      global opt
  263.      $self instvar ns_ topo god_
  264.      set topo [new Topography]
  265.      $topo load_flatgrid $opt(x) $opt(y)
  266.      set god_ [create-god $opt(nn)]
  267.      $ns_ node-config -adhocRouting $opt(adhocRouting) 
  268.    -llType $opt(ll) 
  269.    -macType $opt(mac) 
  270.    -ifqType $opt(ifq) 
  271.    -ifqLen $opt(ifqlen) 
  272.    -antType $opt(ant) 
  273.    -propType $opt(prop) 
  274.    -phyType $opt(netif) 
  275.    -channelType $opt(chan) 
  276.    -topoInstance $topo 
  277.            -diffusionFilter $opt(filters) 
  278.    -agentTrace ON 
  279.                   -routerTrace OFF 
  280.                   -macTrace OFF
  281.              
  282.      for {set i 0} {$i < $opt(nn) } {incr i} {
  283.   set node_($i) [$ns_ node $i]
  284.          $node_($i) color black
  285.   $node_($i) random-motion 0 ;# disable random motion
  286.          $god_ new_node $node_($i)
  287.      }
  288.      # defining node positions
  289.      $node_(0) set X_ 18.587605569735
  290.      $node_(0) set Y_ 401.886827012678
  291.      $node_(0) set Z_ 0.000000000000
  292.      $node_(1) set X_ 11.901958617639
  293.      $node_(1) set Y_ 36.218497218617
  294.      $node_(1) set Z_ 0.000000000000
  295.      $node_(2) set X_ 224.282785411393
  296.      $node_(2) set Y_ 20.774608253697
  297.      $node_(2) set Z_ 0.000000000000
  298.      $node_(3) set X_ 158.840938304009
  299.      $node_(3) set Y_ 139.650216383776
  300.      $node_(3) set Z_ 0.000000000000
  301.      $node_(4) set X_ 101.186886005903
  302.      $node_(4) set Y_ 147.993190973633
  303.      $node_(4) set Z_ 0.000000000000
  304.      $node_(5) set X_ 321.560825121175
  305.      $node_(5) set Y_ 472.788096833600
  306.      $node_(5) set Z_ 0.000000000000
  307.      $node_(6) set X_ 149.543901734330
  308.      $node_(6) set Y_ 384.356581531832
  309.      $node_(6) set Z_ 0.000000000000
  310.      $node_(7) set X_ 381.066146464027
  311.      $node_(7) set Y_ 78.723958958779
  312.      $node_(7) set Z_ 0.000000000000
  313.      $node_(8) set X_ 113.578290026963
  314.      $node_(8) set Y_ 410.320583900348
  315.      $node_(8) set Z_ 0.000000000000
  316.      $node_(9) set X_ 258.053977148981
  317.      $node_(9) set Y_ 113.194171851670
  318.      $node_(9) set Z_ 0.000000000000
  319.     
  320.      # 4 ping senders
  321.      for {set i 0} {$i < $opt(sndr)} {incr i} {
  322.  set src_($i) [new Application/DiffApp/PingSender/TPP]
  323.  $ns_ attach-diffapp $node_([expr $i+2]) $src_($i)
  324.  $ns_ at [expr 0.123 * $i] "$src_($i) publish"
  325.      }
  326. #     # 1 ping receiver
  327.      set snk_(0) [new Application/DiffApp/PingReceiver/TPP]
  328.      $ns_ attach-diffapp $node_(9) $snk_(0)
  329.      $ns_ at 1.456 "$snk_(0) subscribe"
  330.      
  331.      #     #
  332.      #     # Tell nodes when the simulation ends
  333.      #     #
  334.      for {set i 0} {$i < $opt(nn) } {incr i} {
  335.  $ns_ at $opt(stop).000000001 "$node_($i) reset";
  336.      }
  337.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  338.      $ns_ run
  339.  }
  340. Class Test/2pp-10n-1s-4r -superclass TestSuite
  341. Test/2pp-10n-1s-4r instproc init {} {
  342.     global opt
  343.     set opt(nn) 10
  344.     set opt(sndr) 1
  345.     set opt(rcvr) 4
  346.     set opt(filters) GradientFilter
  347.     $self instvar ns_ testName_
  348.     set testName_ 2pp-10n-1s-4r
  349.     $self next
  350. }
  351. Test/2pp-10n-1s-4r instproc run {} {
  352.     global opt
  353.     $self instvar ns_ topo god_
  354.     
  355.     set topo [new Topography]
  356.     $topo load_flatgrid $opt(x) $opt(y)
  357.     set god_ [create-god $opt(nn)]
  358.     
  359.     $ns_ node-config -adhocRouting $opt(adhocRouting) 
  360. -llType $opt(ll) 
  361. -macType $opt(mac) 
  362. -ifqType $opt(ifq) 
  363. -ifqLen $opt(ifqlen) 
  364. -antType $opt(ant) 
  365. -propType $opt(prop) 
  366. -phyType $opt(netif) 
  367. -channelType $opt(chan) 
  368. -topoInstance $topo 
  369. -diffusionFilter $opt(filters) 
  370. -agentTrace ON 
  371. -routerTrace OFF 
  372. -macTrace OFF 
  373.     
  374.     for {set i 0} {$i < $opt(nn) } {incr i} {
  375.   set node_($i) [$ns_ node $i]
  376.          $node_($i) color black
  377.   $node_($i) random-motion 0 ;# disable random motion
  378.          $god_ new_node $node_($i)
  379.     }
  380.      # defining node positions
  381.      $node_(0) set X_ 18.587605569735
  382.      $node_(0) set Y_ 401.886827012678
  383.      $node_(0) set Z_ 0.000000000000
  384.      $node_(1) set X_ 11.901958617639
  385.      $node_(1) set Y_ 36.218497218617
  386.      $node_(1) set Z_ 0.000000000000
  387.      $node_(2) set X_ 224.282785411393
  388.      $node_(2) set Y_ 20.774608253697
  389.      $node_(2) set Z_ 0.000000000000
  390.      $node_(3) set X_ 158.840938304009
  391.      $node_(3) set Y_ 139.650216383776
  392.      $node_(3) set Z_ 0.000000000000
  393.      $node_(4) set X_ 101.186886005903
  394.      $node_(4) set Y_ 147.993190973633
  395.      $node_(4) set Z_ 0.000000000000
  396.      $node_(5) set X_ 321.560825121175
  397.      $node_(5) set Y_ 472.788096833600
  398.      $node_(5) set Z_ 0.000000000000
  399.      $node_(6) set X_ 149.543901734330
  400.      $node_(6) set Y_ 384.356581531832
  401.      $node_(6) set Z_ 0.000000000000
  402.      $node_(7) set X_ 381.066146464027
  403.      $node_(7) set Y_ 78.723958958779
  404.      $node_(7) set Z_ 0.000000000000
  405.      $node_(8) set X_ 113.578290026963
  406.      $node_(8) set Y_ 410.320583900348
  407.      $node_(8) set Z_ 0.000000000000
  408.      $node_(9) set X_ 258.053977148981
  409.      $node_(9) set Y_ 113.194171851670
  410.      $node_(9) set Z_ 0.000000000000
  411.     
  412.     # 1 ping sender
  413.     for {set i 0} {$i < $opt(sndr)} {incr i} {
  414.   set src_($i) [new Application/DiffApp/PingSender/TPP]
  415. $ns_ attach-diffapp $node_([expr $i+2]) $src_($i)
  416.   $ns_ at [expr 0.123 * [expr 1+$i]] "$src_($i) publish"
  417.     }
  418.      # 4 ping receiver
  419.      for {set i 0} {$i < $opt(rcvr)} {incr i} {
  420.   set snk_($i) [new Application/DiffApp/PingReceiver/TPP]
  421.   $ns_ attach-diffapp $node_([expr $opt(nn)-1 -$i]) $snk_($i)
  422.   $ns_ at [expr 1.1*[expr 1+$i]] "$snk_($i) subscribe"
  423.      }
  424.      #
  425.      # Tell nodes when the simulation ends
  426.      #
  427.     for {set i 0} {$i < $opt(nn) } {incr i} {
  428. $ns_ at $opt(stop).000000001 "$node_($i) reset";
  429.     }
  430.     $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  431.     $ns_ run
  432. }
  433. Class Test/push-5n-1s-1r -superclass TestSuite
  434. Test/push-5n-1s-1r instproc init {} {
  435.     global opt
  436.     set opt(nn) 5
  437.      set opt(filters) GradientFilter
  438.      $self instvar ns_ testName_
  439.      set testName_ push-5n-1s-1r
  440.     $self next
  441. }
  442. Test/push-5n-1s-1r instproc run {} {
  443.      global opt
  444.      $self instvar ns_ topo god_
  445.      set topo [new Topography]
  446.      $topo load_flatgrid $opt(x) $opt(y)
  447.      set god_ [create-god $opt(nn)]
  448.     $ns_ node-config -adhocRouting $opt(adhocRouting) 
  449.  -llType $opt(ll) 
  450.  -macType $opt(mac) 
  451.     -ifqType $opt(ifq) 
  452.    -ifqLen $opt(ifqlen) 
  453.    -antType $opt(ant) 
  454.    -propType $opt(prop) 
  455.    -phyType $opt(netif) 
  456.    -channelType $opt(chan) 
  457.    -topoInstance $topo 
  458.            -diffusionFilter $opt(filters) 
  459.    -agentTrace ON 
  460.                   -routerTrace ON 
  461.                   -macTrace OFF 
  462.              
  463.     for {set i 0} {$i < $opt(nn) } {incr i} {
  464. set node_($i) [$ns_ node $i]
  465. $node_($i) color black
  466. $node_($i) random-motion 0 ;# disable random motion
  467. $god_ new_node $node_($i)
  468.     }
  469.     
  470.      # defining node positions
  471.      $node_(0) set X_ 618.716707738489
  472.      $node_(0) set Y_ 620.707335765875
  473.      $node_(0) set Z_ 0.000000000000
  474.     
  475.      $node_(1) set X_ 524.192740186325
  476.      $node_(1) set Y_ 540.384818286195
  477.      $node_(1) set Z_ 0.000000000000
  478.     
  479.      $node_(2) set X_ 406.438972165239
  480.      $node_(2) set Y_ 425.843469852367
  481.      $node_(2) set Z_ 0.000000000000
  482.     
  483.      $node_(3) set X_ 320.192740186325
  484.      $node_(3) set Y_ 350.384818286195
  485.      $node_(3) set Z_ 0.000000000000
  486.     
  487.      $node_(4) set X_ 177.438972165239
  488.      $node_(4) set Y_ 145.843469852367
  489.      $node_(4) set Z_ 0.000000000000
  490.     
  491.      #Diffusion application - ping sender
  492.      set src_(0) [new Application/DiffApp/PushSender]
  493.      $ns_ attach-diffapp $node_(0) $src_(0)
  494.      $ns_ at 0.123 "$src_(0) publish"
  495.      #Diffusion application - ping receiver
  496.      set snk_(0) [new Application/DiffApp/PushReceiver]
  497.      $ns_ attach-diffapp $node_(2) $snk_(0)
  498.      $ns_ at 1.456 "$snk_(0) subscribe"
  499.      #
  500.      # Tell nodes when the simulation ends
  501.      #
  502.      for {set i 0} {$i < $opt(nn) } {incr i} {
  503.   $ns_ at $opt(stop).000000001 "$node_($i) reset";
  504.      }
  505.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  506.      $ns_ run
  507. }
  508. Class Test/push-10n-1s-4r -superclass TestSuite
  509.  Test/push-10n-1s-4r instproc init {} {
  510.      global opt
  511.      set opt(nn) 10
  512.      set opt(sndr) 1
  513.      set opt(rcvr) 4
  514.      set opt(filters) GradientFilter
  515.      $self instvar ns_ testName_
  516.      set testName_ push-10n-1s-4r
  517.      $self next
  518.  }
  519. Test/push-10n-1s-4r instproc run {} {
  520.      global opt
  521.      $self instvar ns_ topo god_
  522.      set topo [new Topography]
  523.      $topo load_flatgrid $opt(x) $opt(y)
  524.      set god_ [create-god $opt(nn)]
  525.      $ns_ node-config -adhocRouting $opt(adhocRouting) 
  526.  -llType $opt(ll) 
  527.  -macType $opt(mac) 
  528.  -ifqType $opt(ifq) 
  529.  -ifqLen $opt(ifqlen) 
  530.  -antType $opt(ant) 
  531.  -propType $opt(prop) 
  532.  -phyType $opt(netif) 
  533.  -channelType $opt(chan) 
  534.  -topoInstance $topo 
  535.  -diffusionFilter $opt(filters) 
  536.  -agentTrace ON 
  537.  -routerTrace OFF 
  538.  -macTrace OFF 
  539.              
  540.      for {set i 0} {$i < $opt(nn) } {incr i} {
  541.  set node_($i) [$ns_ node $i]
  542.          $node_($i) color black
  543.  $node_($i) random-motion 0 ;# disable random motion
  544.          $god_ new_node $node_($i)
  545.      }
  546.      # defining node positions
  547.      $node_(0) set X_ 18.587605569735
  548.      $node_(0) set Y_ 401.886827012678
  549.      $node_(0) set Z_ 0.000000000000
  550.      $node_(1) set X_ 11.901958617639
  551.      $node_(1) set Y_ 36.218497218617
  552.      $node_(1) set Z_ 0.000000000000
  553.      $node_(2) set X_ 224.282785411393
  554.      $node_(2) set Y_ 20.774608253697
  555.      $node_(2) set Z_ 0.000000000000
  556.      $node_(3) set X_ 158.840938304009
  557.      $node_(3) set Y_ 139.650216383776
  558.      $node_(3) set Z_ 0.000000000000
  559.      $node_(4) set X_ 101.186886005903
  560.      $node_(4) set Y_ 147.993190973633
  561.      $node_(4) set Z_ 0.000000000000
  562.      $node_(5) set X_ 321.560825121175
  563.      $node_(5) set Y_ 472.788096833600
  564.      $node_(5) set Z_ 0.000000000000
  565.      $node_(6) set X_ 149.543901734330
  566.      $node_(6) set Y_ 384.356581531832
  567.      $node_(6) set Z_ 0.000000000000
  568.      $node_(7) set X_ 381.066146464027
  569.      $node_(7) set Y_ 78.723958958779
  570.      $node_(7) set Z_ 0.000000000000
  571.      $node_(8) set X_ 113.578290026963
  572.      $node_(8) set Y_ 410.320583900348
  573.      $node_(8) set Z_ 0.000000000000
  574.      $node_(9) set X_ 258.053977148981
  575.      $node_(9) set Y_ 113.194171851670
  576.      $node_(9) set Z_ 0.000000000000
  577.     
  578.      # 1 ping sender
  579.      for {set i 0} {$i < $opt(sndr)} {incr i} {
  580.   set src_($i) [new Application/DiffApp/PushSender]
  581.   $ns_ attach-diffapp $node_([expr $i+2]) $src_($i)
  582.   $ns_ at [expr 0.123 * [expr 1+$i]] "$src_($i) publish"
  583.      }
  584.      # 4 ping receiver
  585.      for {set i 0} {$i < $opt(rcvr)} {incr i} {
  586.   set snk_($i) [new Application/DiffApp/PushReceiver]
  587.   $ns_ attach-diffapp $node_([expr $opt(nn)-1 -$i]) $snk_($i)
  588.   $ns_ at [expr 1.1*[expr 1+$i]] "$snk_($i) subscribe"
  589.      }
  590.      #
  591.      # Tell nodes when the simulation ends
  592.      #
  593.      for {set i 0} {$i < $opt(nn) } {incr i} {
  594.   $ns_ at $opt(stop).000000001 "$node_($i) reset";
  595.      }
  596.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  597.      $ns_ run
  598.  }
  599. Class Test/push-10n-4s-1r -superclass TestSuite
  600. Test/push-10n-4s-1r instproc init {} {
  601.     global opt
  602.     set opt(nn) 10
  603.     set opt(sndr) 4
  604.     set opt(rcvr) 1
  605.     set opt(filters) GradientFilter
  606.     $self instvar ns_ testName_
  607.     set testName_ push-10n-4s-1r
  608.     $self next
  609. }
  610. Test/push-10n-4s-1r instproc run {} {
  611.      global opt
  612.      $self instvar ns_ topo god_
  613.      set topo [new Topography]
  614.      $topo load_flatgrid $opt(x) $opt(y)
  615.      set god_ [create-god $opt(nn)]
  616.      $ns_ node-config -adhocRouting $opt(adhocRouting) 
  617.  -llType $opt(ll) 
  618.  -macType $opt(mac) 
  619.  -ifqType $opt(ifq) 
  620.  -ifqLen $opt(ifqlen) 
  621.  -antType $opt(ant) 
  622.  -propType $opt(prop) 
  623.  -phyType $opt(netif) 
  624.  -channelType $opt(chan) 
  625.  -topoInstance $topo 
  626.  -diffusionFilter $opt(filters) 
  627.  -agentTrace ON 
  628.  -routerTrace OFF 
  629.  -macTrace OFF 
  630.              
  631.     for {set i 0} {$i < $opt(nn) } {incr i} {
  632.  set node_($i) [$ns_ node $i]
  633.          $node_($i) color black
  634.   $node_($i) random-motion 0 ;# disable random motion
  635.          $god_ new_node $node_($i)
  636.     }
  637.      # defining node positions
  638.      $node_(0) set X_ 18.587605569735
  639.      $node_(0) set Y_ 401.886827012678
  640.      $node_(0) set Z_ 0.000000000000
  641.      $node_(1) set X_ 11.901958617639
  642.      $node_(1) set Y_ 36.218497218617
  643.      $node_(1) set Z_ 0.000000000000
  644.      $node_(2) set X_ 224.282785411393
  645.      $node_(2) set Y_ 20.774608253697
  646.      $node_(2) set Z_ 0.000000000000
  647.      $node_(3) set X_ 158.840938304009
  648.      $node_(3) set Y_ 139.650216383776
  649.      $node_(3) set Z_ 0.000000000000
  650.      $node_(4) set X_ 101.186886005903
  651.      $node_(4) set Y_ 147.993190973633
  652.      $node_(4) set Z_ 0.000000000000
  653.      $node_(5) set X_ 321.560825121175
  654.      $node_(5) set Y_ 472.788096833600
  655.      $node_(5) set Z_ 0.000000000000
  656.      $node_(6) set X_ 149.543901734330
  657.      $node_(6) set Y_ 384.356581531832
  658.      $node_(6) set Z_ 0.000000000000
  659.      $node_(7) set X_ 381.066146464027
  660.      $node_(7) set Y_ 78.723958958779
  661.      $node_(7) set Z_ 0.000000000000
  662.      $node_(8) set X_ 113.578290026963
  663.      $node_(8) set Y_ 410.320583900348
  664.      $node_(8) set Z_ 0.000000000000
  665.      $node_(9) set X_ 258.053977148981
  666.      $node_(9) set Y_ 113.194171851670
  667.      $node_(9) set Z_ 0.000000000000
  668.    
  669.      # 4 ping sender
  670.      for {set i 0} {$i < $opt(sndr)} {incr i} {
  671.   set src_($i) [new Application/DiffApp/PushSender]
  672.   $ns_ attach-diffapp $node_([expr $i+2]) $src_($i)
  673.   $ns_ at [expr 0.123 * [expr 1+$i]] "$src_($i) publish"
  674.      }
  675.      # 1 ping receiver
  676.      for {set i 0} {$i < $opt(rcvr)} {incr i} {
  677.   set snk_($i) [new Application/DiffApp/PushReceiver]
  678.   $ns_ attach-diffapp $node_([expr $opt(nn)-1 -$i]) $snk_($i)
  679.   $ns_ at [expr 1.1*[expr 1+$i]] "$snk_($i) subscribe"
  680.      }
  681.      #
  682.      # Tell nodes when the simulation ends
  683.      #
  684.      for {set i 0} {$i < $opt(nn) } {incr i} {
  685.   $ns_ at $opt(stop).000000001 "$node_($i) reset";
  686.      }
  687.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  688.      $ns_ run
  689. }
  690. Class Test/1pp-5n-1s-1r -superclass TestSuite
  691. Test/1pp-5n-1s-1r instproc init {} {
  692.      global opt
  693.      set opt(nn) 5
  694.      set opt(sndr) 1
  695.      set opt(rcvr) 1
  696.      set opt(filters) OnePhasePullFilter
  697.      $self instvar ns_ testName_
  698.      set testName_ 1pp-5n-1s-1r
  699.      $self next
  700. }
  701. Test/1pp-5n-1s-1r instproc run {} {
  702.     global opt
  703.     $self instvar ns_ topo god_
  704.     set topo [new Topography]
  705.     $topo load_flatgrid $opt(x) $opt(y)
  706.      set god_ [create-god $opt(nn)]
  707.      $ns_ node-config -adhocRouting $opt(adhocRouting) 
  708.    -llType $opt(ll) 
  709.    -macType $opt(mac) 
  710.    -ifqType $opt(ifq) 
  711.    -ifqLen $opt(ifqlen) 
  712.    -antType $opt(ant) 
  713.    -propType $opt(prop) 
  714.    -phyType $opt(netif) 
  715.    -channelType $opt(chan) 
  716.    -topoInstance $topo 
  717.            -diffusionFilter $opt(filters) 
  718.    -agentTrace ON 
  719.                   -routerTrace ON 
  720.                   -macTrace OFF 
  721.              
  722.      for {set i 0} {$i < $opt(nn) } {incr i} {
  723.   set node_($i) [$ns_ node $i]
  724.          $node_($i) color black
  725.   $node_($i) random-motion 0 ;# disable random motion
  726.          $god_ new_node $node_($i)
  727.      }
  728.      # defining node positions
  729.      $node_(0) set X_ 18.587605569735
  730.      $node_(0) set Y_ 401.886827012678
  731.      $node_(0) set Z_ 0.000000000000
  732.      $node_(1) set X_ 11.901958617639
  733.      $node_(1) set Y_ 36.218497218617
  734.      $node_(1) set Z_ 0.000000000000
  735.      $node_(2) set X_ 224.282785411393
  736.      $node_(2) set Y_ 20.774608253697
  737.      $node_(2) set Z_ 0.000000000000
  738.      $node_(3) set X_ 158.840938304009
  739.      $node_(3) set Y_ 139.650216383776
  740.      $node_(3) set Z_ 0.000000000000
  741.      $node_(4) set X_ 101.186886005903
  742.      $node_(4) set Y_ 147.993190973633
  743.      $node_(4) set Z_ 0.000000000000
  744.     
  745.      # 1 ping sender
  746.      for {set i 0} {$i < $opt(sndr)} {incr i} {
  747.   set src_($i) [new Application/DiffApp/PingSender/OPP]
  748.   $ns_ attach-diffapp $node_([expr $i+1]) $src_($i)
  749.   $ns_ at [expr 0.123 * [expr 1+$i]] "$src_($i) publish"
  750.      }
  751.     # 1 ping receiver
  752.      for {set i 0} {$i < $opt(rcvr)} {incr i} {
  753.   set snk_($i) [new Application/DiffApp/PingReceiver/OPP]
  754.   $ns_ attach-diffapp $node_([expr $opt(nn)-1 -$i]) $snk_($i)
  755.   $ns_ at [expr 1.1*[expr 1+$i]] "$snk_($i) subscribe"
  756.      }
  757.      #
  758.      # Tell nodes when the simulation ends
  759.      #
  760.      for {set i 0} {$i < $opt(nn) } {incr i} {
  761.   $ns_ at $opt(stop).000000001 "$node_($i) reset";
  762.      }
  763.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  764.      $ns_ run
  765. }
  766. Class Test/1pp-10n-4s-1r -superclass TestSuite
  767. Test/1pp-10n-4s-1r instproc init {} {
  768.      global opt
  769.      set opt(nn) 10
  770.      set opt(sndr) 4
  771.      set opt(rcvr) 1
  772.      set opt(filters) OnePhasePullFilter
  773.      $self instvar ns_ testName_
  774.      set testName_ 1pp-10n-4s-1r
  775.      $self next
  776. }
  777. Test/1pp-10n-4s-1r instproc run {} {
  778.      global opt
  779.      $self instvar ns_ topo god_
  780.      set topo [new Topography]
  781.      $topo load_flatgrid $opt(x) $opt(y)
  782.      set god_ [create-god $opt(nn)]
  783.      $ns_ node-config -adhocRouting $opt(adhocRouting) 
  784.    -llType $opt(ll) 
  785.    -macType $opt(mac) 
  786.    -ifqType $opt(ifq) 
  787.    -ifqLen $opt(ifqlen) 
  788.    -antType $opt(ant) 
  789.    -propType $opt(prop) 
  790.    -phyType $opt(netif) 
  791.    -channelType $opt(chan) 
  792.    -topoInstance $topo 
  793.            -diffusionFilter $opt(filters) 
  794.    -agentTrace ON 
  795.                   -routerTrace OFF 
  796.                   -macTrace OFF 
  797.              
  798.      for {set i 0} {$i < $opt(nn) } {incr i} {
  799.   set node_($i) [$ns_ node $i]
  800.          $node_($i) color black
  801.   $node_($i) random-motion 0 ;# disable random motion
  802.          $god_ new_node $node_($i)
  803.      }
  804.      # defining node positions
  805.      $node_(0) set X_ 18.587605569735
  806.      $node_(0) set Y_ 401.886827012678
  807.      $node_(0) set Z_ 0.000000000000
  808.      $node_(1) set X_ 11.901958617639
  809.      $node_(1) set Y_ 36.218497218617
  810.      $node_(1) set Z_ 0.000000000000
  811.      $node_(2) set X_ 224.282785411393
  812.      $node_(2) set Y_ 20.774608253697
  813.      $node_(2) set Z_ 0.000000000000
  814.      $node_(3) set X_ 158.840938304009
  815.      $node_(3) set Y_ 139.650216383776
  816.      $node_(3) set Z_ 0.000000000000
  817.      $node_(4) set X_ 101.186886005903
  818.      $node_(4) set Y_ 147.993190973633
  819.      $node_(4) set Z_ 0.000000000000
  820.      $node_(5) set X_ 321.560825121175
  821.      $node_(5) set Y_ 472.788096833600
  822.      $node_(5) set Z_ 0.000000000000
  823.      $node_(6) set X_ 149.543901734330
  824.      $node_(6) set Y_ 384.356581531832
  825.      $node_(6) set Z_ 0.000000000000
  826.      $node_(7) set X_ 381.066146464027
  827.      $node_(7) set Y_ 78.723958958779
  828.      $node_(7) set Z_ 0.000000000000
  829.      $node_(8) set X_ 113.578290026963
  830.      $node_(8) set Y_ 410.320583900348
  831.      $node_(8) set Z_ 0.000000000000
  832.      $node_(9) set X_ 258.053977148981
  833.      $node_(9) set Y_ 113.194171851670
  834.      $node_(9) set Z_ 0.000000000000
  835.     
  836.      # 4 ping senders
  837.      for {set i 0} {$i < $opt(sndr)} {incr i} {
  838.   set src_($i) [new Application/DiffApp/PingSender/OPP]
  839.   $ns_ attach-diffapp $node_([expr $i+2]) $src_($i)
  840.   $ns_ at [expr 0.123 * $i] "$src_($i) publish"
  841.      }
  842.      # 1 ping receiver
  843.      set snk_(0) [new Application/DiffApp/PingReceiver/OPP]
  844.      $ns_ attach-diffapp $node_(9) $snk_(0)
  845.      $ns_ at 1.456 "$snk_(0) subscribe"
  846.      #
  847.      # Tell nodes when the simulation ends
  848.      #
  849.      for {set i 0} {$i < $opt(nn) } {incr i} {
  850.   $ns_ at $opt(stop).000000001 "$node_($i) reset";
  851.      }
  852.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  853.      $ns_ run
  854. }
  855. Class Test/1pp-10n-1s-4r -superclass TestSuite
  856. Test/1pp-10n-1s-4r instproc init {} {
  857.      global opt
  858.      set opt(nn) 10
  859.      set opt(sndr) 1
  860.      set opt(rcvr) 4
  861.      set opt(filters) OnePhasePullFilter
  862.      $self instvar ns_ testName_
  863.      set testName_ 1pp-10n-1s-4r
  864.      $self next
  865. }
  866. Test/1pp-10n-1s-4r instproc run {} {
  867.      global opt
  868.      $self instvar ns_ topo god_
  869.     
  870.     set topo [new Topography]
  871.     $topo load_flatgrid $opt(x) $opt(y)
  872.     set god_ [create-god $opt(nn)]
  873.     
  874.     $ns_ node-config -adhocRouting $opt(adhocRouting) 
  875.  -llType $opt(ll) 
  876.  -macType $opt(mac) 
  877.  -ifqType $opt(ifq) 
  878.  -ifqLen $opt(ifqlen) 
  879.  -antType $opt(ant) 
  880.  -propType $opt(prop) 
  881.  -phyType $opt(netif) 
  882.  -channelType $opt(chan) 
  883.  -topoInstance $topo 
  884.  -diffusionFilter $opt(filters) 
  885.  -agentTrace ON 
  886.  -routerTrace OFF 
  887.  -macTrace OFF 
  888.              
  889.      for {set i 0} {$i < $opt(nn) } {incr i} {
  890.   set node_($i) [$ns_ node $i]
  891.          $node_($i) color black
  892.   $node_($i) random-motion 0 ;# disable random motion
  893.          $god_ new_node $node_($i)
  894.      }
  895.      # defining node positions
  896.      $node_(0) set X_ 18.587605569735
  897.      $node_(0) set Y_ 401.886827012678
  898.      $node_(0) set Z_ 0.000000000000
  899.      $node_(1) set X_ 11.901958617639
  900.      $node_(1) set Y_ 36.218497218617
  901.      $node_(1) set Z_ 0.000000000000
  902.      $node_(2) set X_ 224.282785411393
  903.      $node_(2) set Y_ 20.774608253697
  904.      $node_(2) set Z_ 0.000000000000
  905.      $node_(3) set X_ 158.840938304009
  906.      $node_(3) set Y_ 139.650216383776
  907.      $node_(3) set Z_ 0.000000000000
  908.      $node_(4) set X_ 101.186886005903
  909.      $node_(4) set Y_ 147.993190973633
  910.      $node_(4) set Z_ 0.000000000000
  911.      $node_(5) set X_ 321.560825121175
  912.      $node_(5) set Y_ 472.788096833600
  913.      $node_(5) set Z_ 0.000000000000
  914.      $node_(6) set X_ 149.543901734330
  915.      $node_(6) set Y_ 384.356581531832
  916.      $node_(6) set Z_ 0.000000000000
  917.      $node_(7) set X_ 381.066146464027
  918.      $node_(7) set Y_ 78.723958958779
  919.      $node_(7) set Z_ 0.000000000000
  920.      $node_(8) set X_ 113.578290026963
  921.      $node_(8) set Y_ 410.320583900348
  922.      $node_(8) set Z_ 0.000000000000
  923.      $node_(9) set X_ 258.053977148981
  924.      $node_(9) set Y_ 113.194171851670
  925.      $node_(9) set Z_ 0.000000000000
  926.     
  927.      # 1 ping sender
  928.      for {set i 0} {$i < $opt(sndr)} {incr i} {
  929.   set src_($i) [new Application/DiffApp/PingSender/OPP]
  930.   $ns_ attach-diffapp $node_([expr $i+2]) $src_($i)
  931.   $ns_ at [expr 0.123 * [expr 1+$i]] "$src_($i) publish"
  932.      }
  933.      # 4 ping receiver
  934.      for {set i 0} {$i < $opt(rcvr)} {incr i} {
  935.   set snk_($i) [new Application/DiffApp/PingReceiver/OPP]
  936.   $ns_ attach-diffapp $node_([expr $opt(nn)-1 -$i]) $snk_($i)
  937.   $ns_ at [expr 1.1*[expr 1+$i]] "$snk_($i) subscribe"
  938.      }
  939.      #
  940.      # Tell nodes when the simulation ends
  941.      #
  942.      for {set i 0} {$i < $opt(nn) } {incr i} {
  943.   $ns_ at $opt(stop).000000001 "$node_($i) reset";
  944.      }
  945.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  946.      $ns_ run
  947. }
  948. Class Test/gear-2pp-5n-1s-1r -superclass TestSuite
  949. Test/gear-2pp-5n-1s-1r instproc init {} {
  950.      global opt
  951.      set opt(nn) 5
  952.      set opt(filters) GradientFilter/GeoRoutingFilter
  953.      $self instvar ns_ testName_
  954.      set testName_ gear-2pp-5n-1s-1r
  955.      $self next
  956. }
  957. Test/gear-2pp-5n-1s-1r instproc run {} {
  958.      global opt
  959.      $self instvar ns_ topo god_
  960.      set topo [new Topography]
  961.      $topo load_flatgrid $opt(x) $opt(y)
  962.      set god_ [create-god $opt(nn)]
  963.      $ns_ node-config -adhocRouting $opt(adhocRouting) 
  964.    -llType $opt(ll) 
  965.    -macType $opt(mac) 
  966.    -ifqType $opt(ifq) 
  967.    -ifqLen $opt(ifqlen) 
  968.    -antType $opt(ant) 
  969.    -propType $opt(prop) 
  970.    -phyType $opt(netif) 
  971.    -channelType $opt(chan) 
  972.    -topoInstance $topo 
  973.            -diffusionFilter $opt(filters) 
  974.    -agentTrace ON 
  975.                   -routerTrace OFF 
  976.                   -macTrace OFF 
  977.              
  978.      for {set i 0} {$i < $opt(nn) } {incr i} {
  979.   set node_($i) [$ns_ node $i]
  980.          $node_($i) color black
  981.   $node_($i) random-motion 0 ;# disable random motion
  982.          $god_ new_node $node_($i)
  983.      }
  984.      # defining node positions
  985.      $node_(0) set X_ 618.716707738489
  986.      $node_(0) set Y_ 620.707335765875
  987.      $node_(0) set Z_ 0.000000000000
  988.     
  989.      $node_(1) set X_ 524.192740186325
  990.      $node_(1) set Y_ 540.384818286195
  991.      $node_(1) set Z_ 0.000000000000
  992.    
  993.      $node_(2) set X_ 406.438972165239
  994.      $node_(2) set Y_ 425.843469852367
  995.      $node_(2) set Z_ 0.000000000000
  996.     
  997.      $node_(3) set X_ 320.192740186325
  998.      $node_(3) set Y_ 350.384818286195
  999.      $node_(3) set Z_ 0.000000000000
  1000.     
  1001.      $node_(4) set X_ 177.438972165239
  1002.      $node_(4) set Y_ 145.843469852367
  1003.      $node_(4) set Z_ 0.000000000000
  1004.     
  1005.     for {set i 0} {$i < $opt(nn)} {incr i} {
  1006.  set gearf($i) [new Application/DiffApp/GeoRoutingFilter 
  1007.      [$node_($i) get-dr]]
  1008.  $gearf($i) start
  1009.      }
  1010.      # 1 gear sender
  1011.      set src_(0) [new Application/DiffApp/GearSenderApp]
  1012.      $ns_ attach-diffapp $node_(0) $src_(0)
  1013.      $src_(0) push-pull-options pull point 618.716 620.707
  1014.      $ns_ at 0.123 "$src_(0) publish"
  1015.      #Diffusion application - ping receiver
  1016.      set snk_(0) [new Application/DiffApp/GearReceiverApp]
  1017.      $ns_ attach-diffapp $node_(4) $snk_(0)
  1018.      $snk_(0) push-pull-options pull region 600 650 600 650
  1019.      $ns_ at 1.456 "$snk_(0) subscribe"
  1020.      #
  1021.      # Tell nodes when the simulation ends
  1022.      #
  1023.      for {set i 0} {$i < $opt(nn) } {incr i} {
  1024.   $ns_ at $opt(stop).000000001 "$node_($i) reset";
  1025.      }
  1026.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  1027.      $ns_ run
  1028. }
  1029.  
  1030. Class Test/gear-2pp-10n-4s-1r -superclass TestSuite
  1031. Test/gear-2pp-10n-4s-1r instproc init {} {
  1032.      global opt
  1033.      set opt(nn) 10
  1034.      set opt(filters) GradientFilter/GeoRoutingFilter
  1035.      $self instvar ns_ testName_
  1036.      set testName_ gear-2pp-10n-4s-1r
  1037.      $self next
  1038.  }
  1039. Test/gear-2pp-10n-4s-1r instproc run {} {
  1040.      global opt
  1041.      $self instvar ns_ topo god_
  1042.      set topo [new Topography]
  1043.      $topo load_flatgrid $opt(x) $opt(y)
  1044.      set god_ [create-god $opt(nn)]
  1045.      $ns_ node-config -adhocRouting $opt(adhocRouting) 
  1046.   -llType $opt(ll) 
  1047.   -macType $opt(mac) 
  1048.   -ifqType $opt(ifq) 
  1049.   -ifqLen $opt(ifqlen) 
  1050.   -antType $opt(ant) 
  1051.   -propType $opt(prop) 
  1052.   -phyType $opt(netif) 
  1053.   -channelType $opt(chan) 
  1054.   -topoInstance $topo 
  1055.   -diffusionFilter $opt(filters) 
  1056.   -agentTrace ON 
  1057.   -routerTrace OFF 
  1058.   -macTrace OFF 
  1059.     
  1060.      for {set i 0} {$i < $opt(nn) } {incr i} {
  1061.   set node_($i) [$ns_ node $i]
  1062.          $node_($i) color black
  1063.   $node_($i) random-motion 0 ;# disable random motion
  1064.          $god_ new_node $node_($i)
  1065.      }
  1066.      # defining node positions
  1067.      $node_(0) set X_ 180.587605569735
  1068.      $node_(0) set Y_ 401.886827012678
  1069.      $node_(0) set Z_ 0.000000000000
  1070.      $node_(1) set X_ 11.901958617639
  1071.      $node_(1) set Y_ 36.218497218617
  1072.      $node_(1) set Z_ 0.000000000000
  1073.      $node_(2) set X_ 224.282785411393
  1074.      $node_(2) set Y_ 20.774608253697
  1075.      $node_(2) set Z_ 0.000000000000
  1076.      $node_(3) set X_ 158.840938304009
  1077.      $node_(3) set Y_ 139.650216383776
  1078.      $node_(3) set Z_ 0.000000000000
  1079.      $node_(4) set X_ 101.186886005903
  1080.      $node_(4) set Y_ 147.993190973633
  1081.      $node_(4) set Z_ 0.000000000000
  1082.      $node_(5) set X_ 321.560825121175
  1083.      $node_(5) set Y_ 472.788096833600
  1084.      $node_(5) set Z_ 0.000000000000
  1085.      $node_(6) set X_ 149.543901734330
  1086.      $node_(6) set Y_ 384.356581531832
  1087.      $node_(6) set Z_ 0.000000000000
  1088.      $node_(7) set X_ 381.066146464027
  1089.      $node_(7) set Y_ 78.723958958779
  1090.      $node_(7) set Z_ 0.000000000000
  1091.      $node_(8) set X_ 113.578290026963
  1092.      $node_(8) set Y_ 410.320583900348
  1093.      $node_(8) set Z_ 0.000000000000
  1094.      $node_(9) set X_ 258.053977148981
  1095.      $node_(9) set Y_ 113.194171851670
  1096.      $node_(9) set Z_ 0.000000000000
  1097.     
  1098.      # starting gear filter separately- this will go away once gear has 
  1099.      # callbacks for updating node positions
  1100.      for {set i 0} {$i < $opt(nn)} {incr i} {
  1101.   set gearf($i) [new Application/DiffApp/GeoRoutingFilter 
  1102.      [$node_($i) get-dr]]
  1103.   $gearf($i) start
  1104.      }
  1105.      # 4 gear sender
  1106.      set src_(0) [new Application/DiffApp/GearSenderApp]
  1107.      $ns_ attach-diffapp $node_(0) $src_(0)
  1108.      $src_(0) push-pull-options pull point 180.587 401.886
  1109.      $ns_ at 0.123 "$src_(0) publish"
  1110.     
  1111.      set src_(1) [new Application/DiffApp/GearSenderApp]
  1112.      $ns_ attach-diffapp $node_(1) $src_(1)
  1113.      $src_(1) push-pull-options pull point 11.901 36.218
  1114.      $ns_ at 0.23 "$src_(1) publish"
  1115.     
  1116.      set src_(2) [new Application/DiffApp/GearSenderApp]
  1117.      $ns_ attach-diffapp $node_(2) $src_(2)
  1118.      $src_(2) push-pull-options pull point 224.282 20.774
  1119.      $ns_ at 0.3 "$src_(2) publish"
  1120.     
  1121.      set src_(3) [new Application/DiffApp/GearSenderApp]
  1122.      $ns_ attach-diffapp $node_(3) $src_(3)
  1123.      $src_(3) push-pull-options pull point 158.840 139.650
  1124.      $ns_ at 0.4 "$src_(3) publish"
  1125.     
  1126.      # 1 ping receiver
  1127.      set snk_(0) [new Application/DiffApp/GearReceiverApp]
  1128.      $ns_ attach-diffapp $node_(7) $snk_(0)
  1129.      $snk_(0) push-pull-options pull region 10 300 10 450
  1130.      $ns_ at 1.456 "$snk_(0) subscribe"
  1131.     
  1132.      #
  1133.      # Tell nodes when the simulation ends
  1134.      #
  1135.      for {set i 0} {$i < $opt(nn) } {incr i} {
  1136.   $ns_ at $opt(stop).000000001 "$node_($i) reset";
  1137.      }
  1138.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  1139.      $ns_ run
  1140. }
  1141. Class Test/gear-push-10n-1s-4r -superclass TestSuite
  1142. Test/gear-push-10n-1s-4r instproc init {} {
  1143.      global opt
  1144.      set opt(nn) 10
  1145.      set opt(filters) GradientFilter/GeoRoutingFilter
  1146.      $self instvar ns_ testName_
  1147.      set testName_ gear-push-10n-1s-4r
  1148.      $self next
  1149. }
  1150. Test/gear-push-10n-1s-4r instproc run {} {
  1151.      global opt
  1152.     $self instvar ns_ topo god_
  1153.      set topo [new Topography]
  1154.     $topo load_flatgrid $opt(x) $opt(y)
  1155.      set god_ [create-god $opt(nn)]
  1156.      $ns_ node-config -adhocRouting $opt(adhocRouting) 
  1157.   -llType $opt(ll) 
  1158.   -macType $opt(mac) 
  1159.   -ifqType $opt(ifq) 
  1160.   -ifqLen $opt(ifqlen) 
  1161.   -antType $opt(ant) 
  1162.   -propType $opt(prop) 
  1163.   -phyType $opt(netif) 
  1164.   -channelType $opt(chan) 
  1165.   -topoInstance $topo 
  1166.   -diffusionFilter $opt(filters) 
  1167.   -agentTrace ON 
  1168.   -routerTrace OFF 
  1169.   -macTrace OFF 
  1170.     
  1171.      for {set i 0} {$i < $opt(nn) } {incr i} {
  1172.   set node_($i) [$ns_ node $i]
  1173.          $node_($i) color black
  1174.   $node_($i) random-motion 0 ;# disable random motion
  1175.          $god_ new_node $node_($i)
  1176.      }
  1177.      # defining node positions
  1178.      $node_(0) set X_ 180.587605569735
  1179.      $node_(0) set Y_ 401.886827012678
  1180.      $node_(0) set Z_ 0.000000000000
  1181.      $node_(1) set X_ 11.901958617639
  1182.      $node_(1) set Y_ 36.218497218617
  1183.      $node_(1) set Z_ 0.000000000000
  1184.      $node_(2) set X_ 224.282785411393
  1185.      $node_(2) set Y_ 20.774608253697
  1186.      $node_(2) set Z_ 0.000000000000
  1187.      $node_(3) set X_ 158.840938304009
  1188.      $node_(3) set Y_ 139.650216383776
  1189.      $node_(3) set Z_ 0.000000000000
  1190.      $node_(4) set X_ 101.186886005903
  1191.      $node_(4) set Y_ 147.993190973633
  1192.      $node_(4) set Z_ 0.000000000000
  1193.      $node_(5) set X_ 321.560825121175
  1194.      $node_(5) set Y_ 472.788096833600
  1195.      $node_(5) set Z_ 0.000000000000
  1196.      $node_(6) set X_ 149.543901734330
  1197.      $node_(6) set Y_ 384.356581531832
  1198.      $node_(6) set Z_ 0.000000000000
  1199.      $node_(7) set X_ 381.066146464027
  1200.      $node_(7) set Y_ 78.723958958779
  1201.      $node_(7) set Z_ 0.000000000000
  1202.      $node_(8) set X_ 113.578290026963
  1203.      $node_(8) set Y_ 410.320583900348
  1204.      $node_(8) set Z_ 0.000000000000
  1205.      $node_(9) set X_ 258.053977148981
  1206.      $node_(9) set Y_ 113.194171851670
  1207.      $node_(9) set Z_ 0.000000000000
  1208.     
  1209.      # starting gear filter separately- this will go away once gear has 
  1210.      # callbacks for updating node positions
  1211.      for {set i 0} {$i < $opt(nn)} {incr i} {
  1212.   set gearf($i) [new Application/DiffApp/GeoRoutingFilter 
  1213.      [$node_($i) get-dr]]
  1214.  $gearf($i) start
  1215.      }
  1216.     # 1 push sender
  1217.     set src_(0) [new Application/DiffApp/GearSenderApp]
  1218.     $ns_ attach-diffapp $node_(6) $src_(0)
  1219.     $src_(0) push-pull-options push region 100 650 100 650
  1220.     $ns_ at 0.123 "$src_(0) publish"
  1221.     
  1222.     # 4 push receiver
  1223.     set snk_(0) [new Application/DiffApp/GearReceiverApp]
  1224.     $ns_ attach-diffapp $node_(8) $snk_(0)
  1225.     $snk_(0) push-pull-options push point 101.186 147.993
  1226.     $ns_ at 1.256 "$snk_(0) subscribe"
  1227.     
  1228.     set snk_(1) [new Application/DiffApp/GearReceiverApp]
  1229.     $ns_ attach-diffapp $node_(9) $snk_(1)
  1230.      $snk_(1) push-pull-options push point 258.053 113.194
  1231.      $ns_ at 1.456 "$snk_(1) subscribe"
  1232.     
  1233.      set snk_(2) [new Application/DiffApp/GearReceiverApp]
  1234.      $ns_ attach-diffapp $node_(7) $snk_(2)
  1235.      $snk_(2) push-pull-options push point 321.560 472.788
  1236.      $ns_ at 1.56 "$snk_(2) subscribe"
  1237.     
  1238.      set snk_(3) [new Application/DiffApp/GearReceiverApp]
  1239.      $ns_ attach-diffapp $node_(1) $snk_(3)
  1240.      $snk_(3) push-pull-options push point 158.840 139.650
  1241.      $ns_ at 1.73 "$snk_(3) subscribe"
  1242.     
  1243.      #
  1244.      # Tell nodes when the simulation ends
  1245.      #
  1246.      for {set i 0} {$i < $opt(nn) } {incr i} {
  1247.   $ns_ at $opt(stop).000000001 "$node_($i) reset";
  1248.      }
  1249.      $ns_ at  $opt(stop).000000001 "puts "NS EXITING..." ; $ns_ halt"
  1250.      $ns_ run
  1251. }
  1252. proc runtest {arg} {
  1253.   global quiet
  1254.   set quiet 0
  1255.   set b [llength $arg]
  1256.   if {$b == 1} {
  1257.   set test $arg
  1258.   } elseif {$b == 2} {
  1259.   set test [lindex $arg 0]
  1260.       if {[lindex $arg 1] == "QUIET"} {
  1261.   set quiet 1
  1262.       }
  1263.   } else {
  1264.   usage
  1265.   }
  1266.   set t [new Test/$test]
  1267.   $t run
  1268.  }
  1269.  global argv arg0
  1270.  runtest $argv