summaryrefslogtreecommitdiff
path: root/valgrind-audit.py.in
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2011-08-19 01:35:19 -0400
committerEric S. Raymond <esr@thyrsus.com>2011-08-19 01:35:19 -0400
commit52e6637cc94261b2bc32c81e493e8b0b0742756f (patch)
tree881b4409f35901630ea9e7448e76ed7b3088449f /valgrind-audit.py.in
parent6c19639b6f8c0e465ae1df5138f0948f1fe8d839 (diff)
downloadgpsd-52e6637cc94261b2bc32c81e493e8b0b0742756f.tar.gz
Update the release procedure. Re-enable valgrind.
Diffstat (limited to 'valgrind-audit.py.in')
-rw-r--r--valgrind-audit.py.in101
1 files changed, 101 insertions, 0 deletions
diff --git a/valgrind-audit.py.in b/valgrind-audit.py.in
new file mode 100644
index 00000000..3f76e813
--- /dev/null
+++ b/valgrind-audit.py.in
@@ -0,0 +1,101 @@
+#!@PYTHON@
+#
+# This is a valgrind torture test for the gpsd daemon.
+# It's not really expected to spot anything as long as we aren't using
+# malloc and friends in the daemon.
+#
+# This file is Copyright (c) 2010 by the GPSD project
+# BSD terms apply: see the file COPYING in the distribution root for details.
+#
+import sys, gps.fake
+
+debuglevel=1
+
+invocation="valgrind --tool=memcheck --gen-suppressions=yes --leak-check=yes --suppressions=valgrind-suppressions"
+test = gps.fake.TestSession(prefix=invocation, options="-D %d" % debuglevel)
+test.progress = sys.stderr.write
+
+try:
+ test.spawn()
+ print "\n*** Test #1: Normal single-client-session behavior."
+ print "**** Add a GPS.\n"
+ gps1 = test.gps_add("test/daemon/bu303-moving.log")
+
+ print "\n**** Add and remove a client.\n"
+ c1 = test.client_add("w\n")
+ test.gather(3)
+ test.client_remove(c1)
+
+ print "\n**** Remove the GPS."
+ test.gps_remove(gps1)
+ print "*** Test #1 complete.\n"
+ test.wait(3)
+
+ ######################################################################
+
+ print "\n*** Test #2: Successive non-overlapping client sessions."
+ print "**** Add a GPS.\n"
+ gps1 = test.gps_add("test/daemon/bu303-climbing.log")
+
+ print "\n**** Add and remove first client.\n"
+ c1 = test.client_add("w\n")
+ test.gather(3)
+ test.client_remove(c1)
+ test.wait(3)
+
+ print "\n**** Add and remove second client.\n"
+ c2 = test.client_add("w\n")
+ test.gather(3)
+ test.client_remove(c2)
+ test.wait(3)
+
+ print "\n**** Remove the GPS."
+ test.gps_remove(gps1)
+ print "*** Test #2 complete.\n"
+ test.wait(3)
+
+ ######################################################################
+
+ print "\n*** Test #3: Overlapping client sessions."
+ print "**** Add a GPS.\n"
+ gps1 = test.gps_add("test/daemon/bu303-climbing.log")
+
+ print "\n**** Add first client.\n"
+ c1 = test.client_add("w\n")
+ test.gather(2)
+ print "\n**** Add second client.\n"
+ c2 = test.client_add("w\n")
+ test.gather(3)
+ print "\n**** Remove first client.\n"
+ test.client_remove(c1)
+ test.gather(2)
+ print "\n**** Remove second client.\n"
+ test.client_remove(c2)
+
+ print "\n**** Remove the GPS."
+ test.gps_remove(gps1)
+ print "*** Test #3 complete.\n"
+
+ ######################################################################
+
+ print "\n*** Test #4: GPS removed while client still active."
+ print "**** Add a GPS.\n"
+ gps1 = test.gps_add("test/daemon/bu303-moving.log")
+
+ print "\n**** Add a client.\n"
+ c1 = test.client_add("w\n")
+ test.gather(3)
+ print "\n**** Remove the GPS."
+ test.gps_remove(gps1)
+ test.wait(3)
+ print "\n**** Remove the client.\n"
+ test.client_remove(c1)
+
+ print "*** Test #4 complete.\n"
+finally:
+ test.cleanup();
+
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# mode:python
+# End: