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

通讯编程

开发平台:

Visual C++

  1. # test-suite-PackMime.tcl
  2. #
  3. # Based on ns/tcl/test/test-suite-full.tcl
  4. #
  5. # Modified by Michele Weigle, UNC-Chapel Hill, Dec 2003
  6. #
  7. #*************************************************************************
  8. # Tests to validate PackMime
  9. #
  10. #  1node-http1_0 - one PackMime node running HTTP 1.0
  11. #  1node-http1_1 - one PackMime node running HTTP 1.1
  12. #  2node-http1_1 - two PackMime nodes running HTTP 1.1
  13. #
  14. #*************************************************************************
  15. source misc.tcl
  16. TestSuite instproc finish testname {
  17. $self instvar ns_
  18. $ns_ halt
  19. }
  20. Class SkelTopology
  21. Class Topology -superclass SkelTopology
  22. Topology instproc node? num {
  23.     $self instvar node_
  24.     return $node_($num)
  25. }
  26. Class Topology/DB -superclass Topology
  27. #
  28. # PackMime test topology
  29. #
  30. #           s1                      k1
  31. #                                 /
  32. #  100Mb, 1ms      100Mb, 1ms    / 100Mb, 1ms
  33. #               r1 ----------- r2 
  34. #  100Mb, 1ms  /                  100Mb, 1ms
  35. #             /                   
  36. #          s2                       k2
  37. #
  38. Topology/DB instproc init ns {
  39.     $self instvar node_
  40.     set node_(s1) [$ns node]
  41.     set node_(s2) [$ns node]
  42.     set node_(r1) [$ns DelayBox]
  43.     set node_(r2) [$ns DelayBox]
  44.     set node_(k1) [$ns node]
  45.     set node_(k2) [$ns node]
  46.     $self next
  47.     $ns duplex-link $node_(s1) $node_(r1) 100Mb 1ms DropTail
  48.     $ns duplex-link $node_(s2) $node_(r1) 100Mb 1ms DropTail
  49.     $ns duplex-link $node_(r1) $node_(r2) 100Mb 1ms DropTail
  50.     $ns duplex-link $node_(k1) $node_(r2) 100Mb 1ms DropTail
  51.     $ns duplex-link $node_(k2) $node_(r2) 100Mb 1ms DropTail
  52. }
  53. TestSuite instproc setup_topo {} {
  54.     $self instvar ns_ node_ testName_
  55.     # clear output files
  56.     exec rm -f temp.rands
  57.     remove-all-packet-headers
  58.     add-packet-header IP TCP
  59.     $ns_ use-scheduler Heap
  60.     Trace set show_tcphdr_ 1 
  61.     Agent/TCP set minrto_ 1;     # ns-2.27 value
  62.    # setup tracing
  63.     set trace_file [open temp.rands w]
  64.     $ns_ trace-queue $node_(s1) $node_(r1) $trace_file
  65.     $ns_ trace-queue $node_(r1) $node_(s1) $trace_file
  66.     $ns_ trace-queue $node_(s2) $node_(r1) $trace_file
  67.     $ns_ trace-queue $node_(r1) $node_(s2) $trace_file
  68.     $ns_ trace-queue $node_(r1) $node_(r2) $trace_file
  69.     $ns_ trace-queue $node_(r2) $node_(r1) $trace_file
  70.     $ns_ trace-queue $node_(k1) $node_(r2) $trace_file
  71.     $ns_ trace-queue $node_(r2) $node_(k1) $trace_file
  72.     $ns_ trace-queue $node_(k2) $node_(r2) $trace_file
  73.     $ns_ trace-queue $node_(r2) $node_(k2) $trace_file
  74.     # create random variables
  75.     set srcd_rng [new RNG];
  76.     set src_delay [new RandomVariable/Uniform];   # delay 20-50 ms
  77.     $src_delay set min_ 20
  78.     $src_delay set max_ 50
  79.     $src_delay use-rng $srcd_rng
  80.     set srcbw_rng [new RNG];
  81.     set src_bw [new RandomVariable/Uniform];      # bw 1-20 Mbps
  82.     $src_bw set min_ 1
  83.     $src_bw set max_ 20
  84.     $src_delay use-rng $srcbw_rng
  85.     set sinkd_rng [new RNG];
  86.     set sink_delay [new RandomVariable/Uniform];   # delay 1-20 ms
  87.     $sink_delay set min_ 1
  88.     $sink_delay set max_ 20
  89.     $sink_delay use-rng $sinkd_rng
  90.     set sinkbw_rng [new RNG];
  91.     set sink_bw [new RandomVariable/Constant];      # bw 100 Mbps
  92.     $sink_bw set val_ 100
  93.     $sink_bw use-rng $sinkbw_rng
  94.     set loss_rng [new RNG];
  95.     set loss_rate [new RandomVariable/Uniform];    # loss 0-1%
  96.     $loss_rate set min_ 0
  97.     $loss_rate set max_ 0.01
  98.     $loss_rate use-rng $loss_rng
  99.     
  100.     # setup rules for DelayBoxes
  101.     $node_(r1) add-rule [$node_(s1) id] [$node_(k1) id] $src_delay 
  102.     $loss_rate $src_bw
  103.     $node_(r1) add-rule [$node_(s2) id] [$node_(k2) id] $src_delay 
  104.     $loss_rate $src_bw
  105.     $node_(r2) add-rule [$node_(s1) id] [$node_(k1) id] $sink_delay 
  106.     $loss_rate $sink_bw
  107.     $node_(r2) add-rule [$node_(s2) id] [$node_(k2) id] $sink_delay 
  108.     $loss_rate $sink_bw
  109. }
  110. #
  111. # 1node-http_1_0
  112. #
  113. Class Test/1node-http_1_0 -superclass TestSuite
  114. Test/1node-http_1_0 instproc init topo {
  115.         global defaultRNG
  116. $self instvar net_ defNet_ test_
  117.         $defaultRNG seed 9999
  118.         set net_ $topo
  119. set defNet_ DB
  120. set test_ 1node-http_1_0
  121. $self next 0
  122. }
  123. Test/1node-http_1_0 instproc run {} {
  124. $self instvar ns_ node_
  125.         $self setup_topo
  126.         set PM [new PackMimeHTTP]
  127.         $PM set-server $node_(s1)
  128.         $PM set-client $node_(k1)
  129.         $PM set-rate 10
  130. #        $PM set-outfile temp.rands
  131.         $ns_ at 0 "$PM start"
  132.         $ns_ at 5 "$PM stop"
  133. $ns_ run
  134. }
  135. #
  136. # 1node-http_1_1
  137. #
  138. Class Test/1node-http_1_1 -superclass TestSuite
  139. Test/1node-http_1_1 instproc init topo {
  140.         global defaultRNG
  141. $self instvar net_ defNet_ test_
  142.         $defaultRNG seed 9999
  143.         set net_ $topo
  144. set defNet_ DB
  145. set test_ 1node-http_1_1
  146. $self next 0
  147. }
  148. Test/1node-http_1_1 instproc run {} {
  149. $self instvar ns_ node_
  150.         $self setup_topo
  151.         set PM [new PackMimeHTTP]
  152.         $PM set-server $node_(s1)
  153.         $PM set-client $node_(k1)
  154. #        $PM set-outfile temp.rands
  155.         $PM set-rate 5
  156.         $PM set-1.1
  157.         $ns_ at 0 "$PM start"
  158.         $ns_ at 5 "$PM stop"
  159. $ns_ run
  160. }
  161. #
  162. # 2node-http_1_1
  163. #
  164. Class Test/2node-http_1_1 -superclass TestSuite
  165. Test/2node-http_1_1 instproc init topo {
  166.         global defaultRNG
  167. $self instvar net_ defNet_ test_
  168.         $defaultRNG seed 9999
  169.         set net_ $topo
  170. set defNet_ DB
  171. set test_ 2node-http_1_1
  172. $self next 0
  173. }
  174. Test/2node-http_1_1 instproc run {} {
  175. $self instvar ns_ node_
  176.         $self setup_topo
  177.         set PM [new PackMimeHTTP]
  178.         $PM set-server $node_(s1)
  179.         $PM set-client $node_(k1)
  180.         $PM set-server $node_(s2)
  181.         $PM set-client $node_(k2)
  182. #        $PM set-outfile temp.rands
  183.         $PM set-rate 5
  184.         $PM set-1.1
  185.     
  186.         $ns_ at 0 "$PM start"
  187.         $ns_ at 5 "$PM stop"
  188. $ns_ run
  189. }
  190. TestSuite runTest