Ticket #329: tests.txt

File tests.txt, 26.1 KB (added by kevan, at 2009-07-04T03:59:26Z)

tests for _unpack_contents, _pack_contents, and CachingDict?

Line 
1Fri Jul  3 20:43:28 PDT 2009  kevan@isnotajoke.com
2  * Add tests for CachingDict, _pack_contents, _unpack_contents
3
4New patches:
5
6[Add tests for CachingDict, _pack_contents, _unpack_contents
7kevan@isnotajoke.com**20090704034328
8 Ignore-this: 12f3e989244288c211ba393d3a205111
9] {
10hunk ./src/allmydata/test/test_dirnode.py 22
11 from allmydata.test.no_network import GridTestMixin
12 from allmydata.check_results import CheckResults, CheckAndRepairResults
13 from allmydata.unknown import UnknownNode
14+from base64 import b32decode
15 import common_util as testutil
16 
17 # to test dirnode.py, we want to construct a tree of real DirectoryNodes that
18hunk ./src/allmydata/test/test_dirnode.py 97
19         d.addCallback(lambda res: n)
20         return d
21 
22-
23 class Dirnode(unittest.TestCase,
24               testutil.ShouldFailMixin, testutil.StallMixin, ErrorMixin):
25     timeout = 240 # It takes longer than 120 seconds on Francois's arm box.
26hunk ./src/allmydata/test/test_dirnode.py 102
27     def setUp(self):
28         self.client = FakeClient()
29+        # This is a base32-encoded representation of the directory tree
30+        # root/file1
31+        # root/file2
32+        # root/file3
33+        # as represented after being fed to _pack_contents.
34+        # We have it here so we can decode it, feed it to
35+        # _unpack_contents, and verify that _unpack_contents
36+        # works correctly.
37+
38+        self.known_tree = "GM4TOORVHJTGS3DFGEWDSNJ2KVJESOSDJBFTU33MPB2GS3LZNVYG6N3GGI3WU5TIORTXC3DOMJ2G4NB2MVWXUZDONBVTE5LNGRZWK2LYN55GY23XGNYXQMTOMZUWU5TENN4DG23ZG5UTO2L2NQ2DO6LFMRWDMZJWGRQTUMZ2GEYDUMJQFQYTIMZ22XZKZORX5XS7CAQCSK3URR6QOHISHRCMGER5LRFSZRNAS5ZSALCS6TWFQAE754IVOIKJVK73WZPP3VUUEDTX3WHTBBZ5YX3CEKHCPG3ZWQLYA4QM6LDRCF7TJQYWLIZHKGN5ROA3AUZPXESBNLQQ6JTC2DBJU2D47IZJTLR3PKZ4RVF57XLPWY7FX7SZV3T6IJ3ORFW37FXUPGOE3ROPFNUX5DCGMAQJ3PGGULBRGM3TU6ZCMN2GS3LFEI5CAMJSGQ3DMNRTHA4TOLRUGI3TKNRWGEWCAITUMFUG6ZJCHIQHWITMNFXGW3LPORUW2ZJCHIQDCMRUGY3DMMZYHE3S4NBSG42TMNRRFQQCE3DJNZVWG4TUNFWWKIR2EAYTENBWGY3DGOBZG4XDIMRXGU3DMML5FQQCE3LUNFWWKIR2EAYTENBWGY3DGOBZG4XDIMRXGU3DMML5FQWDGOJRHI2TUZTJNRSTELBZGQ5FKUSJHJBUQSZ2MFYGKZ3SOBSWQ43IO52WO23CNAZWU3DUGVSWSNTIOE5DK33POVTW4ZLNMNWDK6DHPA2GS2THNF2W25DEN5VGY2LQNFRGG5DKNNRHO5TZPFTWI6LNMRYGQ2LCGJTHM4J2GM5DCMB2GQWDCNBSHKVVQBGRYMACKJ27CVQ6O6B4QPR72RFVTGOZUI76XUSWAX73JRV5PYRHMIFYZIA25MXDPGUGML6M2NMRSG4YD4W4K37ZDYSXHMJ3IUVT4F64YTQQVBJFFFOUC7J7LAB2VFCL5UKKGMR2D3F4EPOYC7UYWQZNR5KXHBSNXLCNBX2SNF22DCXJIHSMEKWEWOG5XCJEVVZ7UW5IB6I64XXQSJ34B5CAYZGZIIMR6LBRGMZTU6ZCMN2GS3LFEI5CAMJSGQ3DMNRTHA4TOLRUGMYDEMJYFQQCE5DBNBXWKIR2EB5SE3DJNZVW233UNFWWKIR2EAYTENBWGY3DGOBZG4XDIMZQGIYTQLBAEJWGS3TLMNZHI2LNMURDUIBRGI2DMNRWGM4DSNZOGQZTAMRRHB6SYIBCNV2GS3LFEI5CAMJSGQ3DMNRTHA4TOLRUGMYDEMJYPUWCYMZZGU5DKOTGNFWGKMZMHE2DUVKSJE5EGSCLHJRW25DDPBYTO2DXPB3GM6DBNYZTI6LJMV3DM2LWNB4TU4LWMNSWW3LKORXWK5DEMN3TI23NNE3WEM3SORRGY5THPA3TKNBUMNZG453BOF2GSZLXMVWWI3DJOFZW623RHIZTUMJQHI2SYMJUGI5BOSHWDPG3WKPAVXCF3XMKA7QVIWPRMWJHDTQHD27AHDCPJWDQENQ5H5ZZILTXQNIXXCIW4LKQABU2GCFRG5FHQN7CHD7HF4EKNRZFIV2ZYQIBM7IQU7F4RGB3XCX3FREPBKQ7UCICHVWPCYFGA6OLH3J45LXQ6GWWICJ3PGWJNLZ7PCRNLAPNYUGU6BENS7OXMBEOOFRIZV3PF2FFWZ5WHDPKXERYP7GNHKRMGEZTOOT3EJRXI2LNMURDUIBRGI2DMNRWGM4DSNZOGQZTGNRSGY4SYIBCORQWQ33FEI5CA6ZCNRUW423NN52GS3LFEI5CAMJSGQ3DMNRTHA4TOLRUGMZTMMRWHEWCAITMNFXGWY3SORUW2ZJCHIQDCMRUGY3DMMZYHE3S4NBTGM3DENRZPUWCAITNORUW2ZJCHIQDCMRUGY3DMMZYHE3S4NBTGM3DENRZPUWCY==="
39 
40     def test_basic(self):
41         d = self.client.create_empty_dirnode()
42hunk ./src/allmydata/test/test_dirnode.py 730
43         d.addErrback(self.explain_error)
44         return d
45 
46+    def test_unpack_and_pack_behavior(self):
47+        known_tree = b32decode(self.known_tree)
48+        d = self.client.create_empty_dirnode()
49+
50+        def _check_tree(node):
51+            def check_children(children):
52+                # Are all the expected child nodes there?
53+                self.failUnless(children.has_key(u'file1'))
54+                self.failUnless(children.has_key(u'file2'))
55+                self.failUnless(children.has_key(u'file3'))
56+
57+                # Are the metadata for child 3 right?
58+                file3_rocap = "URI:CHK:cmtcxq7hwxvfxan34yiev6ivhy:qvcekmjtoetdcw4kmi7b3rtblvgx7544crnwaqtiewemdliqsokq:3:10:5"
59+                file3_rwcap = "URI:CHK:cmtcxq7hwxvfxan34yiev6ivhy:qvcekmjtoetdcw4kmi7b3rtblvgx7544crnwaqtiewemdliqsokq:3:10:5"
60+                file3_metadata = {'ctime': 1246663897.4336269, 'tahoe': {'linkmotime': 1246663897.4336269, 'linkcrtime': 1246663897.4336269}, 'mtime': 1246663897.4336269}
61+                self.failUnlessEqual(file3_metadata, children[u'file3'][1])
62+                self.failUnlessEqual(file3_rocap,
63+                                     children[u'file3'][0].get_readonly_uri())
64+                self.failUnlessEqual(file3_rwcap,
65+                                     children[u'file3'][0].get_uri())
66+
67+                # Are the metadata for child 2 right?
68+                file2_rocap = "URI:CHK:apegrpehshwugkbh3jlt5ei6hq:5oougnemcl5xgx4ijgiumtdojlipibctjkbwvyygdymdphib2fvq:3:10:4"
69+                file2_rwcap = "URI:CHK:apegrpehshwugkbh3jlt5ei6hq:5oougnemcl5xgx4ijgiumtdojlipibctjkbwvyygdymdphib2fvq:3:10:4"
70+                file2_metadata = {'ctime': 1246663897.430218, 'tahoe': {'linkmotime': 1246663897.430218, 'linkcrtime': 1246663897.430218}, 'mtime': 1246663897.430218}
71+                self.failUnlessEqual(file2_metadata, children[u'file2'][1])
72+                self.failUnlessEqual(file2_rocap,
73+                                     children[u'file2'][0].get_readonly_uri())
74+                self.failUnlessEqual(file2_rwcap,
75+                                     children[u'file2'][0].get_uri())
76+
77+                # Are the metadata for child 1 right?
78+                file1_rocap = "URI:CHK:olxtimympo7f27jvhtgqlnbtn4:emzdnhk2um4seixozlkw3qx2nfijvdkx3ky7i7izl47yedl6e64a:3:10:10"
79+                file1_rwcap = "URI:CHK:olxtimympo7f27jvhtgqlnbtn4:emzdnhk2um4seixozlkw3qx2nfijvdkx3ky7i7izl47yedl6e64a:3:10:10"
80+                file1_metadata = {'ctime': 1246663897.4275661, 'tahoe': {'linkmotime': 1246663897.4275661, 'linkcrtime': 1246663897.4275661}, 'mtime': 1246663897.4275661}
81+                self.failUnlessEqual(file1_metadata, children[u'file1'][1])
82+                self.failUnlessEqual(file1_rocap,
83+                                     children[u'file1'][0].get_readonly_uri())
84+                self.failUnlessEqual(file1_rwcap,
85+                                     children[u'file1'][0].get_uri())
86+
87+            children = node._unpack_contents(known_tree)
88+
89+            check_children(children)
90+
91+            packed_children = node._pack_contents(children)
92+
93+            children = node._unpack_contents(packed_children)
94+
95+            check_children(children)
96+
97+        d.addCallback(_check_tree)
98+        return d
99+
100+    def test_caching_dict(self):
101+        d = dirnode.CachingDict()
102+        d.set_both_items("test", "test2", ("test3", "test4"))
103+        cached, value = d.get_both_items("test")
104+
105+        self.failUnlessEqual(cached, "test2")
106+        self.failUnlessEqual(value, ("test3", "test4"))
107+
108+        d['test'] = ("test3", "test2")
109+
110+        cached, value = d.get_both_items("test")
111+
112+        self.failUnlessEqual(cached, None)
113+        self.failUnlessEqual(value, ("test3", "test2"))
114+
115 class FakeMutableFile:
116     counter = 0
117     def __init__(self, initial_contents=""):
118}
119
120Context:
121
122[setup: the mac-exe build (using py2app) requires macholib>=1.2.
123zooko@zooko.com**20090703175702
124 Ignore-this: ea489a5076f2c9f20f6bfd2807cc5680
125 Here is someone else's description of this problem:
126 http://rtmpy.org/ticket/7
127]
128[clean up debian packaging: we have control files for etch/lenny/sid, and
129"Brian Warner <warner@lothar.com>"**20090703072804
130 everything else uses one of those. Add dependency on python-pysqlite2 for
131 platforms that use py2.4 by default. Update foolscap dependency to 0.4.1.
132]
133[update NEWS to cover all recent changes, sort by end-user importance
134Brian Warner <warner@lothar.com>**20090703014303
135 Ignore-this: 6ddac78075d7547a19712d505818949c
136]
137[Tolerate unknown URI types in directory structures. Part of #683.
138Brian Warner <warner@lothar.com>**20090703010749
139 Ignore-this: afd0e15e2e39d3b87743ec7ccd87054d
140 
141 The idea is that future versions of Tahoe will add new URI types that this
142 version won't recognize, but might store them in directories that we *can*
143 read. We should handle these "objects from the future" as best we can.
144 Previous releases of Tahoe would just explode. With this change, we'll
145 continue to be able to work with everything else in the directory.
146 
147 The code change is to wrap anything we don't recognize as an UnknownNode
148 instance (as opposed to a FileNode or DirectoryNode). Then webapi knows how
149 to render these (mostly by leaving fields blank), deep-check knows to skip
150 over them, deep-stats counts them in "count-unknown". You can rename and
151 delete these things, but you can't add new ones (because we wouldn't know how
152 to generate a readcap to put into the dirnode's rocap slot, and because this
153 lets us catch typos better).
154]
155[test_client.py: minor refactoring of BASECONFIG usage
156Brian Warner <warner@lothar.com>**20090703005450
157 Ignore-this: bf19b9ae7edeab293068cce2368f9364
158]
159[create_node_from_uri: take both writecap+readcap, move logic out of dirnode.py
160Brian Warner <warner@lothar.com>**20090702222537
161 Ignore-this: 93051498076e90d3f1dc85161ce8247a
162]
163[dirnode.py: prepare to preserve both rwcap+rocap when copying
164Brian Warner <warner@lothar.com>**20090702211254
165 Ignore-this: f128c02da32f86d7e39527a35dfc2e02
166 
167 This will make it easier to tolerate unknown nodes safely.
168]
169[interfaces.py: wrap some lines to 80cols
170Brian Warner <warner@lothar.com>**20090702015728
171 Ignore-this: e2c777c1e89a684b43ceabeb0042456c
172]
173[cli: webopen: when called with no arguments, open the Welcome page
174Brian Warner <warner@lothar.com>**20090701200548
175 Ignore-this: ae7d6cb42165d0c751926065378343dd
176]
177[mutable repairer: skip repair of readcaps instead of throwing an exception.
178Brian Warner <warner@lothar.com>**20090701011343
179 Ignore-this: 2c24493426cdc1db8f0e3815ee2c5f87
180 This should improve the behavior of #625 a bit: at least all the files will
181 get repaired.
182]
183[interfaces.py: improve ICheckAndRepairResults docs a bit
184Brian Warner <warner@lothar.com>**20090701001925
185 Ignore-this: 3a57acfee3487c1e071e135743e42c2a
186]
187[repairer.py: wrap to 80cols. No code changes.
188Brian Warner <warner@lothar.com>**20090701000047
189 Ignore-this: 4a84ac95a849be0656d362882876082a
190]
191[setup: require pycryptopp>=0.5.14 if on Windows and with Python>=2.6
192zooko@zooko.com**20090630184807
193 Ignore-this: f7e9beeb5d5613a7c0ffed14d1dda3c6
194]
195[edit NEWS
196Brian Warner <warner@lothar.com>**20090630174115
197 Ignore-this: c4461a2304fcd45bee95e11418693a18
198]
199[NEWS: list all user-visible changes since 1.4.1 . Needs lots of editing.
200Brian Warner <warner@lothar.com>**20090630170734
201 Ignore-this: f606a5d678d0db8065b9f84e796d59b0
202]
203[* find-trailing-spaces.py: exit rc=1 if whitespace found, to be a pre-commit hook
204Brian Warner <warner@lothar.com>**20090629224658
205 Ignore-this: 1465becc923ee04d170e5ee791cf605e
206]
207[use 522-bit RSA keys in all unit tests (except one)
208Brian Warner <warner@lothar.com>**20090629223124
209 Ignore-this: 7a4c3685683ff9da5ceb2d8cb7b19b7
210 
211 This reduces the total test time on my laptop from 400s to 283s.
212 * src/allmydata/test/test_system.py (SystemTest.test_mutable._test_debug):
213   Remove assertion about container_size/data_size, this changes with keysize
214   and was too variable anyways.
215 * src/allmydata/mutable/filenode.py (MutableFileNode.create): add keysize=
216 * src/allmydata/dirnode.py (NewDirectoryNode.create): same
217 * src/allmydata/client.py (Client.DEFAULT_MUTABLE_KEYSIZE): add default,
218   this overrides the one in MutableFileNode
219]
220[remove trailing whitespace
221Brian Warner <warner@lothar.com>**20090629200358
222 Ignore-this: 7a3756618dcfca0a40acb4c3d15f6440
223]
224[remove trailing whitespace from some util classes
225Brian Warner <warner@lothar.com>**20090629200341
226 Ignore-this: ded84c38885d6aabf2691957dde82bf3
227]
228[repairer: raise a better exception when faced with a readonly filenode. Still
229Brian Warner <warner@lothar.com>**20090626063230
230 Ignore-this: a100005b973a6a57566b943073352828
231 produces an error, though.
232]
233[mutable/filenode.py: set _writekey to None, rather than leaving it missing
234Brian Warner <warner@lothar.com>**20090626062022
235 Ignore-this: be111c37dabd6c7aa47abd7bf160926e
236 
237 This will at least turn the really really weird error when a repair of a
238 readonly mutable file is attempted into a merely really weird assertion that
239 mentions "repair currently requires a writecap".
240]
241[one last tweak
242Brian Warner <warner@lothar.com>**20090626052627
243 Ignore-this: 8d9d045a1ebe774aeed6f7e1cdd36973
244]
245[more 'tahoe cp' docs tweaks
246Brian Warner <warner@lothar.com>**20090626051652
247 Ignore-this: f594c395007af64da3d7302943ef8855
248]
249[cli.py: minor tweaks to test posthooks
250"Brian Warner <warner@lothar.com>"**20090626024557]
251[cli.py: update comments on 'tahoe cp' --help a bit
252Brian Warner <warner@lothar.com>**20090626023837
253 Ignore-this: 4090b06896542fbf260d808e8a991cea
254]
255[cli: add some --help text to 'tahoe cp'
256warner@lothar.com**20090625235751]
257[make it possible to add/renew-lease from the WUI
258Brian Warner <warner@lothar.com>**20090626061824
259 Ignore-this: 6fb6a0e8ecfc630464ac37a779078e5
260 add add/renew-lease checkbox on the "more info" page check/deep-check forms
261]
262[hush pyflakes
263warner@lothar.com**20090625021809]
264[Split out NoSharesError, stop adding attributes to NotEnoughSharesError, change humanize_failure to include the original exception string, update tests, behave better if humanize_failure fails.
265warner@lothar.com**20090625021707]
266[remove introducer/old.py, will create something similar when the RIIntroducer changes
267warner@lothar.com**20090624194038]
268[Basically just a trivial platform detection patch for NetBSD.
269midnightmagic@example.com**20090617233647]
270[check_grid.py: print stderr when a subcommand fails
271warner@lothar.com**20090623022833]
272[big rework of introducer client: change local API, split division of responsibilites better, remove old-code testing, improve error logging
273warner@lothar.com**20090623021047]
274[web/welcome.xhtml: remove trailing whitespace
275warner@lothar.com**20090623020909]
276[rrefutil: add trap_deafref utility, to make the callRemote-plus-ignore-DeadReferenceError-plug-log-other-errors pattern easier
277warner@lothar.com**20090623020826]
278[PollMixin: snoop trial's error observer to halt the test early if an error is seen. This turns a lot of timeouts into fast failures.
279warner@lothar.com**20090623020731]
280[clean up storage_broker interface: should fix #732
281warner@lothar.com**20090621235119
282 Ignore-this: fb93cd670e809eed2bc123142dd8d4ff
283]
284[hush pyflakes with recent FileTooLarge removal
285warner@lothar.com**20090621231757
286 Ignore-this: 4231b38c7e9091b0577b07ec99ac2df0
287]
288[add docs/proposed/GridID.txt (cleaning out some of my old branches)
289warner@lothar.com**20090621191204]
290[docs: remove warning about inability to build modules on py2.6 on Windows with mingw, differentiate between clients and servers, reflow to a consistent column width (79), add hint about firewall/NAT docs.
291zooko@zooko.com**20090621175005
292 Ignore-this: 85e7c1ccb258317ca4dd37917afb48f5
293]
294[setup: copy in misc/show-tools-version.py from zfec -- it prints out platform and setuptools versions
295zooko@zooko.com**20090621055846
296 Ignore-this: 4e144886ab02414bbaaf0295ce2b337
297]
298[docs: start updating the NEWS and relnotes.txt files, add Kevan to CREDITS
299zooko@zooko.com**20090621055114
300 Ignore-this: 35e05a5739549ffa693d55df51ffcfd
301]
302[change max filesize limit tests
303kevan@isnotajoke.com**20090620212822
304 Ignore-this: 38e7c62a308c3c93e79df4bf72f4f675
305 
306 Instead of testing to see that the previous SDMF filesize limit was being
307 obeyed, we now test to make sure that we can insert files larger than that
308 limit.
309]
310[remove upper limit on SDMF filesize
311kevan@isnotajoke.com**20090620213130
312 Ignore-this: 5bc48c7421c73827909a17e651799d0c
313]
314[immutable/download: instrument do-you-have-block responses to investigate #732
315warner@lothar.com**20090621041209]
316[Makefile: add jaunty support, rearrange debian sections in order of release
317warner@lothar.com**20090618050502]
318[test_util: add known-answer tests for hashutil tags
319warner@lothar.com**20090618045709]
320[tests: bump up a timeout that expired on Zandr's box
321zooko@zooko.com**20090613195703
322 Ignore-this: 853000f43665396b3734a99f72bd472d
323]
324[util: hooray!  A clean implementation of this simple utility!  Black Dew pointed out that the inverse of time.gmtime() is hidden in the "calendar" module.
325zooko@zooko.com**20090613160112
326 Ignore-this: 8359cc48ca1b8e2793e8b2afe2050cf4
327]
328[util: Brian's horrible hack to figure out how much localtime and utctime differ.  Now we'll see if it works on Windows.
329zooko@zooko.com**20090612204556
330 Ignore-this: 8c36431da4707da76472956c7750ecbd
331]
332[util: oops, time.tzset() doesn't work on Windows -- hopefully the new "London" unit test passes on Windows when we skip tzset() on platforms that don't have it
333zooko@zooko.com**20090612000920
334 Ignore-this: 7d314b8334cfa3f65f9635e3d3eb727e
335]
336[setup: edit install.html to warn Windows users away from Python v2.6
337zooko@zooko.com**20090611225506
338 Ignore-this: 89ad63eab49ede883ef92f2de5b5fc54
339]
340[util: fix time_format.iso_utc_time_to_seconds() so that it works even in London
341zooko@zooko.com**20090611221129
342 Ignore-this: 14dbb9840587797f848226fdb3645c08
343]
344[setup: run the same "make quicktest" on Windows as on non-Windows
345zooko@zooko.com**20090611193214
346 Ignore-this: d0c78377d3892373ec3d91e9e98bd8bd
347 I checked and it behaves about as well on Windows as the previous version did.
348]
349[tests: significantly increase timeouts that triggered on Zandr's ARM box
350zooko@zooko.com**20090610161043
351 Ignore-this: 2b3c556c5166a8267b4b15664d3aadfb
352]
353[test: multiple by 10 or so all timeouts that Zandr's ARM box just overran
354zooko@zooko.com**20090610125639
355 Ignore-this: bf62f063ab46814fd78de55a5fbc9d84
356]
357[tests: bump up timeout on a test that timed out on draco
358zooko@zooko.com**20090610044628
359 Ignore-this: f598b98cbae44dc947937c6ca54c10cb
360]
361[tests: raise the timeout for test_cli since Zandr's ARM machine totally burst through the old one
362zooko@zooko.com**20090609210509]
363[test_cli.Backup: increase timeout massively, it takes 1200s on zandr's ARM linkstation
364warner@lothar.com**20090609052801]
365[tests: double the timeouts on some tests which time-out on Francois's box
366zooko@zooko.com**20090609021753
367 Ignore-this: b2727b04402f24a9b9123d2f84068106
368]
369[tests: bump up timeouts so that the tests can finish before timeout on Francois's little arm box
370zooko@zooko.com**20090608225557
371 Ignore-this: fb83698338b2f12546cd3e1dcb896d34
372]
373[tests: increase timeouts on some other tests that timed-out on Francois's arm box
374zooko@zooko.com**20090605143437
375 Ignore-this: 2903cc20d914fc074c8d7a6c47740ba6
376]
377[tests: bump up the timeout on a bunch of tests that took longer than the default timeout (120s) on François Lenny-armv5tel
378zooko@zooko.com**20090605031444
379 Ignore-this: 84d67849b1f8edc88bf7001e31b5f7f3
380]
381[backup: remove the --no-backupdb command, the handling of "can't import sqlite", and the related tests, and change an error message to more correctly indicate failure to load the database from disk rather than failure to import sqlite module
382zooko@zooko.com**20090604173131
383 Ignore-this: 8200a9fdfc49243c280ecd1d0c44fa19
384 Fixes #728.
385]
386[setup: require pysqlite >= v2.0.5. if we are running on Python < 2.5
387zooko@zooko.com**20090604154548
388 Ignore-this: cf04f46079821df209d01dad2e24b40b
389]
390[setup: add pysqlite and sqlite to get_package_versions()
391zooko@zooko.com**20090604153728
392 Ignore-this: a1dea7fabeab2b08fb0d8d462facdb4d
393]
394[more refactoring: move get_all_serverids() and get_nickname_for_serverid() from Client to storage_broker
395warner@lothar.com**20090602030750]
396[more storage_broker refactoring: downloader gets a broker instead of a client,
397warner@lothar.com**20090602022511
398 use Client.get_storage_broker() accessor instead of direct attribute access.
399]
400[test_runner.py: remove test_client_no_noise: the issue in question is
401warner@lothar.com**20090601225007
402 ticketed in http://divmod.org/trac/ticket/2830 and doesn't need a Tahoe-side
403 change, plus this test fails on win32 for unrelated reasons (and test_client
404 is the place to think about the win32 issue).
405]
406[remove plaintext-hashing code from the helper interface, to close #722
407warner@lothar.com**20090601224916
408 and deny the Helper the ability to mount a partial-information-guessing
409 attack. This will probably break compatibility between new clients and very
410 old (pre-1.0) helpers.
411]
412[start to factor server-connection-management into a distinct 'StorageServerFarmBroker' object, separate from the client and the introducer. This is the starting point for #467: static server selection
413warner@lothar.com**20090601210604]
414[mutable: catch and display first error, so code bugs which break all servers get displayed better
415warner@lothar.com**20090601210407]
416[misc/run-with-pythonpath.py: exec() the child (on unix), to remove the intermediate process
417warner@lothar.com**20090601210137]
418[docs: small edit to about.html
419zooko@zooko.com**20090528233422
420 Ignore-this: 1cfbb1f8426ed6d63b2d3952e4464ddc
421]
422[docs: add links to Tahoe-LAFS for Paranoids and Tahoe-LAFS for Corporates in about.html
423zooko@zooko.com**20090528232717
424 Ignore-this: 7b70baa700d6b6f6e9ceec4132efe5
425]
426[docs: edit about.html and include network-and-reliance-topology.png (loaded from http://allmydata.org )
427zooko@zooko.com**20090527150916
428 Ignore-this: 44adc61cde8ced8be2f0a7dfc7d95dad
429]
430[docs: a few more edits to network-and-reliance-topology.svg
431zooko@zooko.com**20090527150458
432 Ignore-this: 2eac8c33fe71be25ff809b399c6193c1
433]
434[docs: update network-and-reliance-topology.svg for beauty and clarity
435zooko@zooko.com**20090527031123
436 Ignore-this: 5510914849771900ac29b4312470d84
437]
438[docs: update NEWS, relnotes.txt, CREDITS to mention WUI Style
439zooko@zooko.com**20090526233654
440 Ignore-this: 72d16ec833bc4a22af23d29ea1d5ff8b
441]
442[Modify markup of Tahoe web pages to be more amenable to styling; some minor changes of wording.
443Kevin Reid <kpreid@mac.com>**20090526232545
444 Ignore-this: 8845937f0df6c7ddc07abe3211428a6f
445]
446[Tweak wording in directory page: not-read-only is "modifiable", mention creating a directory _in this directory_.
447Kevin Reid <kpreid@mac.com>**20090526232414
448 Ignore-this: f006ec52ba2051802e025a60bcface56
449]
450[Comment on duplication of code/markup found during styling project.
451Kevin Reid <kpreid@mac.com>**20090503203442
452 Ignore-this: a4b7f9f0ab57d2c03be9ba761be8d854
453]
454[Add CSS styles to spiff up the Tahoe WUI's appearance, particularly the welcome page and directories.
455Kevin Reid <kpreid@mac.com>**20090503203142
456 Ignore-this: 5c50af241c1a958b5180ef2b6a49f626
457]
458[Link all Tahoe web pages to the /tahoe_css stylesheet which already exists.
459Kevin Reid <kpreid@mac.com>**20090503202533
460 Ignore-this: 2ea8d14d3168b9502cf39d5ea3f2f2a8
461]
462[Fix broken link from Provisioning to Reliability page.
463Kevin Reid <kpreid@mac.com>**20090501191050
464 Ignore-this: 56dc1a5e659b70cc02dc4df7b5d518cd
465]
466[docs: network-and-reliance-topology.svg: nicer server icons, mv out of the "specifications" subdir
467zooko@zooko.com**20090526165842
468 Ignore-this: 8f47ab3a0ab782c1f0d46e10bcaebe5b
469]
470[docs: update network-and-reliance-topology.svg
471zooko@zooko.com**20090526163105
472 Ignore-this: 2b864b4ed8743d4a15dfbb7eff3fa561
473]
474[accounting-overview.txt: more edits
475warner@lothar.com**20090523190359]
476[accounting-overview.txt: small edits
477warner@lothar.com**20090523184011]
478[_auto_deps.py: require foolscap-0.4.1, which adds an important fix for py2.4
479warner@lothar.com**20090523011103]
480[immutable/encode.py: tolerate immediate _remove_shareholder by copying the
481warner@lothar.com**20090522184424
482 landlord list before iterating over it. This can probably only happen in unit
483 tests, but cleaning it up makes certain test failures easier to analyze.
484]
485[switch to using RemoteException instead of 'wrapped' RemoteReferences. Should fix #653, the rref-EQ problem
486warner@lothar.com**20090522004632]
487[switch all foolscap imports to use foolscap.api or foolscap.logging
488warner@lothar.com**20090522003823]
489[_auto_deps.py: bump our foolscap dependency to 0.4.0, since I'm about to start using its new features
490warner@lothar.com**20090522002100]
491[test_runner.py: fix minor typo
492warner@lothar.com**20090520033620]
493[setup: fix bug (wrong import) in error message, as noticed by pyflakes
494zooko@zooko.com**20090519195642
495 Ignore-this: f1b9f8c00b46c1b5f2f20e5fc424f341
496]
497[setup: fix trivial bug in recent patch to test base64.py at startup
498zooko@zooko.com**20090519195129
499 Ignore-this: f6be038f74b53ca69e7109fe34adfbc
500]
501[setup: make Tahoe exit at startup with a useful error message if the base64.py module is buggy (fixes part of #710)
502zooko@zooko.com**20090519194555
503 Ignore-this: aa4d398235ddca8d417d61c9688e154
504]
505[test_introducer.py: add a test for the python2.4.0/2.4.1 bug in base64.b32decode
506warner@lothar.com**20090519034101]
507[immutable WriteBucketProxy: use pipeline to speed up uploads by overlapping roundtrips, for #392
508warner@lothar.com**20090518234422]
509[util/pipeline.py: new utility class to manage size-limited work pipelines, for #392
510warner@lothar.com**20090518234326]
511[docs: add a diagram that I'm about to show to the Boulder Linux Users Group: network-and-reliance-topology.svg
512zooko@zooko.com**20090514232059
513 Ignore-this: 2420c0a7c254c9f0f2349d9130490d33
514]
515[tests: mark test_runner as coded in utf-8 instead of ascii
516zooko@zooko.com**20090507223151
517 Ignore-this: ccf1ba9e5a9b53602701a36f9fdb545e
518]
519[tests: raise timeout on test_runner.RunNode.test_introducer from 120s to 240s, since it hit the 120s time-out on François Lenny-armv5tel
520zooko@zooko.com**20090507215012
521 Ignore-this: ba18fe6832ba255d4971e8f623ed7da5
522]
523[setup: fix comment in setup.py
524zooko@zooko.com**20090507215003
525 Ignore-this: c46ef664630d52733138ef7fbc551c1c
526]
527[docs: how_to_make_a_tahoe_release.txt: a couple of small edits
528zooko@zooko.com**20090507214932
529 Ignore-this: ae92aa835ad369f4b9e6e49d681957a3
530]
531[.darcs-boringfile: also ignore .gitignore
532warner@allmydata.com**20090415210550
533 Ignore-this: d29db314a1e506f6240859559436b4c3
534]
535[.darcs-boringfile: ignore .git, I'm starting to play around with it
536warner@allmydata.com**20090415205929
537 Ignore-this: 89234453516483c9586cd6e1351e88b5
538]
539[fix quicktest: stop using setuptools, add misc/run-with-pythonpath.py, to make it run faster
540warner@lothar.com**20090414201400]
541[TAG allmydata-tahoe-1.4.1
542zooko@zooko.com**20090414025636
543 Ignore-this: de78fc32364c83e9f4e26b5abcfdea4a
544]
545Patch bundle hash:
5468e2b3cdd811bdc8273722a5c9e5486c6994f4fc0