address some list comments
authorCraig Dowell <craigdo@ee.washington.edu>
Tue Apr 01 16:30:08 2008 -0700 (22 months ago)
changeset 28630bcad16fc46b
parent 2862 b6ef2bfe89da
child 2864 dc911620c136
address some list comments
regression/regression.py
regression/tests/test-csma-broadcast.py
regression/tests/test-csma-multicast.py
regression/tests/test-csma-one-subnet.py
regression/tests/test-csma-packet-socket.py
regression/tests/test-simple-error-model.py
regression/tests/test-simple-global-routing.py
regression/tests/test-simple-point-to-point-olsr.py
regression/tests/test-tcp-large-transfer.py
regression/tests/test-udp-echo.py
regression/tracediff.py
     1.1 --- a/regression/regression.py	Mon Mar 31 18:20:33 2008 -0700
     1.2 +++ b/regression/regression.py	Tue Apr 01 16:30:08 2008 -0700
     1.3 @@ -8,7 +8,7 @@
     1.4  
     1.5  Command line options:
     1.6  
     1.7 --v: verbose   -- run tests in verbose mode with output to stdout
     1.8 +-v: verbose   -- run tests in verbose mode (print diff output)
     1.9  -g: generate  -- write the output file for a test instead of comparing it
    1.10  
    1.11  If non-option arguments are present, they are names for tests to run.
    1.12 @@ -16,13 +16,41 @@
    1.13  
    1.14  """
    1.15  
    1.16 +import getopt
    1.17  import sys
    1.18  import os
    1.19 -import getopt
    1.20 +import urllib
    1.21 +import subprocess
    1.22  
    1.23  verbose = 0
    1.24  generate = 0
    1.25  
    1.26 +#
    1.27 +# The directory in which the tarball of the reference traces lives.  This is
    1.28 +# used if Mercurial is not on the system.
    1.29 +#
    1.30 +refUrl = "http://www.nsnam.org/releases/"
    1.31 +
    1.32 +#
    1.33 +# The name of the tarball to find the reference traces in if there is no
    1.34 +# mercurial on the system.  It is expected to be created using tar -cjf and
    1.35 +# will be extracted using tar -xjf
    1.36 +#
    1.37 +refTarName = "ns-3-ref-traces.tar.bz2"
    1.38 +
    1.39 +#
    1.40 +# The path to the Mercurial repository used to find the reference traces if
    1.41 +# we find "hg" on the system.  We expect that the repository will be named
    1.42 +# identically to refDirName below
    1.43 +#
    1.44 +refRepo = "http://code.nsnam.org/craigdo/"
    1.45 +
    1.46 +#
    1.47 +# The local directory name into which the reference traces will go in either
    1.48 +# case (net or hg).
    1.49 +#
    1.50 +refDirName = "ns-3-ref-traces"
    1.51 +
    1.52  def main(tests = None, testdir = None):
    1.53      """Execute regression tests.
    1.54  
    1.55 @@ -33,6 +61,11 @@
    1.56  
    1.57      global verbose
    1.58      global generate
    1.59 +    global refUrl
    1.60 +    global refTarName
    1.61 +    global refRepo
    1.62 +    global refRepoName
    1.63 +    global refDirName
    1.64      
    1.65      try:
    1.66          opts, args = getopt.getopt(sys.argv[1:], 'vg')
    1.67 @@ -45,28 +78,33 @@
    1.68          if o == '-v': verbose = 1
    1.69          if o == '-g': generate = 1
    1.70  
    1.71 -    userName = "craigdo/"
    1.72 -    repoName = "ns-3-ref-traces/"
    1.73 -
    1.74      print "========== Running Unit Tests =========="
    1.75      os.system("./waf check")
    1.76  
    1.77      print "========== Running Regression Tests =========="
    1.78 -    print "Synchronizing reference traces."
    1.79 -    
    1.80 -    if not os.path.exists(repoName):
    1.81 -        cloneCmd = "hg clone http://code.nsnam.org/" + userName + repoName + " >& /dev/null"
    1.82 -        os.system(cloneCmd)
    1.83 +    if os.system("hg version > /dev/null 2>&1") == 0:
    1.84 +        print "Synchronizing reference traces using Mercurial."
    1.85 +        if not os.path.exists(refDirName):
    1.86 +            os.system("hg clone " + refRepo + refDirName +
    1.87 +              " > /dev/null 2>&1")
    1.88 +        else:
    1.89 +            os.chdir(refDirName)
    1.90 +            os.system("hg pull " + refRepo + refDirName +
    1.91 +                " > /dev/null 2>&1")
    1.92 +            os.chdir("..")
    1.93      else:
    1.94 -        os.chdir(repoName)
    1.95 -        pullCmd = "hg pull http://code.nsnam.org/" + userName + repoName + " >& /dev/null"
    1.96 -        os.system(pullCmd)
    1.97 -        os.chdir("..")
    1.98 +        print "Synchronizing reference traces from web."
    1.99 +        urllib.urlretrieve(refUrl + refTarName, refTarName)
   1.100 +        os.system("tar -xjf " + refTarName)
   1.101  
   1.102      print "Done."
   1.103  
   1.104      bad = []
   1.105  
   1.106 +    if not os.path.exists(refDirName):
   1.107 +        print "Reference traces directory does not exist"
   1.108 +        return 3
   1.109 +    
   1.110      if not testdir:
   1.111          testdir = os.path.join(os.curdir, "tests")
   1.112  
   1.113 @@ -87,9 +125,7 @@
   1.114          tests = findtests(testdir)
   1.115  
   1.116      for test in tests:
   1.117 -        if verbose:
   1.118 -            print "Running test " + test
   1.119 -        result = runtest(test)
   1.120 +        result = run_test(test)
   1.121          if result == 0:
   1.122              if generate:
   1.123                  print "GENERATE" + test
   1.124 @@ -108,8 +144,6 @@
   1.125      testdir -- the directory to look in for tests
   1.126      """
   1.127      names = os.listdir(testdir)
   1.128 -    if verbose:
   1.129 -        print "findtests(): found ", names
   1.130      tests = []
   1.131      for name in names:
   1.132          if name[:5] == "test-" and name[-3:] == ".py":
   1.133 @@ -118,7 +152,7 @@
   1.134      tests.sort()
   1.135      return tests
   1.136  
   1.137 -def runtest(test):
   1.138 +def run_test(test):
   1.139      """Run a single test.
   1.140  
   1.141      Arguments:
   1.142 @@ -135,7 +169,7 @@
   1.143          os.mkdir("traces")
   1.144      
   1.145      mod = __import__(test, globals(), locals(), [])
   1.146 -    return mod.run(verbose, generate)
   1.147 +    return mod.run(verbose, generate, refDirName)
   1.148  
   1.149  if __name__ == '__main__':
   1.150      sys.exit(main())
     2.1 --- a/regression/tests/test-csma-broadcast.py	Mon Mar 31 18:20:33 2008 -0700
     2.2 +++ b/regression/tests/test-csma-broadcast.py	Tue Apr 01 16:30:08 2008 -0700
     2.3 @@ -4,38 +4,9 @@
     2.4  
     2.5  import os
     2.6  import shutil
     2.7 +import tracediff
     2.8  
     2.9 -def run(verbose, generate):
    2.10 +def run(verbose, generate, refDirName):
    2.11      """Execute a test."""
    2.12  
    2.13 -    testName = "csma-broadcast"
    2.14 -    repoName = "ns-3-ref-traces/"
    2.15 -    refDirName = testName + ".ref"
    2.16 -
    2.17 -    if not os.path.exists(repoName):
    2.18 -        print"No reference trace repository"
    2.19 -        return 1
    2.20 -
    2.21 -    if generate:
    2.22 -        if not os.path.exists(repoName + refDirName):
    2.23 -            print "creating new " + repoName + refDirName
    2.24 -            os.mkdir(repoName + refDirName)
    2.25 -
    2.26 -        os.system("./waf --cwd regression/" + repoName + refDirName +
    2.27 -            " --run " + testName + " >& /dev/null")
    2.28 -
    2.29 -        print "Remember to commit " + repoName + refDirName
    2.30 -        return 0
    2.31 -    else:
    2.32 -        if not os.path.exists(repoName + refDirName):
    2.33 -            print "Cannot locate reference traces"
    2.34 -            return 1
    2.35 -
    2.36 -        shutil.rmtree("traces");
    2.37 -        os.mkdir("traces")
    2.38 -        
    2.39 -        os.system("./waf --cwd regression/traces --run " +
    2.40 -          testName + " >& /dev/null")
    2.41 -        
    2.42 -        return os.system("diff -q traces " + repoName + refDirName +
    2.43 -         " >& /dev/null")
    2.44 +    return tracediff.run_test(verbose, generate, refDirName, "csma-broadcast")
     3.1 --- a/regression/tests/test-csma-multicast.py	Mon Mar 31 18:20:33 2008 -0700
     3.2 +++ b/regression/tests/test-csma-multicast.py	Tue Apr 01 16:30:08 2008 -0700
     3.3 @@ -4,38 +4,9 @@
     3.4  
     3.5  import os
     3.6  import shutil
     3.7 +import tracediff
     3.8  
     3.9 -def run(verbose, generate):
    3.10 +def run(verbose, generate, refDirName):
    3.11      """Execute a test."""
    3.12  
    3.13 -    testName = "csma-multicast"
    3.14 -    repoName = "ns-3-ref-traces/"
    3.15 -    refDirName = testName + ".ref"
    3.16 -
    3.17 -    if not os.path.exists(repoName):
    3.18 -        print"No reference trace repository"
    3.19 -        return 1
    3.20 -
    3.21 -    if generate:
    3.22 -        if not os.path.exists(repoName + refDirName):
    3.23 -            print "creating new " + repoName + refDirName
    3.24 -            os.mkdir(repoName + refDirName)
    3.25 -
    3.26 -        os.system("./waf --cwd regression/" + repoName + refDirName +
    3.27 -            " --run " + testName + " >& /dev/null")
    3.28 -
    3.29 -        print "Remember to commit " + repoName + refDirName
    3.30 -        return 0
    3.31 -    else:
    3.32 -        if not os.path.exists(repoName + refDirName):
    3.33 -            print "Cannot locate reference traces"
    3.34 -            return 1
    3.35 -
    3.36 -        shutil.rmtree("traces");
    3.37 -        os.mkdir("traces")
    3.38 -        
    3.39 -        os.system("./waf --cwd regression/traces --run " +
    3.40 -          testName + " >& /dev/null")
    3.41 -        
    3.42 -        return os.system("diff -q traces " + repoName + refDirName +
    3.43 -         " >& /dev/null")
    3.44 +    return tracediff.run_test(verbose, generate, refDirName, "csma-multicast")
     4.1 --- a/regression/tests/test-csma-one-subnet.py	Mon Mar 31 18:20:33 2008 -0700
     4.2 +++ b/regression/tests/test-csma-one-subnet.py	Tue Apr 01 16:30:08 2008 -0700
     4.3 @@ -4,38 +4,9 @@
     4.4  
     4.5  import os
     4.6  import shutil
     4.7 +import tracediff
     4.8  
     4.9 -def run(verbose, generate):
    4.10 +def run(verbose, generate, refDirName):
    4.11      """Execute a test."""
    4.12  
    4.13 -    testName = "csma-one-subnet"
    4.14 -    repoName = "ns-3-ref-traces/"
    4.15 -    refDirName = testName + ".ref"
    4.16 -
    4.17 -    if not os.path.exists(repoName):
    4.18 -        print"No reference trace repository"
    4.19 -        return 1
    4.20 -
    4.21 -    if generate:
    4.22 -        if not os.path.exists(repoName + refDirName):
    4.23 -            print "creating new " + repoName + refDirName
    4.24 -            os.mkdir(repoName + refDirName)
    4.25 -
    4.26 -        os.system("./waf --cwd regression/" + repoName + refDirName +
    4.27 -            " --run " + testName + " >& /dev/null")
    4.28 -
    4.29 -        print "Remember to commit " + repoName + refDirName
    4.30 -        return 0
    4.31 -    else:
    4.32 -        if not os.path.exists(repoName + refDirName):
    4.33 -            print "Cannot locate reference traces"
    4.34 -            return 1
    4.35 -
    4.36 -        shutil.rmtree("traces");
    4.37 -        os.mkdir("traces")
    4.38 -        
    4.39 -        os.system("./waf --cwd regression/traces --run " +
    4.40 -          testName + " >& /dev/null")
    4.41 -        
    4.42 -        return os.system("diff -q traces " + repoName + refDirName +
    4.43 -         " >& /dev/null")
    4.44 +    return tracediff.run_test(verbose, generate, refDirName, "csma-one-subnet")
     5.1 --- a/regression/tests/test-csma-packet-socket.py	Mon Mar 31 18:20:33 2008 -0700
     5.2 +++ b/regression/tests/test-csma-packet-socket.py	Tue Apr 01 16:30:08 2008 -0700
     5.3 @@ -4,38 +4,10 @@
     5.4  
     5.5  import os
     5.6  import shutil
     5.7 +import tracediff
     5.8  
     5.9 -def run(verbose, generate):
    5.10 +def run(verbose, generate, refDirName):
    5.11      """Execute a test."""
    5.12  
    5.13 -    testName = "csma-packet-socket"
    5.14 -    repoName = "ns-3-ref-traces/"
    5.15 -    refDirName = testName + ".ref"
    5.16 -
    5.17 -    if not os.path.exists(repoName):
    5.18 -        print"No reference trace repository"
    5.19 -        return 1
    5.20 -
    5.21 -    if generate:
    5.22 -        if not os.path.exists(repoName + refDirName):
    5.23 -            print "creating new " + repoName + refDirName
    5.24 -            os.mkdir(repoName + refDirName)
    5.25 -
    5.26 -        os.system("./waf --cwd regression/" + repoName + refDirName +
    5.27 -            " --run " + testName + " >& /dev/null")
    5.28 -
    5.29 -        print "Remember to commit " + repoName + refDirName
    5.30 -        return 0
    5.31 -    else:
    5.32 -        if not os.path.exists(repoName + refDirName):
    5.33 -            print "Cannot locate reference traces"
    5.34 -            return 1
    5.35 -
    5.36 -        shutil.rmtree("traces");
    5.37 -        os.mkdir("traces")
    5.38 -        
    5.39 -        os.system("./waf --cwd regression/traces --run " +
    5.40 -          testName + " >& /dev/null")
    5.41 -        
    5.42 -        return os.system("diff -q traces " + repoName + refDirName +
    5.43 -         " >& /dev/null")
    5.44 +    return tracediff.run_test(verbose, generate, refDirName,
    5.45 +        "csma-packet-socket")
     6.1 --- a/regression/tests/test-simple-error-model.py	Mon Mar 31 18:20:33 2008 -0700
     6.2 +++ b/regression/tests/test-simple-error-model.py	Tue Apr 01 16:30:08 2008 -0700
     6.3 @@ -4,38 +4,10 @@
     6.4  
     6.5  import os
     6.6  import shutil
     6.7 +import tracediff
     6.8  
     6.9 -def run(verbose, generate):
    6.10 +def run(verbose, generate, refDirName):
    6.11      """Execute a test."""
    6.12  
    6.13 -    testName = "simple-error-model"
    6.14 -    repoName = "ns-3-ref-traces/"
    6.15 -    refDirName = testName + ".ref"
    6.16 -
    6.17 -    if not os.path.exists(repoName):
    6.18 -        print"No reference trace repository"
    6.19 -        return 1
    6.20 -
    6.21 -    if generate:
    6.22 -        if not os.path.exists(repoName + refDirName):
    6.23 -            print "creating new " + repoName + refDirName
    6.24 -            os.mkdir(repoName + refDirName)
    6.25 -
    6.26 -        os.system("./waf --cwd regression/" + repoName + refDirName +
    6.27 -            " --run " + testName + " >& /dev/null")
    6.28 -
    6.29 -        print "Remember to commit " + repoName + refDirName
    6.30 -        return 0
    6.31 -    else:
    6.32 -        if not os.path.exists(repoName + refDirName):
    6.33 -            print "Cannot locate reference traces"
    6.34 -            return 1
    6.35 -
    6.36 -        shutil.rmtree("traces");
    6.37 -        os.mkdir("traces")
    6.38 -        
    6.39 -        os.system("./waf --cwd regression/traces --run " +
    6.40 -          testName + " >& /dev/null")
    6.41 -        
    6.42 -        return os.system("diff -q traces " + repoName + refDirName +
    6.43 -         " >& /dev/null")
    6.44 +    return tracediff.run_test(verbose, generate, refDirName,
    6.45 +        "simple-error-model")
     7.1 --- a/regression/tests/test-simple-global-routing.py	Mon Mar 31 18:20:33 2008 -0700
     7.2 +++ b/regression/tests/test-simple-global-routing.py	Tue Apr 01 16:30:08 2008 -0700
     7.3 @@ -4,38 +4,10 @@
     7.4  
     7.5  import os
     7.6  import shutil
     7.7 +import tracediff
     7.8  
     7.9 -def run(verbose, generate):
    7.10 +def run(verbose, generate, refDirName):
    7.11      """Execute a test."""
    7.12  
    7.13 -    testName = "simple-global-routing"
    7.14 -    repoName = "ns-3-ref-traces/"
    7.15 -    refDirName = testName + ".ref"
    7.16 -
    7.17 -    if not os.path.exists(repoName):
    7.18 -        print"No reference trace repository"
    7.19 -        return 1
    7.20 -
    7.21 -    if generate:
    7.22 -        if not os.path.exists(repoName + refDirName):
    7.23 -            print "creating new " + repoName + refDirName
    7.24 -            os.mkdir(repoName + refDirName)
    7.25 -
    7.26 -        os.system("./waf --cwd regression/" + repoName + refDirName +
    7.27 -            " --run " + testName + " >& /dev/null")
    7.28 -
    7.29 -        print "Remember to commit " + repoName + refDirName
    7.30 -        return 0
    7.31 -    else:
    7.32 -        if not os.path.exists(repoName + refDirName):
    7.33 -            print "Cannot locate reference traces"
    7.34 -            return 1
    7.35 -
    7.36 -        shutil.rmtree("traces");
    7.37 -        os.mkdir("traces")
    7.38 -        
    7.39 -        os.system("./waf --cwd regression/traces --run " +
    7.40 -          testName + " >& /dev/null")
    7.41 -        
    7.42 -        return os.system("diff -q traces " + repoName + refDirName +
    7.43 -         " >& /dev/null")
    7.44 +    return tracediff.run_test(verbose, generate, refDirName,
    7.45 +        "simple-global-routing")
     8.1 --- a/regression/tests/test-simple-point-to-point-olsr.py	Mon Mar 31 18:20:33 2008 -0700
     8.2 +++ b/regression/tests/test-simple-point-to-point-olsr.py	Tue Apr 01 16:30:08 2008 -0700
     8.3 @@ -4,38 +4,10 @@
     8.4  
     8.5  import os
     8.6  import shutil
     8.7 +import tracediff
     8.8  
     8.9 -def run(verbose, generate):
    8.10 +def run(verbose, generate, refDirName):
    8.11      """Execute a test."""
    8.12  
    8.13 -    testName = "simple-point-to-point-olsr"
    8.14 -    repoName = "ns-3-ref-traces/"
    8.15 -    refDirName = testName + ".ref"
    8.16 -
    8.17 -    if not os.path.exists(repoName):
    8.18 -        print"No reference trace repository"
    8.19 -        return 1
    8.20 -
    8.21 -    if generate:
    8.22 -        if not os.path.exists(repoName + refDirName):
    8.23 -            print "creating new " + repoName + refDirName
    8.24 -            os.mkdir(repoName + refDirName)
    8.25 -
    8.26 -        os.system("./waf --cwd regression/" + repoName + refDirName +
    8.27 -            " --run " + testName + " >& /dev/null")
    8.28 -
    8.29 -        print "Remember to commit " + repoName + refDirName
    8.30 -        return 0
    8.31 -    else:
    8.32 -        if not os.path.exists(repoName + refDirName):
    8.33 -            print "Cannot locate reference traces"
    8.34 -            return 1
    8.35 -
    8.36 -        shutil.rmtree("traces");
    8.37 -        os.mkdir("traces")
    8.38 -        
    8.39 -        os.system("./waf --cwd regression/traces --run " +
    8.40 -          testName + " >& /dev/null")
    8.41 -        
    8.42 -        return os.system("diff -q traces " + repoName + refDirName +
    8.43 -         " >& /dev/null")
    8.44 +    return tracediff.run_test(verbose, generate, refDirName,
    8.45 +        "simple-point-to-point-olsr")
     9.1 --- a/regression/tests/test-tcp-large-transfer.py	Mon Mar 31 18:20:33 2008 -0700
     9.2 +++ b/regression/tests/test-tcp-large-transfer.py	Tue Apr 01 16:30:08 2008 -0700
     9.3 @@ -4,38 +4,10 @@
     9.4  
     9.5  import os
     9.6  import shutil
     9.7 +import tracediff
     9.8  
     9.9 -def run(verbose, generate):
    9.10 +def run(verbose, generate, refDirName):
    9.11      """Execute a test."""
    9.12  
    9.13 -    testName = "tcp-large-transfer"
    9.14 -    repoName = "ns-3-ref-traces/"
    9.15 -    refDirName = testName + ".ref"
    9.16 -
    9.17 -    if not os.path.exists(repoName):
    9.18 -        print"No reference trace repository"
    9.19 -        return 1
    9.20 -
    9.21 -    if generate:
    9.22 -        if not os.path.exists(repoName + refDirName):
    9.23 -            print "creating new " + repoName + refDirName
    9.24 -            os.mkdir(repoName + refDirName)
    9.25 -
    9.26 -        os.system("./waf --cwd regression/" + repoName + refDirName +
    9.27 -            " --run " + testName + " >& /dev/null")
    9.28 -
    9.29 -        print "Remember to commit " + repoName + refDirName
    9.30 -        return 0
    9.31 -    else:
    9.32 -        if not os.path.exists(repoName + refDirName):
    9.33 -            print "Cannot locate reference traces"
    9.34 -            return 1
    9.35 -
    9.36 -        shutil.rmtree("traces");
    9.37 -        os.mkdir("traces")
    9.38 -        
    9.39 -        os.system("./waf --cwd regression/traces --run " +
    9.40 -          testName + " >& /dev/null")
    9.41 -        
    9.42 -        return os.system("diff -q traces " + repoName + refDirName +
    9.43 -         " >& /dev/null")
    9.44 +    return tracediff.run_test(verbose, generate, refDirName,
    9.45 +        "tcp-large-transfer")
    10.1 --- a/regression/tests/test-udp-echo.py	Mon Mar 31 18:20:33 2008 -0700
    10.2 +++ b/regression/tests/test-udp-echo.py	Tue Apr 01 16:30:08 2008 -0700
    10.3 @@ -4,38 +4,9 @@
    10.4  
    10.5  import os
    10.6  import shutil
    10.7 +import tracediff
    10.8  
    10.9 -def run(verbose, generate):
   10.10 +def run(verbose, generate, refDirName):
   10.11      """Execute a test."""
   10.12  
   10.13 -    testName = "udp-echo"
   10.14 -    repoName = "ns-3-ref-traces/"
   10.15 -    refDirName = testName + ".ref"
   10.16 -
   10.17 -    if not os.path.exists(repoName):
   10.18 -        print"No reference trace repository"
   10.19 -        return 1
   10.20 -
   10.21 -    if generate:
   10.22 -        if not os.path.exists(repoName + refDirName):
   10.23 -            print "creating new " + repoName + refDirName
   10.24 -            os.mkdir(repoName + refDirName)
   10.25 -
   10.26 -        os.system("./waf --cwd regression/" + repoName + refDirName +
   10.27 -            " --run " + testName + " >& /dev/null")
   10.28 -
   10.29 -        print "Remember to commit " + repoName + refDirName
   10.30 -        return 0
   10.31 -    else:
   10.32 -        if not os.path.exists(repoName + refDirName):
   10.33 -            print "Cannot locate reference traces"
   10.34 -            return 1
   10.35 -
   10.36 -        shutil.rmtree("traces");
   10.37 -        os.mkdir("traces")
   10.38 -        
   10.39 -        os.system("./waf --cwd regression/traces --run " +
   10.40 -          testName + " >& /dev/null")
   10.41 -        
   10.42 -        return os.system("diff -q traces " + repoName + refDirName +
   10.43 -         " >& /dev/null")
   10.44 +    return tracediff.run_test(verbose, generate, refDirName, "udp-echo")
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/regression/tracediff.py	Tue Apr 01 16:30:08 2008 -0700
    11.3 @@ -0,0 +1,50 @@
    11.4 +#! /usr/bin/env python
    11.5 +
    11.6 +"""Generic trace-comparison-type regression test."""
    11.7 +
    11.8 +import sys
    11.9 +import os
   11.10 +import shutil
   11.11 +
   11.12 +def run_test(verbose, generate, refDirName, testName):
   11.13 +    """Execute a test."""
   11.14 +
   11.15 +    repoName = "ns-3-ref-traces/"
   11.16 +    refDirName = testName + ".ref"
   11.17 +
   11.18 +    if not os.path.exists(repoName):
   11.19 +        print"No reference trace repository"
   11.20 +        return 1
   11.21 +
   11.22 +    if generate:
   11.23 +        if not os.path.exists(repoName + refDirName):
   11.24 +            print "creating new " + repoName + refDirName
   11.25 +            os.mkdir(repoName + refDirName)
   11.26 +
   11.27 +        try:
   11.28 +            os.system("./waf --cwd regression/" + repoName + refDirName +
   11.29 +                " --run " + testName + " > /dev/null 2>&1")
   11.30 +        except:
   11.31 +            sys.exit(1)
   11.32 +
   11.33 +        print "Remember to commit " + repoName + refDirName
   11.34 +        return 0
   11.35 +    else:
   11.36 +        if not os.path.exists(repoName + refDirName):
   11.37 +            print "Cannot locate reference traces"
   11.38 +            return 1
   11.39 +
   11.40 +        shutil.rmtree("traces");
   11.41 +        os.mkdir("traces")
   11.42 +
   11.43 +        os.system("./waf --cwd regression/traces --run " +
   11.44 +          testName + " > /dev/null 2>&1")
   11.45 +
   11.46 +        if verbose:
   11.47 +            diffCmd = "diff traces " + repoName + refDirName + " | head"
   11.48 +        else:
   11.49 +            diffCmd = "diff traces " + repoName + refDirName + \
   11.50 +                " > /dev/null 2>&1"
   11.51 +
   11.52 +        return os.system(diffCmd)
   11.53 +