The Tahoe-LAFS decentralized secure filesystem.
Go to file
robk-tahoe 0a2f32649f fuse/tests: slew of changes to fuse 'runtests'
This patch makes a significant number of changes to the fuse 'runtests' script
which stem from my efforts to integrate the third fuse implementation into this
framework.  Perhaps not all were necessary to that end, and I beg nejucomo's
forebearance if I got too carried away.

- cleaned up the blank lines; imho blank lines should be empty

- made the unmount command switch based on platform, since macfuse just uses
'umount' not the 'fusermount' command (which doesn't exist)

- made the expected working dir for runtests the contrib/fuse dir, not the 
top-level tahoe source tree - see also discussion of --path-to-tahoe below

- significantly reworked the ImplProcManager class.  rather than subclassing
for each fuse implementation to be tested, the new version is based on 
instantiating objects and providing relevant config info to the constructor.
this was motivated by a desire to eliminate the duplication of similar but
subtly different code between instances, framed by consideration of increasing
the number of platforms and implementations involved. each implementation to
test is thus reduced to the pertinent import and an entry in the 
'implementations' table defining how to handle that implementation. this also
provides a way to specify which sets of tests to run for each implementation,
more on that below.


- significantly reworked the command line options parsing, using twisted.usage;

what used to be a single optional argument is now represented by the 
--test-type option which allows one to choose between running unittests, the
system tests, or both.

the --implementations option allows for a specific (comma-separated) list of
implemenations to be tested, or the default 'all'

the --tests option allows for a specific (comma-separated) list of tests sets
to be run, or the default 'all'.  note that only the intersection of tests
requested on the command line and tests relevant to each implementation will
be run. see below for more on tests sets.

the --path-to-tahoe open allows for the path to the 'tahoe' executable to be
specified. it defaults to '../../bin/tahoe' which is the location of the tahoe
script in the source tree relative to the contrib/fuse dir by default.

the --tmp-dir option controls where temporary directories (and hence 
mountpoints) are created during the test.  this defaults to /tmp - a change
from the previous behaviour of using the system default dir for calls to 
tempfile.mkdtemp(), a behaviour which can be obtained by providing an empty
value, e.g. "--tmp-dir=" 

the --debug-wait flag causes the test runner to pause waiting upon user
input at various stages through the testing, which facilitates debugging e.g.
by allowing the user to open a browser and explore or modify the contents of
the ephemeral grid after it has been instantiated but before tests are run,
or make environmental adjustments before actually triggering fuse mounts etc.
note that the webapi url for the first client node is printed out upon its
startup to facilitate this sort of debugging also.


- the default tmp dir was changed, and made configurable. previously the 
default behaviour of tempfile.mkdtemp() was used.  it turns out that, at least
on the mac, that led to temporary directories to be created in a location
which ultimately led to mountpoint paths longer than could be handled by 
macfuse - specifically mounted filesystems could not be unmounted and would
'leak'. by changing the default location to be rooted at /tmp this leads to
mountpoint paths short enough to be supported without problems.

- tests are now grouped into 'sets' by method name prefix.  all the existing
tests have been moved into the 'read' set, i.e. with method names starting
'test_read_'. this is intended to facilitate the fact that some implementations
are read-only, and some support write, so the applicability of tests will vary
by implementation. the 'implementations' table, which governs the configuration
of the ImplProcManager responsible for a given implementation, provides a list
of 'test' (i.e test set names) which are applicable to that implementation.
note no 'write' tests yet exist, this is merely laying the groundwork.

- the 'expected output' of the tahoe command, which is checked for 'surprising'
output by regex match, can be confused by spurious output from libraries.
specfically, testing on the mac produced a warning message about zope interface
resolution various multiple eggs.  the 'check_tahoe_output()' function now has
a list of 'ignorable_lines' (each a regex) which will be discarded before the
remainder of the output of the tahoe script is matched against expectation.

- cleaned up a typo, and a few spurious imports caught by pyflakes
2008-09-24 11:36:01 -07:00
bin bin/tahoe: reflow error messages 2008-09-11 18:02:25 -07:00
contrib fuse/tests: slew of changes to fuse 'runtests' 2008-09-24 11:36:01 -07:00
docs CLI: reconcile webopen changes 2008-09-24 08:20:02 -07:00
mac macapp: changed to remove 'Tahoe' from .app name 2008-06-10 17:31:45 -07:00
misc misc/make-canary-files.py: tool to create 'canary files', explained in the docstring 2008-09-24 17:47:16 -07:00
src/allmydata CLI: rework webopen, and moreover its tests w.r.t. path handling 2008-09-24 09:45:23 -07:00
twisted/plugins change #!/usr/bin/python to #!/usr/bin/env python 2007-03-29 14:01:28 -07:00
windows windows/Makefile: fix dependencies: windows-installer must cause windows-exe to run 2008-09-11 22:21:51 -07:00
_auto_deps.py use foolscap's new app_versions API, require foolscap-0.3.1 2008-09-20 11:38:53 -07:00
.darcs-boringfile .darcs-boringfile ignore tahoe-deps and tahoe-deps.tar.gz 2008-09-17 12:59:38 -07:00
COPYING.GPL new licences, move details from README to doc/install-details.html 2008-01-04 12:27:42 -07:00
COPYING.TGPPL.html more introductory doc cleanup 2008-01-04 18:09:19 -07:00
CREDITS CREDITS: thanks to Chris Galvan 2008-08-27 11:39:50 -07:00
ez_setup.py setup: require setuptools >= v0.6c8 2008-03-26 12:13:02 -07:00
Makefile setup.py,Makefile: move the 'chmod +x bin/tahoe' into setup.py 2008-09-17 16:07:56 -07:00
NEWS NEWS: finish editing for the upcoming 1.3.0 release 2008-09-19 12:30:53 -07:00
README setup: update README to point to known_issues.txt 2008-07-21 18:02:29 -07:00
relnotes.txt relnotes.txt: update and edit for the 1.2.0 release! 2008-07-21 18:04:03 -07:00
setup.cfg Makefile,docs: tahoe-deps.tar.gz now lives in separate source/deps/ directory on http://allmydata.org 2008-09-17 13:44:52 -07:00
setup.py setup: fix site-dirs to find system installed twisted on mac. 2008-09-24 10:42:55 -07:00
Tahoe.home rename bin/allmydata-tahoe to bin/tahoe. Closes . 2007-10-11 03:38:24 -07:00

Welcome to the Tahoe project [1], a secure, decentralized,
fault-tolerant filesystem.  All of the source code is available under
a Free Software, Open Source licence (or two).

Please see docs/about.html for an introduction, docs/install.html for
install instructions, docs/running.html for usage instructions.

Finally, see docs/known_issues.txt for things that you need to know
about if you are relying on Tahoe to store your valuable data.

[1] http://allmydata.org