ktest-all
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #! /bin/sh
  2. # script to run all tests in test-suite.tcl
  3. #
  4. # Copyright (c) 1995 The Regents of the University of California.
  5. # All rights reserved.
  6. #
  7. # Redistribution and use in source and binary forms, with or without
  8. # modification, are permitted provided that the following conditions
  9. # are met:
  10. # 1. Redistributions of source code must retain the above copyright
  11. #    notice, this list of conditions and the following disclaimer.
  12. # 2. Redistributions in binary form must reproduce the above copyright
  13. #    notice, this list of conditions and the following disclaimer in the
  14. #    documentation and/or other materials provided with the distribution.
  15. # 3. All advertising materials mentioning features or use of this software
  16. #    must display the following acknowledgement:
  17. # This product includes software developed by the Network Research
  18. # Group at Lawrence Berkeley National Laboratory.
  19. # 4. Neither the name of the University nor of the Laboratory may be used
  20. #    to endorse or promote products derived from this software without
  21. #    specific prior written permission.
  22. #
  23. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  24. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  25. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  26. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  27. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  28. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  29. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  30. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  31. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  32. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  33. # SUCH DAMAGE.
  34. #
  35. # @(#) $Header: /cvsroot/nsnam/ns-2/bin/ktest-all,v 1.6 1997/09/11 00:50:51 heideman Exp $
  36. #
  37. # This script was written and contributed by Matt Mathis (mathis@psc.edu)
  38. # This script was later hacked extensively by Kannan to build the rtglib
  39. # test suites.  The script has been renamed to reflet this extensive hacking.
  40. # -- Kannan (kannan@isi.edu) Mon Apr 28 10:44:11 PDT 1997
  41. #
  42. PROG=`basename $0`
  43. # Compress raw trace files for storage.
  44. COMPRESSP=:
  45. if [ $# -ge 1 ] ; then
  46. TESTSUITE=tcl/test/test-suite-$1
  47. shift
  48. else
  49. TESTSUITE=tcl/test/test-suite-routed
  50. fi
  51. old_tests=`perl -ane 'm.^proc test_. && 
  52. print substr($F[1], index($F[1], "_")+1), " "' $TESTSUITE.tcl`
  53. new_tests=`perl -ane 'm.^Class Test/. && 
  54. print substr($F[1], index($F[1], "/")+1), " "' $TESTSUITE.tcl`
  55. top=`perl -ane 'm.^Class Topology/. && 
  56. print substr($F[1], index($F[1], "/")+1), " "' tcl/test/topologies.tcl`
  57. if [ -n "$old_tests" -a -n "$new_tests" ] ; then
  58.     echo "$PROG: warning $TESTSUITE.tcl mixes old and new test suites" 2>&1
  59.     echo "$PROG: ignore old tests" 2>&1
  60.     old_tests=
  61. fi
  62. if [ $# -ge 1 ] ; then
  63. tests="$@"
  64. else
  65. tests="$old_tests $new_tests"
  66. fi
  67. topologies=${top:-X}
  68. # Note that the telnet test includes random source behavior - its output
  69. # is not currently repeatable from run to run
  70. if [ ! -d test-output-raw ]; then
  71. mkdir test-output-raw
  72. fi
  73. compare() {
  74.     if [ -f all.tr ]
  75.     then
  76. file=`perl -ane '$F[2] =~ s/test_// ; $F[2] =~ s/_/-/g; print $F[2]; exit' out.tr`
  77. # if echo $file | grep : >/dev/null ; then
  78. #     file=`echo $file | sed 's/^[a-zA-Z0-9_]*:(.*)/'$1':1/'`
  79. # fi
  80. if [ -f test-output-raw/$file.gz ]
  81. then
  82. gunzip test-output-raw/$file.gz
  83. fi
  84. COMPRESS=$COMPRESSP
  85. if [ ! -f test-output-raw/$file ]
  86. then
  87.     echo saving output to $file for future validation
  88.     cp all.tr test-output-raw/$file
  89. else
  90.     cmp -s all.tr test-output-raw/$file
  91.     if [ $? = 0 ]
  92.     then
  93. echo Test output agrees with reference output "($file)"
  94.     else
  95. echo Test output differs from reference output "($file)"
  96. DIFFCMD="diff test-output-raw/$file.test test-output-raw/$file"
  97. if [ `diff test-output-raw/$file all.tr | wc -l` -le 10 ]
  98. then
  99.     echo "output of $DIFFCMD"
  100.     diff -c all.tr test-output-raw/$file
  101. fi
  102. cp all.tr test-output-raw/$file.test
  103. echo "Diagnose with: $DIFFCMD"
  104. COMPRESS=false
  105.     fi
  106. fi
  107. if [ -n "$DISPLAY" ] ; then
  108.     raw2xg -s 0.01 -m 90 out.tr | xgraph &
  109.     sleep 5
  110. else
  111.     if [ ! -d ps-files ] ; then
  112. mkdir ps-files
  113.     fi
  114.     if raw2gp -g -a -s 0.01 -m 90 out.tr | gnuplot ; then
  115. egrep BoundingBox $file.ps > ps-files/$file.bb
  116. gzip $file.ps 
  117. mv $file.ps.gz ps-files
  118. rm -f packets drops link-fails link-recovery
  119.     fi
  120. fi
  121. if ${COMPRESS} ; then
  122. gzip test-output-raw/$file
  123. fi
  124.     else
  125. echo "Test $1 did not run over topology $2.  Continuing..."
  126.     fi
  127. }
  128. #
  129. echo $tests
  130. for t in $tests; do
  131.     for p in $topologies; do
  132. echo
  133. echo -n Running test: ./ns $TESTSUITE.tcl $t
  134. case $p in
  135. X) p=""; echo "" ;;
  136. *) echo " $p" ;;
  137. esac
  138. # Beware that xgraph is run on temp.rands asynchronously, if it
  139. # is slow to launch, you may get an incorrect graph
  140. rm -f all.tr out.tr core
  141. ./ns $TESTSUITE.tcl $t $p && compare $t $p
  142. if [ -f core ] ; then
  143. if [ ! -d crash ] ; then
  144. mkdir crash
  145. fi
  146. mv core crash/$t:$p.core
  147. echo Core dump moved to crash/$t:$p.core
  148. fi
  149.     done
  150.     if [ -n "$DISPLAY" ] ; then
  151. echo 'next?'
  152. read answer
  153.     fi
  154. done