Ticket #641: bug-641.dpatch

File bug-641.dpatch, 18.7 KB (added by francois, at 2009-02-24T18:35:20Z)
Line 
1Tue Feb 24 18:09:15 CET 2009  francois@ctrlaltdel.ch
2  * tahoe_backup.py: ignore symbolic links and print a warning on stderr
3
4Tue Feb 24 18:09:36 CET 2009  francois@ctrlaltdel.ch
5  * test_cli.py: test for bug #641
6
7New patches:
8
9[tahoe_backup.py: ignore symbolic links and print a warning on stderr
10francois@ctrlaltdel.ch**20090224170915] hunk ./src/allmydata/scripts/tahoe_backup.py 256
11+            elif os.path.islink(childpath):
12+                print >>self.options.stderr, "warning: symbolic links are not yet supported, ignoring '%s'" % childpath
13+                break
14
15[test_cli.py: test for bug #641
16francois@ctrlaltdel.ch**20090224170936] hunk ./src/allmydata/test/test_cli.py 1006
17+    def test_ignore_symlinks(self):
18+        if not hasattr(os, 'symlink'):
19+            raise unittest.SkipTest("There is no symlink on this platform.")
20+
21+        self.basedir = os.path.dirname(self.mktemp())
22+        self.set_up_grid()
23+
24+        # create a small local directory with one file and a symlink
25+        source = os.path.join(self.basedir, "home")
26+        self.writeto("foo.txt", "foo")
27+        os.symlink(os.path.join(source, "foo.txt"), os.path.join(source, "foo2.txt"))
28+
29+        d = self.do_cli("create-alias", "tahoe")
30+
31+        d.addCallback(lambda res: self.do_cli("backup", "--no-backupdb", source, "tahoe:test"))
32+
33+        def _check((rc, out, err)):
34+            self.failUnlessEqual(rc, 0)
35+            self.failUnless(err.startswith("warning: symbolic links are not yet supported, ignoring '"))
36+        d.addCallback(_check)
37+
38+        return d
39+
40
41Context:
42
43[test_repairer: change to use faster no_network.GridTestMixin, split Verifier tests into separate cases, refactor judgement funcs into shared methods
44warner@lothar.com**20090224041506
45 Ignore-this: 584ce72d6276da5edc00562793d4ee53
46] 
47[immutable/checker.py: trap ShareVersionIncompatible too. Also, use f.check
48warner@lothar.com**20090224041405
49 Ignore-this: b667e8d3192116293babcacdeed42898
50 instead of examining the value returned by f.trap, because the latter appears
51 to squash exception types down into their base classes (i.e. since
52 ShareVersionIncompatible is a subclass of LayoutInvalid,
53 f.trap(Failure(ShareVersionIncompatible)) == LayoutInvalid).
54 
55 All this resulted in 'incompatible' shares being misclassified as 'corrupt'.
56] 
57[immutable/layout.py: wrap to 80 cols, no functional changes
58warner@lothar.com**20090224005837
59 Ignore-this: 40019480180ec34141506a28d7711608
60] 
61[test_repairer: change Repairer to use much-faster no_network.GridTestMixin. As a side-effect, fix what I think was a bug: some of the assert-minimal-effort-expended checks were mixing write counts and allocate counts
62warner@lothar.com**20090223234227
63 Ignore-this: d58bd0a909f9939775730cda4a858cae
64] 
65[test/no_network.py: add a basic stats provider
66warner@lothar.com**20090223233937
67 Ignore-this: c9f3cc4eed99cfc36f68938ceff4162c
68] 
69[tests: stop using setUpClass/tearDownClass, since they've been deprecated in Twisted-8.2.0
70warner@lothar.com**20090223204312
71 Ignore-this: 24c6592141cf64103530c024f93a5b88
72] 
73[test_checker: improve test coverage for checker results
74warner@lothar.com**20090223201943
75 Ignore-this: 83e173602f0f4c811a7a9893d85385df
76] 
77[Fixed tests again so they will pass on windows.
78Alberto Berti <alberto@metapensiero.it>**20090223003502
79 Ignore-this: 80d5074e7153642a2fa2a77958bfb50d
80] 
81[misc/*: remove RuntimeError too
82warner@lothar.com**20090222233401
83 Ignore-this: b76f8a184f75bb28eb9d8002f957936a
84] 
85[scripts: stop using RuntimeError, for #639
86warner@lothar.com**20090222233106
87 Ignore-this: 686a424442670fffbd4d1816c284a601
88] 
89[mutable/publish: stop using RuntimeError, for #639
90warner@lothar.com**20090222233056
91 Ignore-this: 2a80a661c7850d97357caddad48c6e9d
92] 
93[remove more RuntimeError from unit tests, for #639
94warner@lothar.com**20090222232855
95 Ignore-this: 1a1c3e1457f3f29ba7101fe406ee5f43
96] 
97[stop using RuntimeError in unit tests, for #639
98warner@lothar.com**20090222232722
99 Ignore-this: 475ce0c0dcd7a1f5ed83ef460312efea
100] 
101[ftpd/sftpd: stop using RuntimeError, for #639
102warner@lothar.com**20090222232426
103 Ignore-this: 97001362c4ba9e94b2e254e229b79987
104] 
105[Added tests for the cse when listdir is an iterator
106Alberto Berti <alberto@metapensiero.it>**20090222224356
107 Ignore-this: 218fb2aba02c28b4b1e5324bdb5adeaa
108] 
109[Fixed tests so that they pass also on buildbots.
110Alberto Berti <alberto@metapensiero.it>**20090222224311
111 Ignore-this: fcb91cd6acf028382411d23d380a4576
112] 
113[Use failUnlessEqual instead of failUnless(a == b)
114Alberto Berti <alberto@metapensiero.it>**20090222224214
115 Ignore-this: 8f9144632e3ac9acb4726fb48a083bf4
116] 
117[Better implementation of filtering algorithm.
118Alberto Berti <alberto@metapensiero.it>**20090222224049
119 Ignore-this: 67a8bd2f99bcc87ca2443bef13370a87
120] 
121[Removed '.hgrags' from vcs excludes
122Alberto Berti <alberto@metapensiero.it>**20090222223946
123 Ignore-this: 3e94c22fc9d85f380ee11fb8bdb4d1e9
124] 
125[docs: CREDITS to Alberto Berti
126zooko@zooko.com**20090222193314
127 Ignore-this: 74d370ada3234cce9e58aec15d739f71
128] 
129[Added tests for the --exclude* options of backup command.
130Alberto Berti <alberto@metapensiero.it>**20090222165106
131 Ignore-this: f1b931cf2e7929ce47b737c022bca707
132] 
133[Added --exclude, --exclude-from and --exclude-vcs options to backup command.
134Alberto Berti <alberto@metapensiero.it>**20090222170829
135 Ignore-this: 4912890229cd54a2f61f14f06bc4afcc
136 
137 It is still impossible to specify absolute exclusion path, only
138 relative. I must check with tar or rsync how they allow them to be
139 specified.
140] 
141[Raise a more explanatory exception for errors encountered during backup processing.
142Alberto Berti <alberto@metapensiero.it>**20090222170252
143 Ignore-this: f6b8ffe2a903ba07a2c1c59130dac1e4
144] 
145[Added tests for the fixed alias related command's synopsis
146Alberto Berti <alberto@metapensiero.it>**20090222163732
147 Ignore-this: 4432b4e88e990ba53a5b3fe0f12db2ac
148] 
149[Add missing synopsis and descriptions for alias commands.
150Alberto Berti <alberto@metapensiero.it>**20090221003106
151 Ignore-this: 8aedd03d36d92d912102c7f29e4ca697
152] 
153[docs: move many specification-like documents into specifications/
154warner@lothar.com**20090222054054
155 Ignore-this: a4110cc478198c0611205aba1ccf54f4
156] 
157[test_web.py: increase test coverage of web.status.plural()
158warner@lothar.com**20090222000116
159 Ignore-this: 3138c9d5d2410d8e1121e9b2ed694169
160] 
161[crawler: fix performance problems: only save state once per timeslice (not after every bucket), don't start the crawler until 5 minutes after node startup
162warner@lothar.com**20090221205649
163 Ignore-this: e6551569982bd31d19779ff15c2d6f58
164] 
165[test_system: oops, don't assume that all files in storage/ are in a deep storage/shares/prefix/si/shnum path, since now the crawler pickle has a short path
166warner@lothar.com**20090221061710
167 Ignore-this: fde76d0e5cae853014d1bb18b5f17dae
168] 
169[crawler: tolerate low-resolution system clocks (i.e. windows)
170warner@lothar.com**20090221061533
171 Ignore-this: 57286a3abcaf44f6d1a78c3c1ad547a5
172] 
173[BucketCountingCrawler: store just the count, not cycle+count, since it's too easy to make usage mistakes otherwise
174warner@lothar.com**20090221035831
175 Ignore-this: 573b6f651af74380cdd64059fbbdda4b
176] 
177[test_storage: startService the server, as is now the standard practice
178warner@lothar.com**20090221035755
179 Ignore-this: 3999889bd628fe4039bbcf1b29160453
180] 
181[crawler: load state from the pickle in init, rather than waiting until startService, so get_state() can be called early
182warner@lothar.com**20090221035720
183 Ignore-this: ecd128a5f4364c0daf4b72d791340b66
184] 
185[BucketCountingCrawler: rename status and state keys to use 'bucket' instead of 'share', because the former is more accurate
186warner@lothar.com**20090221034606
187 Ignore-this: cf819f63fac9506c878d6c9715ce35b7
188] 
189[storage: also report space-free-for-root and space-free-for-nonroot, since that helps users understand the space-left-for-tahoe number better
190warner@lothar.com**20090221032856
191 Ignore-this: 9fdf0475f758acd98b73026677170b45
192] 
193[storage: add bucket-counting share crawler, add its output (number of files+directories maintained by a storage server) and status to the webapi /storage page
194warner@lothar.com**20090221030408
195 Ignore-this: 28761c5e076648026bc5f518506db65c
196] 
197[storage: move si_b2a/si_a2b/storage_index_to_dir out of server.py and into common.py
198warner@lothar.com**20090221030309
199 Ignore-this: 645056428ab797f0b542831c82bf192a
200] 
201[crawler: add get_progress, clean up get_state
202warner@lothar.com**20090221002743
203 Ignore-this: 9bea69f154c75b31a53425a8ea67789b
204] 
205[web/storage: make sure we can handle platforms without os.statvfs too
206warner@lothar.com**20090220220353
207 Ignore-this: 79d4cb8482a8543b9759dc949c86c587
208] 
209[crawler: provide for one-shot crawlers, which stop after their first full cycle, for share-upgraders and database-populaters
210warner@lothar.com**20090220211911
211 Ignore-this: fcdf72c5ffcafa374d376388be6fa5c5
212] 
213[web: add Storage status page, improve tests
214warner@lothar.com**20090220202926
215 Ignore-this: e34d5270dcf0237fe72f573f717c7a4
216] 
217[storage: include reserved_space in stats
218warner@lothar.com**20090220202920
219 Ignore-this: b5b480fe0abad0148ecad0c1fb47ecae
220] 
221[web/check_results: sort share identifiers in the sharemap display
222warner@lothar.com**20090220182922
223 Ignore-this: 5c7bfcee3e15c7082c3653eb8a460960
224] 
225[webapi: pass client through constructor arguments, remove IClient, should make it easier to test web renderers in isolation
226warner@lothar.com**20090220181554
227 Ignore-this: e7848cd1bee8faf2ce7aaf040b9bf8e3
228] 
229[test/no_network: do startService on the storage servers, make it easier to customize the storage servers
230warner@lothar.com**20090220022254
231 Ignore-this: e62f328721c007e4c5ee023a6efdf66d
232] 
233[crawler: modify API to support upcoming bucket-counting crawler
234warner@lothar.com**20090220013142
235 Ignore-this: 808f8382837b13082f8b245db2ebee06
236] 
237[test_backupdb: make the not-a-database file larger, since the older sqlite-2.3.2 on OS-X is easily fooled
238warner@lothar.com**20090220000409
239 Ignore-this: 694d2ca5053bb96e91670765d0cedf2e
240] 
241[web/reliability: add parameter descriptions, adapted from a patch from Terrell Russell.
242warner@lothar.com**20090219222918
243 Ignore-this: 835f5ab01e1aff31b2ff9febb9a51f3
244] 
245[test_crawler: hush pyflakes
246warner@lothar.com**20090219202340
247 Ignore-this: 765d22c9c9682cc86c5205dc130500af
248] 
249[test_crawler: disable the percentage-of-cpu-used test, since it is too unreliable on our slow buildslaves. But leave the code in place for developers to run by hand.
250warner@lothar.com**20090219201654
251 Ignore-this: ff7cf5cfa79c6f2ef0cf959495dd989a
252] 
253[reliability.py: fix the numpy conversion, it was completely broken. Thanks to Terrell Russell for the help.
254warner@lothar.com**20090219195515
255 Ignore-this: f2b1eb65855111b338e1487feee1bbcf
256] 
257[reliability: switch to NumPy, since Numeric is deprecated
258warner@lothar.com**20090219074435
259 Ignore-this: f588a68e9bcd3b0bc3653570882b6fd5
260] 
261[setup.py: fix pyflakes complaints
262warner@lothar.com**20090219073643
263 Ignore-this: a314e5456b0a796bc9f70232a119ec68
264] 
265[move show-tool-versions out of setup.py and into a separate script in misc/ , since setuptools is trying to build and install a bunch of stuff first
266warner@lothar.com**20090219073558
267 Ignore-this: 9e56bc43026379212e6b6671ed6a1fd4
268] 
269[test_crawler: don't require >=1 cycle on cygwin
270warner@lothar.com**20090219065818
271 Ignore-this: b8d2d40f26aeb30a7622479840a04635
272] 
273[setup.py: add show_tool_versions command, for the benefit of a new buildbot step
274warner@lothar.com**20090219062436
275 Ignore-this: 21d761c76a033e481831584bedc60c86
276] 
277[setup.py: wrap to 80 cols, no functional changes
278warner@lothar.com**20090219055751
279 Ignore-this: d29e57c6ee555f2ee435667b7e13e60b
280] 
281[crawler: use fileutil.move_info_place in preference to our own version
282warner@lothar.com**20090219051342
283 Ignore-this: ee4e46f3de965610503ba36b28184db9
284] 
285[fileutil: add move_into_place(), to perform the standard unix trick of atomically replacing a file, with a fallback for windows
286warner@lothar.com**20090219051310
287 Ignore-this: c1d35e8ca88fcb223ea194513611c511
288] 
289[crawler: fix problems on windows and our slow cygwin slave
290warner@lothar.com**20090219042431
291 Ignore-this: 8019cb0da79ba00c536183a6f57b4cab
292] 
293[#633: first version of a rate-limited interruptable share-crawler
294warner@lothar.com**20090219034633
295 Ignore-this: 5d2d30c743e3b096a8e775d5a9b33601
296] 
297[change StorageServer to take nodeid in the constructor, instead of assigning it later, since it's cleaner and because the original problem (Tubs not being ready until later) went away
298warner@lothar.com**20090218222301
299 Ignore-this: 740d582f20c93bebf60e21d9a446d3d2
300] 
301[test_system: split off checker tests to test_deepcheck.py, this file is too big
302warner@lothar.com**20090218214234
303 Ignore-this: 82bf8db81dfbc98224bbf694054a8761
304] 
305[break storage.py into smaller pieces in storage/*.py . No behavioral changes.
306warner@lothar.com**20090218204655
307 Ignore-this: 312d408d1cacc5a764d791b53ebf8f91
308] 
309[immutable/layout: minor change to repr name
310warner@lothar.com**20090218204648
311 Ignore-this: c8781ef15b7dea63b39236a1899b86ce
312] 
313[docs: add lease-tradeoffs diagram
314warner@lothar.com**20090218204137
315 Ignore-this: c22a589ad465dac846da834c30dc4083
316] 
317[interfaces.py: allow add/renew/cancel-lease to return Any, so that 1.3.1 clients (the first to use these calls) can tolerate future storage servers which might return something other than None
318warner@lothar.com**20090218192903
319 Ignore-this: dcbb704a05416ecc66d90fb486c3d75b
320] 
321[docs/debian.txt: minor edit
322warner@lothar.com**20090218032212
323 Ignore-this: 64ff1fb163ffca4bcfd920254f1cf866
324] 
325[add --add-lease to 'tahoe check', 'tahoe deep-check', and webapi.
326warner@lothar.com**20090218013243
327 Ignore-this: 176b2006cef5041adcb592ee83e084dd
328] 
329[change RIStorageServer.remote_add_lease to exit silently in case of no-such-bucket, instead of raising IndexError, because that makes the upcoming --add-lease feature faster and less noisy
330warner@lothar.com**20090218013053
331 Ignore-this: 6fdfcea2c832178f1ce72ab0ff510f3a
332] 
333[CLI #590: convert 'tahoe deep-check' to streaming form, improve display, add tests
334warner@lothar.com**20090217231511
335 Ignore-this: 6d88eb94b1c877eacc8c5ca7d0aac776
336] 
337[interfaces.py: document behavior of add_lease/renew_lease/cancel_lease, before I change it
338warner@lothar.com**20090217194809
339 Ignore-this: 703c6712926b8edb19d55d790b65a400
340] 
341[test_backupdb: improve error messages if the test fails
342warner@lothar.com**20090217170838
343 Ignore-this: ef657e87c66e4304d3e0aca9831b84c
344] 
345[webapi #590: add streaming deep-check. Still need a CLI tool to use it.
346warner@lothar.com**20090217053553
347 Ignore-this: a0edd3d2a531c48a64d8397f7e4b208c
348] 
349[test_web.Grid: change the CHECK() function to make it easier to test t= values with hyphens in them
350warner@lothar.com**20090217050034
351 Ignore-this: 410c08735347c2057df52f6716520228
352] 
353[test_web: improve checker-results coverage with a no-network -based test, enhance no-network harness to assist, fix some bugs in web/check_results.py that were exposed
354warner@lothar.com**20090217041242
355 Ignore-this: fe54bb66a9ae073c002a7af51cd1e18
356] 
357[web: fix handling of reliability page when Numeric is not available
358warner@lothar.com**20090217015658
359 Ignore-this: 9d329182f1b2e5f812e5e7eb5f4cf2ed
360] 
361[test/no_network: update comments with setup timing: no_network takes 50ms, SystemTestMixin takes 2s (on my laptop)
362warner@lothar.com**20090217000643
363 Ignore-this: cc778fa3219775b25057bfc9491f8f34
364] 
365[test_upload: rewrite in terms of no-network GridTestMixin, improve no_network.py as necessary
366warner@lothar.com**20090216234457
367 Ignore-this: 80a341d5aa3036d24de98e267499d70d
368] 
369[test_download: rewrite in terms of no-network GridTestMixin, improve no_network.py as necessary
370warner@lothar.com**20090216233658
371 Ignore-this: ec2febafd2403830519120fb3f3ca04e
372] 
373[test_dirnode.py: convert Deleter to new no-network gridtest
374warner@lothar.com**20090216232348
375 Ignore-this: 8041739442ec4db726675e48f9775ae9
376] 
377[test_cli.py: modify to use the new 'no-network' gridtest instead of SystemTestMixin, which speeds it up from 73s to 43s on my system
378warner@lothar.com**20090216232005
379 Ignore-this: ec6d010c9182aa72049d1fb894cf890e
380] 
381[tests: fix no_network framework to work with upload/download and checker
382warner@lothar.com**20090216231947
383 Ignore-this: 74b4dbd66b8384ae7c7544969fe4f744
384] 
385[client.py: improve docstring
386warner@lothar.com**20090216231532
387 Ignore-this: bbaa9e3f63fdb0048e3125c4681b2d1f
388] 
389[test_cli: add test coverage for help strings
390warner@lothar.com**20090216210833
391 Ignore-this: d2020849107f687448e159a19d0e5dab
392] 
393[test/no_network: new test harness, like system-test but doesn't use the network so it's faster
394warner@lothar.com**20090216205844
395 Ignore-this: 31678f7bdef30b0216fd657fc6145534
396] 
397[interfaces.py: minor docstring edit
398warner@lothar.com**20090216205816
399 Ignore-this: cec3855070197f7920b370f95e8b07bd
400] 
401[setup: if you sdist_dsc (to produce the input files for dpkg-buildpackage) then run darcsver first
402zooko@zooko.com**20090216201558
403 Ignore-this: b85be51b3d4a9a19a3366e690f1063e2
404] 
405[doc: a few edits to docs made after the 1.3.0 release
406zooko@zooko.com**20090216201539
407 Ignore-this: dbff3b929d88134d862f1dffd1ef068a
408] 
409[test_cli: improve test coverage slightly
410warner@lothar.com**20090216030451
411 Ignore-this: e01ccc6a6fb44aaa4fb14fe8669e2065
412] 
413[test_util: get almost full test coverage of dictutil, starting with the original pyutil tests as a base. The remaining three uncovered lines involve funny cases of ValueOrderedDict that I can't figure out how to get at
414warner@lothar.com**20090216023210
415 Ignore-this: dc1f0c6d8c003c0ade38bc8f8516b04d
416] 
417[provisioning/reliability: add tests, hush pyflakes, remove dead code, fix web links
418warner@lothar.com**20090215222451
419 Ignore-this: 7854df3e0130d9388f06efd4c797262f
420] 
421[util/statistics: add tests, fix mean_repair_cost
422warner@lothar.com**20090215222326
423 Ignore-this: c576eabc74c23b170702018fc3c122d9
424] 
425[test_repairer: hush pyflakes
426warner@lothar.com**20090215222310
427 Ignore-this: 875eb52e86077cda77efd02da77f8cfa
428] 
429[lossmodel.lyx: move draft paper into docs/proposed/, since it's unfinished
430warner@lothar.com**20090215221905
431 Ignore-this: 7f7ee204e47fd66932759c94deefe68
432] 
433[build a 'reliability' web page, with a simulation of file decay and repair over time
434warner@lothar.com**20090213234234
435 Ignore-this: 9e9623eaac7b0637bbd0071f082bd345
436] 
437[More lossmodel work, on repair.
438Shawn Willden <shawn-tahoe@willden.org>**20090116025648] 
439[Loss model work (temp1)
440Shawn Willden <shawn@willden.org>**20090115030058] 
441[Statistics module
442Shawn Willden <shawn-tahoe@willden.org>**20090114021235
443 
444 Added a statistics module for calculating various facets of
445 share survival statistics.
446] 
447[docs: relnotes-short.txt
448zooko@zooko.com**20090215163510
449 Ignore-this: 683649bb13499bbe0e5cea2e1716ff59
450 linkedin.com imposed a strict limit on the number of characters I could post.  This forced me to prune and prune and edit and edit until relnotes.txt was a quarter of its former size.  Here's the short version.
451] 
452[TAG allmydata-tahoe-1.3.0
453zooko@zooko.com**20090214000556
454 Ignore-this: aa6c9a31a14a58ad2298cb7b08d3ea70
455] 
456Patch bundle hash:
4578416ba337ad5ab87c4720df2251c559e7c9bf3ae