]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
start work on 'check-grid' target, for use in an automated prodnet tester. Just a...
authorBrian Warner <warner@allmydata.com>
Wed, 18 Jun 2008 19:57:47 +0000 (12:57 -0700)
committerBrian Warner <warner@allmydata.com>
Wed, 18 Jun 2008 19:57:47 +0000 (12:57 -0700)
Makefile
src/allmydata/test/check_grid.py [new file with mode: 0644]

index e2b68ada9cb63b4455a61a92383a91c304b970d9..5dac3542e35430f38e158476f589ad7a40cf2e6b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -253,6 +253,18 @@ check-speed: .built
        $(PYTHON) src/allmydata/test/check_speed.py $(TESTCLIENTDIR)
        $(PYTHON) bin/tahoe stop $(TESTCLIENTDIR)
 
+# This target also uses a pre-established client node, along with a long-term
+# directory that contains some well-known files. See the docstring in
+# src/allmydata/test/check_grid.py to see how to set this up.
+check-grid: .built
+       if [ -z '$(TESTCLIENTDIR)' ]; then exit 1; fi
+       @echo "stopping any leftover client code"
+       -$(PYTHON) bin/tahoe stop $(TESTCLIENTDIR)
+       $(PYTHON) bin/tahoe start $(TESTCLIENTDIR)
+       sleep 5
+       $(PYTHON) src/allmydata/test/check_grid.py $(TESTCLIENTDIR)
+       $(PYTHON) bin/tahoe stop $(TESTCLIENTDIR)
+
 # 'make repl' is a simple-to-type command to get a Python interpreter loop
 # from which you can type 'import allmydata'
 repl:
diff --git a/src/allmydata/test/check_grid.py b/src/allmydata/test/check_grid.py
new file mode 100644 (file)
index 0000000..2fb4298
--- /dev/null
@@ -0,0 +1,52 @@
+#! /usr/bin/python
+
+"""
+Test an existing Tahoe grid, both to see if the grid is still running and to
+see if the client is still compatible with it. This script is suitable for
+running from a periodic monitoring script, perhaps by an hourly cronjob.
+
+This script uses a pre-established client node (configured to connect to the
+grid being tested) and a pre-established directory (stored as the 'testgrid:'
+alias in that client node's aliases file). It then performs a number of
+uploads and downloads to exercise compatibility in various directions (new
+client vs old data).
+
+This script expects that the client node will be running before the script
+starts.
+
+To set up the client node, do the following:
+
+  tahoe create-client DIR
+  touch DIR/no_storage
+  populate DIR/introducer.furl
+  tahoe start DIR
+  tahoe -d DIR add-alias testgrid `tahoe -d DIR mkdir`
+  pick a 10kB-ish test file, compute its md5sum
+  tahoe -d DIR put FILE testgrid:old.MD5SUM
+  tahoe -d DIR put FILE testgrid:recent.MD5SUM
+  tahoe -d DIR put FILE testgrid:recentdir/recent.MD5SUM
+  echo "" | tahoe -d DIR put --mutable testgrid:log
+  echo "" | tahoe -d DIR put --mutable testgrid:recentlog
+
+This script will perform the following steps (the kind of compatibility that
+is being tested is in [brackets]):
+
+ read old.* and check the md5sums [confirm that new code can read old files]
+ read all recent.* files and check md5sums [read recent files]
+ delete all recent.* files and verify they're gone [modify an old directory]
+ read recentdir/recent.* files and check [read recent directory]
+ delete recentdir/recent.* and verify [modify recent directory]
+ delete recentdir and verify (keep the directory from growing unboundedly)
+ mkdir recentdir
+ upload random 10kB file to recentdir/recent.MD5SUM (prepare for next time)
+ upload random 10kB file to recent.MD5SUM [new code can upload to old servers]
+ append one-line timestamp to log [read/write old mutable files]
+ append one-line timestamp to recentlog [read/write recent mutable files]
+ delete recentlog
+ upload small header to new mutable recentlog [create mutable files]
+
+This script will also keep track of speeds and latencies and will write them
+in a machine-readable logfile.
+
+"""
+