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

通讯编程

开发平台:

Visual C++

  1. #
  2. # Copyright (c) 2003  International Computer Science Institute
  3. # All rights reserved.
  4. #
  5. # Redistribution and use in source and binary forms, with or without
  6. # modification, are permitted provided that the following conditions
  7. # are met:
  8. # 1. Redistributions of source code must retain the above copyright
  9. #    notice, this list of conditions and the following disclaimer.
  10. # 2. Redistributions in binary form must reproduce the above copyright
  11. #    notice, this list of conditions and the following disclaimer in the
  12. #    documentation and/or other materials provided with the distribution.
  13. # 3. All advertising materials mentioning features or use of this software
  14. #    must display the following acknowledgement:
  15. #      This product includes software developed by ACIRI, the AT&T
  16. #      Center for Internet Research at ICSI (the International Computer
  17. #      Science Institute).
  18. # 4. Neither the name of ACIRI nor of ICSI may be used
  19. #    to endorse or promote products derived from this software without
  20. #    specific prior written permission.
  21. #
  22. # THIS SOFTWARE IS PROVIDED BY ICSI AND CONTRIBUTORS ``AS IS'' AND
  23. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25. # ARE DISCLAIMED.  IN NO EVENT SHALL ICSI OR CONTRIBUTORS BE LIABLE
  26. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32. # SUCH DAMAGE.
  33. #
  34. source misc_simple.tcl
  35. # FOR UPDATING GLOBAL DEFAULTS:
  36. Agent/TCP set precisionReduce_ false ;   # default changed on 2006/1/24.
  37. Agent/TCP set rtxcur_init_ 6.0 ;      # Default changed on 2006/01/21
  38. Agent/TCP set updated_rttvar_ false ;  # Variable added on 2006/1/21
  39. source support.tcl
  40. # Uncomment the line below to use a random seed for the
  41. #  random number generator.
  42. # ns-random 0
  43. TestSuite instproc finish {file stoptime} {
  44.         global quiet PERL
  45. set wrap 90
  46. exec $PERL ../../bin/getrc -s 2 -d 3 all.tr | 
  47.   $PERL ../../bin/raw2xg -s 0.01 -m $wrap -t $file > temp.rands
  48.         exec $PERL ../../bin/getrc -s 3 -d 2 all.tr | 
  49.           $PERL ../../bin/raw2xg -a -c -p -s 0.01 -m $wrap -t $file >> 
  50.   temp.rands
  51.         exec echo $stoptime 0 >> temp.rands 
  52.         if {$quiet == "false"} {
  53.                 exec xgraph -bb -tk -nl -m -x time -y packets temp.rands &
  54.         }
  55.         exit 0
  56. }
  57. Class Topology
  58. Topology instproc node? num {
  59.     $self instvar node_
  60.     return $node_($num)
  61. }
  62. Class Topology/net2 -superclass Topology
  63. Topology/net2 instproc init ns {
  64.     $self instvar node_
  65.     set node_(s1) [$ns node]
  66.     set node_(s2) [$ns node]
  67.     set node_(r1) [$ns node]
  68.     set node_(r2) [$ns node]
  69.     set node_(s3) [$ns node]
  70.     set node_(s4) [$ns node]
  71.     $self next
  72.     $ns duplex-link $node_(s1) $node_(r1) 10Mb 2ms DropTail
  73.     $ns duplex-link $node_(s2) $node_(r1) 10Mb 3ms DropTail
  74.     $ns duplex-link $node_(r1) $node_(r2) 1.5Mb 20ms RED
  75.     $ns queue-limit $node_(r1) $node_(r2) 50
  76.     $ns queue-limit $node_(r2) $node_(r1) 50 
  77.     $ns duplex-link $node_(s3) $node_(r2) 10Mb 4ms DropTail
  78.     $ns duplex-link $node_(s4) $node_(r2) 10Mb 5ms DropTail
  79. }
  80. Class Test/oneTCP -superclass TestSuite
  81. Test/oneTCP instproc init {} {
  82.     $self instvar net_ test_ guide_ stopTime1_ 
  83.     set net_ net2
  84.     set test_ oneTCP
  85.     set guide_  
  86.     "Example validation test with TCP, packet traces."
  87.     set stopTime1_ 10
  88.     Agent/TCP set window_ 64
  89.     $self next pktTraceFile
  90. }
  91. Test/oneTCP instproc run {} {
  92.     global quiet
  93.     $self instvar ns_ node_ testName_ guide_ stopTime1_ 
  94.     puts "Guide: $guide_"
  95.     $self setTopo
  96.     set stopTime $stopTime1_
  97.     set tcp1 [$ns_ create-connection TCP/Sack1 $node_(s1) TCPSink/Sack1 $node_(s3) 0]
  98.     set ftp [new Application/FTP]
  99.     $ftp attach-agent $tcp1
  100.     $ns_ at 0 "$ftp produce 100"
  101.     $ns_ at 3 "$ftp producemore 1000"
  102.     $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" 
  103.     $ns_ run
  104. }
  105. Class Test/twoTCPs -superclass TestSuite
  106. Test/twoTCPs instproc init {} {
  107.     $self instvar net_ test_ guide_ stopTime1_ 
  108.     set net_ net2
  109.     set test_ twoTCPs
  110.     set guide_  
  111.     "Example validation test with two TCPs, packet traces."
  112.     set stopTime1_ 10
  113.     Agent/TCP set window_ 64
  114.     $self next pktTraceFile
  115. }
  116. Test/twoTCPs instproc run {} {
  117.     global quiet
  118.     $self instvar ns_ node_ testName_ guide_ stopTime1_ 
  119.     puts "Guide: $guide_"
  120.     $self setTopo
  121.     set stopTime $stopTime1_
  122.     set tcp1 [$ns_ create-connection TCP/Sack1 $node_(s1) TCPSink/Sack1 $node_(s3) 0]
  123.     set ftp [new Application/FTP]
  124.     $ftp attach-agent $tcp1
  125.     $ns_ at 0 "$ftp produce 100"
  126.     $ns_ at 3 "$ftp producemore 1000"
  127.     set tcp2 [$ns_ create-connection TCP/Sack1 $node_(s1) TCPSink/Sack1 $node_(s3) 1]
  128.     $tcp2 set window 8
  129.     set ftp2 [new Application/FTP]
  130.     $ftp2 attach-agent $tcp2
  131.     $ns_ at 1.0 "$ftp2 produce 100"
  132.     $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" 
  133.     $ns_ run
  134. }
  135. Class Test/oneTFRC -superclass TestSuite
  136. Test/oneTFRC instproc init {} {
  137.     $self instvar net_ test_ guide_ stopTime1_ 
  138.     set net_ net2
  139.     set test_ oneTFRC
  140.     set guide_  
  141.     "Example validation test with TFRC, packet traces."
  142.     set stopTime1_ 10
  143.     Agent/TFRC set SndrType_ 1
  144.     $self next pktTraceFile
  145. }
  146. Test/oneTFRC instproc run {} {
  147.     global quiet
  148.     $self instvar ns_ node_ testName_ guide_ stopTime1_ 
  149.     puts "Guide: $guide_"
  150.     $self setTopo
  151.     set stopTime $stopTime1_
  152.     set tf1 [$ns_ create-connection TFRC $node_(s1) TFRCSink $node_(s3) 0]
  153.     set ftp [new Application/FTP]
  154.     $ftp attach-agent $tf1
  155.     $ns_ at 0 "$ftp produce 100"
  156.     $ns_ at 3 "$ftp producemore 1000"
  157.     $ns_ at $stopTime "$self cleanupAll $testName_ $stopTime" 
  158.     $ns_ run
  159. }
  160. TestSuite runTest