[tor-commits] [compass/master] Added some testing scripts

karsten at torproject.org karsten at torproject.org
Mon Jan 7 07:09:40 UTC 2013


commit 70e369c263be79d87f6d752fc1b46ae5f70393c5
Author: Chris Wacek <cwacek at cs.georgetown.edu>
Date:   Fri Dec 21 15:58:38 2012 -0500

    Added some testing scripts
---
 testing/README   |   13 +++++++++
 testing/check.py |   73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 testing/test.sh  |   41 ++++++++++++++++++++++++++++++
 3 files changed, 127 insertions(+), 0 deletions(-)

diff --git a/testing/README b/testing/README
new file mode 100644
index 0000000..9457b1e
--- /dev/null
+++ b/testing/README
@@ -0,0 +1,13 @@
+
+These are a set of scripts designed to makes sure that any 
+changes I have made don't change the behavior of the original 
+compass.py. test.sh will run a series of command line switches
+at compass.py, and save the output in a series of named test 
+files.
+check.py will take two test names and compare the output
+from those tests to see if they match.
+
+
+Note: Sometimes a test will fail even though the output is correct
+because the sorting works differently in my revised version and
+elements with the same value don't always occur in the same order. 
diff --git a/testing/check.py b/testing/check.py
new file mode 100755
index 0000000..c15583c
--- /dev/null
+++ b/testing/check.py
@@ -0,0 +1,73 @@
+#!/usr/bin/python
+
+import os
+import sys
+
+def colored(s,col):
+  if col == "red":
+    return "\033[31m" + s + "\033[0m"
+  elif col == "green":
+    return "\033[36m" + s + "\033[0m"
+  else:
+    return s
+
+def usage():
+  sys.stderr.write("Check and see if output matches between two sets of test files\n")
+  sys.stderr.write("Usage: check.py <testfile_dir> <test_label_1> <test_label_2> \n")
+  sys.exit(-1)
+  
+
+def run():
+
+  if len(sys.argv) < 3:
+    usage()
+
+  filedir = sys.argv[1]
+  a = sys.argv[2]
+  b = sys.argv[3]
+  a_files = {}
+  b_files = {}
+  max_test = 0
+
+
+  files = os.listdir(filedir)
+
+  for f in files:
+    if f.split(".")[0] == a:
+      a_files[int( f.split(".")[1] )] = f 
+    if f.split(".")[0] == b:
+      b_files[int(f.split(".")[1])] = f 
+
+
+    if int(f.split(".")[1]) > max_test:
+      max_test = int(f.split('.')[1])
+
+  for i in xrange(1,max_test):
+    sys.stdout.write("Testing '{0}.{2}' against '{1}.{2}': ".format(a,b,i))
+
+    try: 
+      a_in = open("{0}/{1}".format(filedir,a_files[i])).readlines()
+      b_in = open("{0}/{1}".format(filedir,b_files[i])).readlines()
+    except IOError,e:
+      sys.stdout.write("{0} [{1}]\n".format(colored("Fail","red"),e)) 
+    else:
+      i = 0
+      fail = False
+      
+      for comp_a,comp_b in zip(a_in,b_in):
+        i += 1
+        for field_a, field_b in zip(comp_a.split(),comp_b.split()):
+          if field_a.lower() != field_b.lower():
+            sys.stdout.write("{0} [{1}]\n".format(colored("Fail","red"),"Line {0} doesn't match.".format(i)))
+            fail = True
+            break
+
+        if fail:
+          break
+
+      if not fail:
+        sys.stdout.write("{0}\n".format(colored("Pass","green")))
+
+
+if __name__ == "__main__":
+  run()
diff --git a/testing/test.sh b/testing/test.sh
new file mode 100755
index 0000000..5aa9284
--- /dev/null
+++ b/testing/test.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+# This is intended to run a bunch of options against compass.py and dump
+# the output to a file.
+
+if [[ $# -lt 3 ]]; then
+  echo "Usage: test.sh <compass_py_loc> <scratch_dir> <test_name>"
+  exit 1
+fi
+
+scratch="$2"
+[[ -d $scratch ]] || echo "'$scratch' is not a directory" || exit 1
+[[ -f $1 ]] || echo "'$1' is not a file" || exit 1
+
+name="$3"
+
+i=1
+
+bin="python $1"
+declare -a testcases=( 
+                      '' 
+                      '-i'
+                      '-e'
+                      '-a 3320'
+                      '-a 3320 -i -e -l'
+                      '-c US'
+                      '-c US -g'
+                      '-c US -A'
+                      '-g -e'
+                      '--almost-fast-exits-only'
+                      '--fast-exits-only'
+                      '-l'
+                      '--almost-fast-exits-only -c DE'
+                      '-t 100 -s'
+                     )
+ 
+for i in $(seq 0 "${#testcases[@]}"); do 
+  $bin ${testcases[$i]} > "$scratch/$name.$i"
+done
+
+





More information about the tor-commits mailing list