Brian Warner [Wed, 24 Feb 2010 04:46:37 +0000 (23:46 -0500)]
test_util.py: improve coverage of util.time_format
Brian Warner [Wed, 24 Feb 2010 04:38:13 +0000 (23:38 -0500)]
docs/performance.txt: split out CPU from network, expand on mutable costs
Brian Warner [Tue, 23 Feb 2010 21:04:02 +0000 (16:04 -0500)]
docs/FTP: the Twisted patch (t3462) has landed, will be in the next release
Kevan Carstensen [Sat, 20 Feb 2010 21:07:13 +0000 (13:07 -0800)]
Change OphandleTable to use a deterministic clock, so we can test it
To test the changes for #577, we need a deterministic way to simulate
the passage of long periods of time. twisted.internet.task.Clock seems,
from my Googling, to be the way to go for this functionality. I changed
a few things so that OphandleTable would use twisted.internet.task.Clock
when testing:
* WebishServer.__init___ now takes an optional 'clock' parameter,
* which it passes to the root.Root instance it creates.
* root.Root.__init__ now takes an optional 'clock' parameter, which it
passes to the OphandleTable.__init__ method.
* OphandleTable.__init__ now takes an optional 'clock' parameter. If
it is provided, and it isn't None, its callLater method will be used
to schedule ophandle expirations (as opposed to using
reactor.callLater, which is what OphandleTable does normally).
* The WebMixin object in test_web.py now sets a self.clock parameter,
which is a twisted.internet.task.Clock that it feeds to the
WebishServer it creates.
Tests using the WebMixin can control the passage of time in
OphandleTable by accessing self.clock.
Kevan Carstensen [Sun, 21 Feb 2010 01:04:55 +0000 (17:04 -0800)]
Add tests for the ophandle expiration behavior in #577
Kevan Carstensen [Sun, 21 Feb 2010 01:07:16 +0000 (17:07 -0800)]
Update docs/frontends/webapi.txt to reflect the new expiration times in #577
Kevan Carstensen [Sun, 21 Feb 2010 01:05:12 +0000 (17:05 -0800)]
Increase ophandle expiration times, per #577
david-sarah [Sat, 6 Feb 2010 01:38:55 +0000 (17:38 -0800)]
More cleanups to test_cli using new utilities for reading and writing files.
david-sarah [Sat, 6 Feb 2010 01:37:27 +0000 (17:37 -0800)]
Fix race conditions and missing callback in allmydata.test.test_cli.Cp.test_copy_using_filecap, add utilities for one-liner reading and writing of files, and fix cases in test_cli where files were not being closed after writing.
Zooko O'Whielacronx [Mon, 15 Feb 2010 05:08:44 +0000 (21:08 -0800)]
setup: comment-out the dependency on pycrypto, see #953
Kevan Carstensen [Fri, 12 Feb 2010 06:21:37 +0000 (22:21 -0800)]
Add tests for #939
Kevan Carstensen [Thu, 11 Feb 2010 02:43:18 +0000 (18:43 -0800)]
Alter CLI utilities to handle nonexistent aliases better
Peter Secor [Sat, 6 Feb 2010 05:43:14 +0000 (21:43 -0800)]
adding pycrypto to the auto dependencies
Peter Secor [Sat, 6 Feb 2010 16:53:20 +0000 (08:53 -0800)]
docs running.html - "tahoe run ." does not work with the current installation, replaced with "tahoe start ."
Brian Warner [Mon, 8 Feb 2010 00:20:10 +0000 (16:20 -0800)]
web/storage.py: display total-seen on the last-complete-cycle line. For #940.
Brian Warner [Thu, 28 Jan 2010 17:39:04 +0000 (09:39 -0800)]
code coverage: replace figleaf with coverage.py, should work on py2.6 now.
It still lacks the right HTML report (the builtin report is very pretty, but
lacks the "lines uncovered" numbers that I want), and the half-finished
delta-from-last-run measurements.
david-sarah [Tue, 2 Feb 2010 06:12:56 +0000 (22:12 -0800)]
More comprehensive changes and ticket references for NEWS
Zooko O'Whielacronx [Tue, 2 Feb 2010 06:58:52 +0000 (22:58 -0800)]
docs: install.html: link into Python 2.5.5 download page
Zooko O'Whielacronx [Tue, 2 Feb 2010 06:11:25 +0000 (22:11 -0800)]
TAG allmydata-tahoe-1.6.0
Zooko O'Whielacronx [Tue, 2 Feb 2010 05:38:42 +0000 (21:38 -0800)]
docs: install.html: recommend Python 2.5 (because I can build extension modules for it with mingw), architecture.txt: point out that our Proof of Retrievability feature is client-side-only
Brian Warner [Tue, 2 Feb 2010 05:53:04 +0000 (21:53 -0800)]
architecture.txt: remove trailing whitespace, wrap lines: no content changes
Zooko O'Whielacronx [Tue, 2 Feb 2010 05:48:32 +0000 (21:48 -0800)]
docs: a couple of small edits to release notes (thanks Peter)
Zooko O'Whielacronx [Tue, 2 Feb 2010 05:38:31 +0000 (21:38 -0800)]
docs: CREDITS: where due
Zooko O'Whielacronx [Tue, 2 Feb 2010 05:27:50 +0000 (21:27 -0800)]
docs: a few small edits to performance.txt and README
Kevan Carstensen [Tue, 2 Feb 2010 00:59:14 +0000 (16:59 -0800)]
Fill in 'docs/performance.txt' with some performance information
Zooko O'Whielacronx [Tue, 2 Feb 2010 04:51:17 +0000 (20:51 -0800)]
docs: a few edits to architecture.txt, most significantly highlighting "future work" to avoid confusing it with the current version, and adding a "future work" about a random-sampling Proof of Retrievability verifier
Zooko O'Whielacronx [Tue, 2 Feb 2010 04:32:22 +0000 (20:32 -0800)]
docs: a few edits and updates to relnotes.txt, relnotes-short.txt, and NEWS in preparation for v1.6.0
david-sarah [Tue, 2 Feb 2010 01:52:38 +0000 (17:52 -0800)]
Document leakage of cap URLs via phishing filters in known_issues.txt
Zooko O'Whielacronx [Mon, 1 Feb 2010 18:18:09 +0000 (10:18 -0800)]
docs: updates to relnotes.txt, NEWS, architecture, historical_known_issues, install.html, etc.
Zooko O'Whielacronx [Mon, 1 Feb 2010 06:16:10 +0000 (22:16 -0800)]
immutable: downloader accepts notifications of buckets even if those notifications arrive after he has begun downloading shares.
This can be useful if one of the ones that he has already begun downloading fails. See #287 for discussion. This fixes part of #287 which part was a regression caused by #928, namely this fixes fail-over in case a share is corrupted (or the server returns an error or disconnects). This does not fix the related issue mentioned in #287 if a server hangs and doesn't reply to requests for blocks.
Zooko O'Whielacronx [Mon, 1 Feb 2010 05:23:23 +0000 (21:23 -0800)]
tests: don't require tahoe to run with no noise if we are using an old twisted that emits DeprecationWarnings
david-sarah [Wed, 27 Jan 2010 01:55:29 +0000 (17:55 -0800)]
Use if instead of assert to check for twisted ftp patch
Zooko O'Whielacronx [Mon, 1 Feb 2010 04:11:44 +0000 (20:11 -0800)]
tests: stop being surprised that Nevow no longer prints out warnings when it tries to find its static files
Unless we are using a sufficiently new version of Nevow, in which case if it prints out warnings then this is a hard test failure. :-)
david-sarah [Mon, 1 Feb 2010 00:44:29 +0000 (16:44 -0800)]
cli: suppress DeprecationWarnings emitted from importing nevow and twisted. Fixes #859
david-sarah [Sat, 30 Jan 2010 06:39:08 +0000 (22:39 -0800)]
Improvements to test_unknownnode to cover invalid cap URIs with known prefixes
david-sarah [Fri, 29 Jan 2010 20:17:42 +0000 (12:17 -0800)]
Fix invalid trailing commas in JSON example
david-sarah [Sat, 30 Jan 2010 06:43:03 +0000 (22:43 -0800)]
Improvements to test_hung_server, and fix for status updates in download.py
Zooko O'Whielacronx [Fri, 29 Jan 2010 18:42:37 +0000 (10:42 -0800)]
immutable: fix bug in tests, change line-endings to unix style, add comment
david-sarah [Fri, 29 Jan 2010 12:38:45 +0000 (04:38 -0800)]
New tests for #928
Zooko O'Whielacronx [Wed, 27 Jan 2010 23:34:17 +0000 (15:34 -0800)]
immutable: download from the first servers which provide at least K buckets instead of waiting for all servers to reply
This should put an end to the phenomenon I've been seeing that a single hung server can cause all downloads on a grid to hang. Also it should speed up all downloads by (a) not-waiting for responses to queries that it doesn't need, and (b) downloading shares from the servers which answered the initial query the fastest.
Also, do not count how many buckets you've gotten when deciding whether the download has enough shares or not -- instead count how many buckets to *unique* shares that you've gotten. This appears to improve a slightly weird behavior in the current download code in which receiving >= K different buckets all to the same sharenumber would make it think it had enough to download the file when in fact it hadn't.
This patch needs tests before it is actually ready for trunk.
david-sarah [Fri, 29 Jan 2010 03:52:10 +0000 (19:52 -0800)]
Eliminate 'foo if test else bar' syntax that isn't supported by Python 2.4
david-sarah [Fri, 29 Jan 2010 03:27:42 +0000 (19:27 -0800)]
Fix example JSON in webapi.txt that cannot occur in practice
david-sarah [Fri, 29 Jan 2010 03:14:24 +0000 (19:14 -0800)]
Add mutable field to t=json output for unknown nodes, when mutability is known
david-sarah [Thu, 28 Jan 2010 22:08:00 +0000 (14:08 -0800)]
Show -IMM and -RO suffixes for types of immutable and read-only unknown nodes in directory listings
david-sarah [Thu, 28 Jan 2010 20:24:56 +0000 (12:24 -0800)]
Fix inaccurate comment in test_mutant_dirnodes_are_omitted
Zooko O'Whielacronx [Thu, 28 Jan 2010 17:12:57 +0000 (09:12 -0800)]
docs: update relnotes.txt for Tahoe-LAFS v1.6
david-sarah [Wed, 27 Jan 2010 23:06:42 +0000 (15:06 -0800)]
Address comments by Kevan on 833 and add test for stripping spaces
david-sarah [Wed, 27 Jan 2010 07:03:09 +0000 (23:03 -0800)]
Miscellaneous documentation, test, and code formatting tweaks.
david-sarah [Wed, 27 Jan 2010 06:44:30 +0000 (22:44 -0800)]
Prevent mutable objects from being retrieved from an immutable directory, and associated forward-compatibility improvements.
Brian Warner [Wed, 27 Jan 2010 22:40:40 +0000 (14:40 -0800)]
test_runner: cleanup, refactor common code into a non-executable method
Having both test_node() and test_client() (one of which calls the other) felt
confusing to me, so I changed it to have test_node(), test_client(), and a
common do_create() helper method.
Brian Warner [Wed, 27 Jan 2010 22:37:58 +0000 (14:37 -0800)]
scripts/runner.py: simplify David-Sarah's clever grouped-commands usage trick
Brian Warner [Wed, 27 Jan 2010 22:35:17 +0000 (14:35 -0800)]
tahoe backup: skip all symlinks, with warning. Fixes #850, addresses #641.
Brian Warner [Wed, 27 Jan 2010 22:22:09 +0000 (14:22 -0800)]
NEWS: update with all recent user-visible changes
Brian Warner [Wed, 27 Jan 2010 20:10:44 +0000 (12:10 -0800)]
"tahoe backup": fix --exclude-vcs docs to include Git
Brian Warner [Wed, 27 Jan 2010 20:09:56 +0000 (12:09 -0800)]
docs: fix references to --no-storage, explanation of [storage] section
Zooko O'Whielacronx [Tue, 26 Jan 2010 17:00:21 +0000 (09:00 -0800)]
docs: further CREDITS level-ups for Nils, Kevan, David-Sarah
david-sarah [Sun, 24 Jan 2010 03:00:20 +0000 (19:00 -0800)]
Patch to accept t=set-children as well as t=set_children
david-sarah [Tue, 26 Jan 2010 06:34:14 +0000 (22:34 -0800)]
Fix boodlegrid use of set_children
Zooko O'Whielacronx [Tue, 26 Jan 2010 14:34:11 +0000 (06:34 -0800)]
ftpd: clearer error message if Twisted needs a patch (by Nils Durner)
Kevan Carstensen [Fri, 15 Jan 2010 20:45:00 +0000 (12:45 -0800)]
Add 'docs/performance.txt', which (for the moment) describes mutable file performance issues
Zooko O'Whielacronx [Tue, 26 Jan 2010 13:21:33 +0000 (05:21 -0800)]
docs: more CREDITS for François, Kevan, and David-Sarah
francois [Wed, 20 Jan 2010 09:42:49 +0000 (01:42 -0800)]
tahoe_backup.py: display warnings on errors instead of stopping the whole backup. Fix #729.
This patch displays a warning to the user in two cases:
1. When special files like symlinks, fifos, devices, etc. are found in the
local source.
2. If files or directories are not readables by the user running the 'tahoe
backup' command.
In verbose mode, the number of skipped files and directories is printed at the
end of the backup.
Exit status returned by 'tahoe backup':
- 0 everything went fine
- 1 the backup failed
- 2 files were skipped during the backup
david-sarah [Sun, 24 Jan 2010 22:06:29 +0000 (14:06 -0800)]
Warn about test failures due to setting FLOG* env vars
david-sarah [Sat, 16 Jan 2010 20:45:56 +0000 (12:45 -0800)]
Message saying that we couldn't find bin/tahoe should say where we looked
david-sarah [Tue, 12 Jan 2010 04:44:09 +0000 (20:44 -0800)]
Change running.html to describe 'tahoe run'
Zooko O'Whielacronx [Tue, 26 Jan 2010 04:45:59 +0000 (20:45 -0800)]
cli: merge the better version of David-Sarah's split-usage-and-help patch with the earlier version that I mistakenly committed
david-sarah [Tue, 12 Jan 2010 04:39:35 +0000 (20:39 -0800)]
Split tahoe --help options into groups.
Zooko O'Whielacronx [Tue, 26 Jan 2010 04:39:21 +0000 (20:39 -0800)]
cli: split usage strings into groups (patch by David-Sarah Hopwood)
david-sarah [Sat, 16 Jan 2010 05:20:55 +0000 (21:20 -0800)]
Add create-node CLI command, and make create-client equivalent to create-node --no-storage (fixes #760)
david-sarah [Sun, 24 Jan 2010 22:43:25 +0000 (14:43 -0800)]
Remove replace= parameter to mkdir-immutable and mkdir-with-children
francois [Sat, 9 Jan 2010 12:30:10 +0000 (04:30 -0800)]
contrib/fuse/runtests.py: Fix #888, configure settings in tahoe.cfg and don't treat warnings as failure
Fix a few bitrotten pieces in the FUSE test script. It now configures tahoe
node settings by editing tahoe.cfg which is the new supported method.
It alos tolerate warnings issued by the mount command, the cause of these
warnings is the same as in #876 (contrib/fuse/runtests.py doesn't tolerate
deprecations warnings).
Brian Warner [Thu, 21 Jan 2010 06:50:52 +0000 (22:50 -0800)]
Fix webapi t=mkdir with multpart/form-data, as on the Welcome page. Closes #919.
Brian Warner [Fri, 15 Jan 2010 06:42:20 +0000 (22:42 -0800)]
tahoe_add_alias.py: minor refactoring
Brian Warner [Fri, 15 Jan 2010 06:27:13 +0000 (22:27 -0800)]
test_dirnode.py: reduce scope of a Client instance, suggested by Kevan.
Brian Warner [Fri, 15 Jan 2010 01:46:32 +0000 (17:46 -0800)]
test_provisioning: STAN is not always a list. Fix by David-Sarah Hopwood.
Brian Warner [Thu, 14 Jan 2010 22:28:04 +0000 (14:28 -0800)]
web/directory.py mkdir-immutable: hush pyflakes, add TODO for #903 behavior
Brian Warner [Thu, 14 Jan 2010 22:17:19 +0000 (14:17 -0800)]
hush pyflakes-0.4.0 warnings: slightly less-trivial fixes. Closes #900.
This includes one fix (in test_web) which was testing the wrong thing.
Brian Warner [Thu, 14 Jan 2010 22:15:29 +0000 (14:15 -0800)]
hush pyflakes-0.4.0 warnings: remove trivial unused variables. For #900.
Brian Warner [Thu, 14 Jan 2010 21:02:46 +0000 (13:02 -0800)]
tahoe add-alias/create-alias: don't corrupt non-newline-terminated alias
file. Closes #741.
Brian Warner [Thu, 14 Jan 2010 20:11:19 +0000 (12:11 -0800)]
change docs and --help to use "grid" instead of "virtual drive": closes #892.
Thanks to David-Sarah Hopwood for the patch.
Brian Warner [Thu, 14 Jan 2010 19:40:52 +0000 (11:40 -0800)]
backupdb.txt: fix ST_CTIME reference
Brian Warner [Wed, 13 Jan 2010 00:42:26 +0000 (16:42 -0800)]
client.py: fix/update comments on KeyGenerator
Brian Warner [Tue, 12 Jan 2010 01:33:43 +0000 (17:33 -0800)]
Clean up log.err calls, for one of the issues in #889.
allmydata.util.log.err() either takes a Failure as the first positional
argument, or takes no positional arguments and must be invoked in an
exception handler. Fixed its signature to match both foolscap.logging.log.err
and twisted.python.log.err . Included a brief unit test.
Brian Warner [Tue, 12 Jan 2010 00:07:23 +0000 (16:07 -0800)]
tidy up DeadReferenceError handling, ignore them in add_lease calls
Stop checking separately for ConnectionDone/ConnectionLost, since those have
been folded into DeadReferenceError since foolscap-0.3.1 . Write
rrefutil.trap_deadref() in terms of rrefutil.trap_and_discard() to improve
code coverage.
Brian Warner [Mon, 11 Jan 2010 19:01:32 +0000 (11:01 -0800)]
NEWS: improve "tahoe backup" notes, mention first-backup-after-upgrade duration
Thanks to Francois Deppierraz for the suggestion.
Brian Warner [Sun, 10 Jan 2010 20:35:52 +0000 (12:35 -0800)]
test_repairer: add (commented-out) test_each_byte, to see exactly what the
Verifier misses
The results (described in #819) match our expectations: it misses corruption
in unused share fields and in most container fields (which are only visible
to the storage server, not the client). 1265 bytes of a 2753 byte
share (hosting a 56-byte file with an artifically small segment size) are
unused, mostly in the unused tail of the overallocated UEB space (765 bytes),
and the allocated-but-unwritten plaintext_hash_tree (480 bytes).
Zooko O'Whielacronx [Sun, 10 Jan 2010 20:37:21 +0000 (12:37 -0800)]
repairer: fix some wrong offsets in the randomized verifier tests, debugged by Brian
fixes #819
Brian Warner [Sun, 10 Jan 2010 08:46:19 +0000 (00:46 -0800)]
test_repairer: fix colliding basedir names, which caused test inconsistencies
Zooko O'Whielacronx [Sun, 10 Jan 2010 01:36:19 +0000 (17:36 -0800)]
repairer: add deterministic test for #819, mark as TODO
francois [Sat, 9 Jan 2010 17:59:46 +0000 (09:59 -0800)]
contrib/fuse/runtests.py: Tolerate the tahoe CLI returning deprecation warnings
Depending on the versions of external libraries such as Twisted of Foolscap,
the tahoe CLI can display deprecation warnings on stdout. The tests should
not interpret those warnings as a failure if the node is in fact correctly
started.
See http://allmydata.org/trac/tahoe/ticket/859 for an example of deprecation
warnings.
fixes #876
Zooko O'Whielacronx [Sat, 9 Jan 2010 17:49:56 +0000 (09:49 -0800)]
contrib: fix fuse_impl_c to use new Python API
original patch by Thomas Delaet, fixed by François, reviewed by Brian, committed by me
Zooko O'Whielacronx [Sat, 9 Jan 2010 06:04:35 +0000 (22:04 -0800)]
docs: CREDITS: add David-Sarah to the CREDITS file
Brian Warner [Sat, 2 Jan 2010 22:08:41 +0000 (14:08 -0800)]
mutable/publish: don't loop() right away upon DeadReferenceError. Closes #877
The bug was that a disconnected server could cause us to re-enter the initial
loop() call, sending multiple queries to a single server, provoking an
incorrect UCWE. To fix it, stall the loop() with an eventual.fireEventually()
Brian Warner [Tue, 29 Dec 2009 23:39:09 +0000 (15:39 -0800)]
immutable/checker.py: oops, forgot some imports. Also hush pyflakes.
Brian Warner [Tue, 29 Dec 2009 23:37:46 +0000 (15:37 -0800)]
mutable repair: return successful=False when numshares<k (thus repair fails),
instead of weird errors. Closes #874 and #786.
Previously, if the file had 0 shares, this would raise TypeError as it tried
to call download_version(None). If the file had some shares but fewer than
'k', it would incorrectly raise MustForceRepairError.
Added get_successful() to the IRepairResults API, to give repair() a place to
report non-code-bug problems like this.
Brian Warner [Tue, 29 Dec 2009 23:04:09 +0000 (15:04 -0800)]
node.py/interfaces.py: minor docs fixes
Brian Warner [Tue, 29 Dec 2009 23:03:10 +0000 (15:03 -0800)]
NEWS: fix 1.4.1 announcement w.r.t. add-lease behavior in older releases
Brian Warner [Tue, 29 Dec 2009 23:01:08 +0000 (15:01 -0800)]
checker: don't let failures in add-lease affect checker results. Closes #875.
Mutable servermap updates and the immutable checker, when run with
add_lease=True, send both the do-you-have-block and add-lease commands in
parallel, to avoid an extra round trip time. Many older servers have problems
with add-lease and raise various exceptions, which don't generally matter.
The client-side code was catching+ignoring some of them, but unrecognized
exceptions were passed through to the DYHB code, concealing the DYHB results
from the checker, making it think the server had no shares.
The fix is to separate the code paths. Both commands are sent at the same
time, but the errback path from add-lease is handled separately. Known
exceptions are ignored, the others (both unknown-remote and all-local) are
logged (log.WEIRD, which will trigger an Incident), but neither will affect
the DYHB results.
The add-lease message is sent first, and we know that the server handles them
synchronously. So when the checker is done, we can be sure that all the
add-lease messages have been retired. This makes life easier for unit tests.
Brian Warner [Sun, 27 Dec 2009 23:54:44 +0000 (18:54 -0500)]
test_cli: verify fix for "tahoe get" not creating empty file on error (#121)
Brian Warner [Sun, 27 Dec 2009 23:21:49 +0000 (18:21 -0500)]
addendum to "Fix 'tahoe ls' on files (#771)"
tahoe_ls.py: tolerate missing metadata
web/filenode.py: minor cleanups
test_cli.py: test 'tahoe ls FILECAP'