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

通讯编程

开发平台:

Visual C++

  1. #
  2. Agent/TCP set tcpTick_ 0.1
  3. # The default for tcpTick_ is being changed to reflect a changing reality.
  4. Agent/TCP set rfc2988_ false
  5. # The default for rfc2988_ is being changed to true.
  6. # Copyright (c) 1998 University of Southern California.
  7. # All rights reserved.                                            
  8. #                                                                
  9. # Redistribution and use in source and binary forms are permitted
  10. # provided that the above copyright notice and this paragraph are
  11. # duplicated in all such forms and that any documentation, advertising
  12. # materials, and other materials related to such distribution and use
  13. # acknowledge that the software was developed by the University of
  14. # Southern California, Information Sciences Institute.  The name of the
  15. # University may not be used to endorse or promote products derived from
  16. # this software without specific prior written permission.
  17. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  18. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  19. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  20. # This test suite is for validating nixvector routing
  21. # To run the test: test-all-nixvec
  22. # FOR UPDATING GLOBAL DEFAULTS:
  23. Agent/TCP set precisionReduce_ false ;   # default changed on 2006/1/24.
  24. Agent/TCP set rtxcur_init_ 6.0 ;      # Default changed on 2006/01/21
  25. Agent/TCP set updated_rttvar_ false ;  # Variable added on 2006/1/21
  26. Agent/TCP set minrto_ 1
  27. # default changed on 10/14/2004.
  28. Agent/TCP set useHeaders_ false
  29. # The default is being changed to useHeaders_ true.
  30. Simulator instproc progress { } {
  31.     global progress_interval
  32.     puts [format "Progress to %6.1f seconds" [$self now]]
  33.     if { ![info exists progress_interval] } {
  34. set progress_interval [$self now]
  35.     }
  36.     $self at [expr [$self now] + $progress_interval] "$self progress"
  37. }
  38. Class TestSuite
  39. # Nixvector tests
  40. Class Test/NixVec -superclass TestSuite
  41. Class Test/NoNixVec -superclass TestSuite
  42. proc usage {} {
  43. global argv0
  44. puts stderr "usage: ns $argv0 <tests> "
  45. puts "Valid Tests: NixVec NoNixVec"
  46. exit 1
  47. }
  48. proc RunNix { ns usenix } {
  49.     global f
  50.     set f [open temp.rands w]
  51.     $ns trace-all $f
  52.     set n0  [$ns node]
  53.     set n1  [$ns node]
  54.     set n2  [$ns node]
  55.     set n3  [$ns node]
  56.     set n4  [$ns node]
  57.     set n5  [$ns node]
  58.     set n6  [$ns node]
  59.     set n7  [$ns node]
  60.     set n8  [$ns node]
  61.     set n9  [$ns node]
  62.     set n10 [$ns node]
  63.     set n11 [$ns node]
  64.     set n12 [$ns node]
  65.     $ns duplex-link    $n0  $n1  10mb 20ms DropTail
  66.     $ns duplex-link-op $n0  $n1  orient 0
  67.     $ns duplex-link    $n1  $n2  10mb 20ms DropTail
  68.     $ns duplex-link-op $n1  $n2  orient 0.5
  69.     $ns duplex-link    $n1  $n3  10mb 20ms DropTail
  70.     $ns duplex-link-op $n1  $n3  orient 0
  71.     $ns duplex-link    $n3  $n4  10mb 20ms DropTail
  72.     $ns duplex-link-op $n3  $n4  orient 0.5
  73.     $ns duplex-link    $n3  $n5  10mb 20ms DropTail
  74.     $ns duplex-link-op $n3  $n5  orient 0
  75.     $ns duplex-link    $n3  $n6  10mb 20ms DropTail
  76.     $ns duplex-link-op $n3  $n6  orient 1.5
  77.     $ns duplex-link    $n5  $n7  10mb 20ms DropTail
  78.     $ns duplex-link-op $n5  $n7  orient 0.5
  79.     $ns duplex-link    $n5  $n8  10mb 20ms DropTail
  80.     $ns duplex-link-op $n5  $n8  orient 0.25
  81.     $ns duplex-link    $n5  $n9  10mb 20ms DropTail
  82.     $ns duplex-link-op $n5  $n9  orient 0
  83.     $ns duplex-link    $n5  $n10 10mb 20ms DropTail
  84.     $ns duplex-link-op $n5  $n10 orient 1.75
  85.     $ns duplex-link    $n5  $n11 10mb 20ms DropTail
  86.     $ns duplex-link-op $n5  $n11 orient 1.5
  87.     $ns duplex-link    $n9  $n12 10mb 20ms DropTail
  88.     $ns duplex-link-op $n9  $n12 orient 0
  89.     set tcp0 [$ns create-connection TCP $n0 TCPSink $n12 0]
  90.     set ftp0 [new Source/FTP]
  91.     $ftp0 attach $tcp0
  92.     $ns at 0.1 "$ftp0 produce 500"
  93.     $ns at 1.0 "$ns progress"
  94.     $ns run
  95. }
  96. TestSuite instproc init {} {
  97.     #puts "Hello from TestSuite::init"
  98. }
  99. Test/NixVec instproc init {} {
  100. # check if nixvector module is disabled
  101.     if {![TclObject is-class RtModule/Nix]} {
  102. puts "Nixvector module is not present; validation skipped"
  103. exit 2
  104.     }
  105.     $self instvar ns
  106.     set ns [new Simulator]
  107.     $ns set-nix-routing
  108.     $self next
  109.     #puts "Hello from Test/NixVec::init"
  110. }
  111. Test/NixVec instproc run {} {
  112.     $self instvar ns
  113.     puts "Test/NixVec Starting Simulation..."
  114.     $ns at 10.0 "$self finish"
  115.     RunNix $ns 1
  116. }
  117. Test/NoNixVec instproc init {} {
  118.     $self instvar ns
  119.     set ns [new Simulator]
  120.     $self next
  121.     #puts "Hello from Test/NoNixVec::init"
  122. }
  123. Test/NoNixVec instproc run {} {
  124.     $self instvar ns
  125.     puts "Test/NoNixVec Starting Simulation..."
  126.     $ns at 10.0 "$self finish"
  127.     RunNix $ns 0
  128. }
  129. TestSuite instproc finish {} {
  130.     $self instvar ns
  131.     global quiet
  132.     global f
  133.     puts "finishing.."
  134.     $ns flush-trace
  135.     if { [info exists f] } {
  136.         close $f
  137.     }
  138.     exit 0
  139. }
  140. proc runtest {arg} {
  141. global quiet
  142. set quiet 0
  143. set b [llength $arg]
  144. if {$b == 1} {
  145. set test $arg
  146. } elseif {$b == 2} {
  147. set test [lindex $arg 0]
  148. if {[lindex $arg 1] == "QUIET"} {
  149. set quiet 1
  150. }
  151. } else {
  152. usage
  153. }
  154. set t [new Test/$test]
  155. $t run
  156. }
  157. global argv arg0
  158. runtest $argv