Ticket #694: 694.txt

File 694.txt, 15.9 KB (added by kevan, at 2009-06-20T21:55:37Z)
Line 
1Sat Jun 20 14:28:22 PDT 2009  kevan@isnotajoke.com
2  * change max filesize limit tests
3 
4  Instead of testing to see that the previous SDMF filesize limit was being
5  obeyed, we now test to make sure that we can insert files larger than that
6  limit.
7
8Sat Jun 20 14:31:30 PDT 2009  kevan@isnotajoke.com
9  * remove upper limit on SDMF filesize
10
11New patches:
12
13[change max filesize limit tests
14kevan@isnotajoke.com**20090620212822
15 Ignore-this: 38e7c62a308c3c93e79df4bf72f4f675
16 
17 Instead of testing to see that the previous SDMF filesize limit was being
18 obeyed, we now test to make sure that we can insert files larger than that
19 limit.
20] {
21hunk ./src/allmydata/test/test_mutable.py 268
22     return res
23 
24 class Filenode(unittest.TestCase, testutil.ShouldFailMixin):
25+    # this used to be in Publish, but we removed the limit. Some of
26+    # these tests test whether the new code correctly allows files
27+    # larger than the limit.
28+    OLD_MAX_SEGMENT_SIZE = 3500000
29     def setUp(self):
30         self.client = FakeClient()
31 
32hunk ./src/allmydata/test/test_mutable.py 362
33         return d
34 
35     def test_create_with_too_large_contents(self):
36-        BIG = "a" * (Publish.MAX_SEGMENT_SIZE+1)
37-        d = self.shouldFail(FileTooLargeError, "too_large",
38-                            "SDMF is limited to one segment, and %d > %d" %
39-                            (len(BIG), Publish.MAX_SEGMENT_SIZE),
40-                            self.client.create_mutable_file, BIG)
41-        d.addCallback(lambda res: self.client.create_mutable_file("small"))
42+        BIG = "a" * (self.OLD_MAX_SEGMENT_SIZE + 1)
43+        d = self.client.create_mutable_file(BIG)
44         def _created(n):
45hunk ./src/allmydata/test/test_mutable.py 365
46-            return self.shouldFail(FileTooLargeError, "too_large_2",
47-                                   "SDMF is limited to one segment, and %d > %d" %
48-                                   (len(BIG), Publish.MAX_SEGMENT_SIZE),
49-                                   n.overwrite, BIG)
50+            d = n.overwrite(BIG)
51+            return d
52         d.addCallback(_created)
53         return d
54 
55hunk ./src/allmydata/test/test_mutable.py 387
56         def _error_modifier(old_contents, servermap, first_time):
57             raise ValueError("oops")
58         def _toobig_modifier(old_contents, servermap, first_time):
59-            return "b" * (Publish.MAX_SEGMENT_SIZE+1)
60+            return "b" * (self.OLD_MAX_SEGMENT_SIZE+1)
61         calls = []
62         def _ucw_error_modifier(old_contents, servermap, first_time):
63             # simulate an UncoordinatedWriteError once
64hunk ./src/allmydata/test/test_mutable.py 427
65             d.addCallback(lambda res: self.failUnlessEqual(res, "line1line2"))
66             d.addCallback(lambda res: self.failUnlessCurrentSeqnumIs(n, 2, "err"))
67 
68-            d.addCallback(lambda res:
69-                          self.shouldFail(FileTooLargeError, "toobig_modifier",
70-                                          "SDMF is limited to one segment",
71-                                          n.modify, _toobig_modifier))
72+
73             d.addCallback(lambda res: n.download_best_version())
74             d.addCallback(lambda res: self.failUnlessEqual(res, "line1line2"))
75             d.addCallback(lambda res: self.failUnlessCurrentSeqnumIs(n, 2, "big"))
76hunk ./src/allmydata/test/test_mutable.py 456
77             d.addCallback(lambda res: self.failUnlessEqual(res,
78                                                            "line1line2line3"))
79             d.addCallback(lambda res: self.failUnlessCurrentSeqnumIs(n, 4, "ucw"))
80-
81+            d.addCallback(lambda res: n.modify(_toobig_modifier))
82             return d
83         d.addCallback(_created)
84         return d
85}
86[remove upper limit on SDMF filesize
87kevan@isnotajoke.com**20090620213130
88 Ignore-this: 5bc48c7421c73827909a17e651799d0c
89] {
90hunk ./src/allmydata/mutable/publish.py 93
91     To make the initial publish, set servermap to None.
92     """
93 
94-    # we limit the segment size as usual to constrain our memory footprint.
95-    # The max segsize is higher for mutable files, because we want to support
96-    # dirnodes with up to 10k children, and each child uses about 330 bytes.
97-    # If you actually put that much into a directory you'll be using a
98-    # footprint of around 14MB, which is higher than we'd like, but it is
99-    # more important right now to support large directories than to make
100-    # memory usage small when you use them. Once we implement MDMF (with
101-    # multiple segments), we will drop this back down, probably to 128KiB.
102-    MAX_SEGMENT_SIZE = 3500000
103-
104     def __init__(self, filenode, servermap):
105         self._node = filenode
106         self._servermap = servermap
107hunk ./src/allmydata/mutable/publish.py 136
108         # 5: when enough responses are back, we're done
109 
110         self.log("starting publish, datalen is %s" % len(newdata))
111-        if len(newdata) > self.MAX_SEGMENT_SIZE:
112-            raise FileTooLargeError("SDMF is limited to one segment, and "
113-                                    "%d > %d" % (len(newdata),
114-                                                 self.MAX_SEGMENT_SIZE))
115         self._status.set_size(len(newdata))
116         self._status.set_status("Started")
117         self._started = time.time()
118hunk ./src/allmydata/mutable/publish.py 251
119         return self.done_deferred
120 
121     def setup_encoding_parameters(self):
122-        segment_size = min(self.MAX_SEGMENT_SIZE, len(self.newdata))
123+        segment_size = len(self.newdata)
124         # this must be a multiple of self.required_shares
125         segment_size = mathutil.next_multiple(segment_size,
126                                               self.required_shares)
127}
128
129Context:
130
131[Makefile: add jaunty support, rearrange debian sections in order of release
132warner@lothar.com**20090618050502]
133[test_util: add known-answer tests for hashutil tags
134warner@lothar.com**20090618045709]
135[tests: bump up a timeout that expired on Zandr's box
136zooko@zooko.com**20090613195703
137 Ignore-this: 853000f43665396b3734a99f72bd472d
138]
139[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.
140zooko@zooko.com**20090613160112
141 Ignore-this: 8359cc48ca1b8e2793e8b2afe2050cf4
142]
143[util: Brian's horrible hack to figure out how much localtime and utctime differ.  Now we'll see if it works on Windows.
144zooko@zooko.com**20090612204556
145 Ignore-this: 8c36431da4707da76472956c7750ecbd
146]
147[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
148zooko@zooko.com**20090612000920
149 Ignore-this: 7d314b8334cfa3f65f9635e3d3eb727e
150]
151[setup: edit install.html to warn Windows users away from Python v2.6
152zooko@zooko.com**20090611225506
153 Ignore-this: 89ad63eab49ede883ef92f2de5b5fc54
154]
155[util: fix time_format.iso_utc_time_to_seconds() so that it works even in London
156zooko@zooko.com**20090611221129
157 Ignore-this: 14dbb9840587797f848226fdb3645c08
158]
159[setup: run the same "make quicktest" on Windows as on non-Windows
160zooko@zooko.com**20090611193214
161 Ignore-this: d0c78377d3892373ec3d91e9e98bd8bd
162 I checked and it behaves about as well on Windows as the previous version did.
163]
164[tests: significantly increase timeouts that triggered on Zandr's ARM box
165zooko@zooko.com**20090610161043
166 Ignore-this: 2b3c556c5166a8267b4b15664d3aadfb
167]
168[test: multiple by 10 or so all timeouts that Zandr's ARM box just overran
169zooko@zooko.com**20090610125639
170 Ignore-this: bf62f063ab46814fd78de55a5fbc9d84
171]
172[tests: bump up timeout on a test that timed out on draco
173zooko@zooko.com**20090610044628
174 Ignore-this: f598b98cbae44dc947937c6ca54c10cb
175]
176[tests: raise the timeout for test_cli since Zandr's ARM machine totally burst through the old one
177zooko@zooko.com**20090609210509]
178[test_cli.Backup: increase timeout massively, it takes 1200s on zandr's ARM linkstation
179warner@lothar.com**20090609052801]
180[tests: double the timeouts on some tests which time-out on Francois's box
181zooko@zooko.com**20090609021753
182 Ignore-this: b2727b04402f24a9b9123d2f84068106
183]
184[tests: bump up timeouts so that the tests can finish before timeout on Francois's little arm box
185zooko@zooko.com**20090608225557
186 Ignore-this: fb83698338b2f12546cd3e1dcb896d34
187]
188[tests: increase timeouts on some other tests that timed-out on Francois's arm box
189zooko@zooko.com**20090605143437
190 Ignore-this: 2903cc20d914fc074c8d7a6c47740ba6
191]
192[tests: bump up the timeout on a bunch of tests that took longer than the default timeout (120s) on François Lenny-armv5tel
193zooko@zooko.com**20090605031444
194 Ignore-this: 84d67849b1f8edc88bf7001e31b5f7f3
195]
196[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
197zooko@zooko.com**20090604173131
198 Ignore-this: 8200a9fdfc49243c280ecd1d0c44fa19
199 Fixes #728.
200]
201[setup: require pysqlite >= v2.0.5. if we are running on Python < 2.5
202zooko@zooko.com**20090604154548
203 Ignore-this: cf04f46079821df209d01dad2e24b40b
204]
205[setup: add pysqlite and sqlite to get_package_versions()
206zooko@zooko.com**20090604153728
207 Ignore-this: a1dea7fabeab2b08fb0d8d462facdb4d
208]
209[more refactoring: move get_all_serverids() and get_nickname_for_serverid() from Client to storage_broker
210warner@lothar.com**20090602030750]
211[more storage_broker refactoring: downloader gets a broker instead of a client,
212warner@lothar.com**20090602022511
213 use Client.get_storage_broker() accessor instead of direct attribute access.
214]
215[test_runner.py: remove test_client_no_noise: the issue in question is
216warner@lothar.com**20090601225007
217 ticketed in http://divmod.org/trac/ticket/2830 and doesn't need a Tahoe-side
218 change, plus this test fails on win32 for unrelated reasons (and test_client
219 is the place to think about the win32 issue).
220]
221[remove plaintext-hashing code from the helper interface, to close #722
222warner@lothar.com**20090601224916
223 and deny the Helper the ability to mount a partial-information-guessing
224 attack. This will probably break compatibility between new clients and very
225 old (pre-1.0) helpers.
226]
227[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
228warner@lothar.com**20090601210604]
229[mutable: catch and display first error, so code bugs which break all servers get displayed better
230warner@lothar.com**20090601210407]
231[misc/run-with-pythonpath.py: exec() the child (on unix), to remove the intermediate process
232warner@lothar.com**20090601210137]
233[docs: small edit to about.html
234zooko@zooko.com**20090528233422
235 Ignore-this: 1cfbb1f8426ed6d63b2d3952e4464ddc
236]
237[docs: add links to Tahoe-LAFS for Paranoids and Tahoe-LAFS for Corporates in about.html
238zooko@zooko.com**20090528232717
239 Ignore-this: 7b70baa700d6b6f6e9ceec4132efe5
240]
241[docs: edit about.html and include network-and-reliance-topology.png (loaded from http://allmydata.org )
242zooko@zooko.com**20090527150916
243 Ignore-this: 44adc61cde8ced8be2f0a7dfc7d95dad
244]
245[docs: a few more edits to network-and-reliance-topology.svg
246zooko@zooko.com**20090527150458
247 Ignore-this: 2eac8c33fe71be25ff809b399c6193c1
248]
249[docs: update network-and-reliance-topology.svg for beauty and clarity
250zooko@zooko.com**20090527031123
251 Ignore-this: 5510914849771900ac29b4312470d84
252]
253[docs: update NEWS, relnotes.txt, CREDITS to mention WUI Style
254zooko@zooko.com**20090526233654
255 Ignore-this: 72d16ec833bc4a22af23d29ea1d5ff8b
256]
257[Modify markup of Tahoe web pages to be more amenable to styling; some minor changes of wording.
258Kevin Reid <kpreid@mac.com>**20090526232545
259 Ignore-this: 8845937f0df6c7ddc07abe3211428a6f
260]
261[Tweak wording in directory page: not-read-only is "modifiable", mention creating a directory _in this directory_.
262Kevin Reid <kpreid@mac.com>**20090526232414
263 Ignore-this: f006ec52ba2051802e025a60bcface56
264]
265[Comment on duplication of code/markup found during styling project.
266Kevin Reid <kpreid@mac.com>**20090503203442
267 Ignore-this: a4b7f9f0ab57d2c03be9ba761be8d854
268]
269[Add CSS styles to spiff up the Tahoe WUI's appearance, particularly the welcome page and directories.
270Kevin Reid <kpreid@mac.com>**20090503203142
271 Ignore-this: 5c50af241c1a958b5180ef2b6a49f626
272]
273[Link all Tahoe web pages to the /tahoe_css stylesheet which already exists.
274Kevin Reid <kpreid@mac.com>**20090503202533
275 Ignore-this: 2ea8d14d3168b9502cf39d5ea3f2f2a8
276]
277[Fix broken link from Provisioning to Reliability page.
278Kevin Reid <kpreid@mac.com>**20090501191050
279 Ignore-this: 56dc1a5e659b70cc02dc4df7b5d518cd
280]
281[docs: network-and-reliance-topology.svg: nicer server icons, mv out of the "specifications" subdir
282zooko@zooko.com**20090526165842
283 Ignore-this: 8f47ab3a0ab782c1f0d46e10bcaebe5b
284]
285[docs: update network-and-reliance-topology.svg
286zooko@zooko.com**20090526163105
287 Ignore-this: 2b864b4ed8743d4a15dfbb7eff3fa561
288]
289[accounting-overview.txt: more edits
290warner@lothar.com**20090523190359]
291[accounting-overview.txt: small edits
292warner@lothar.com**20090523184011]
293[_auto_deps.py: require foolscap-0.4.1, which adds an important fix for py2.4
294warner@lothar.com**20090523011103]
295[immutable/encode.py: tolerate immediate _remove_shareholder by copying the
296warner@lothar.com**20090522184424
297 landlord list before iterating over it. This can probably only happen in unit
298 tests, but cleaning it up makes certain test failures easier to analyze.
299]
300[switch to using RemoteException instead of 'wrapped' RemoteReferences. Should fix #653, the rref-EQ problem
301warner@lothar.com**20090522004632]
302[switch all foolscap imports to use foolscap.api or foolscap.logging
303warner@lothar.com**20090522003823]
304[_auto_deps.py: bump our foolscap dependency to 0.4.0, since I'm about to start using its new features
305warner@lothar.com**20090522002100]
306[test_runner.py: fix minor typo
307warner@lothar.com**20090520033620]
308[setup: fix bug (wrong import) in error message, as noticed by pyflakes
309zooko@zooko.com**20090519195642
310 Ignore-this: f1b9f8c00b46c1b5f2f20e5fc424f341
311]
312[setup: fix trivial bug in recent patch to test base64.py at startup
313zooko@zooko.com**20090519195129
314 Ignore-this: f6be038f74b53ca69e7109fe34adfbc
315]
316[setup: make Tahoe exit at startup with a useful error message if the base64.py module is buggy (fixes part of #710)
317zooko@zooko.com**20090519194555
318 Ignore-this: aa4d398235ddca8d417d61c9688e154
319]
320[test_introducer.py: add a test for the python2.4.0/2.4.1 bug in base64.b32decode
321warner@lothar.com**20090519034101]
322[immutable WriteBucketProxy: use pipeline to speed up uploads by overlapping roundtrips, for #392
323warner@lothar.com**20090518234422]
324[util/pipeline.py: new utility class to manage size-limited work pipelines, for #392
325warner@lothar.com**20090518234326]
326[docs: add a diagram that I'm about to show to the Boulder Linux Users Group: network-and-reliance-topology.svg
327zooko@zooko.com**20090514232059
328 Ignore-this: 2420c0a7c254c9f0f2349d9130490d33
329]
330[tests: mark test_runner as coded in utf-8 instead of ascii
331zooko@zooko.com**20090507223151
332 Ignore-this: ccf1ba9e5a9b53602701a36f9fdb545e
333]
334[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
335zooko@zooko.com**20090507215012
336 Ignore-this: ba18fe6832ba255d4971e8f623ed7da5
337]
338[setup: fix comment in setup.py
339zooko@zooko.com**20090507215003
340 Ignore-this: c46ef664630d52733138ef7fbc551c1c
341]
342[docs: how_to_make_a_tahoe_release.txt: a couple of small edits
343zooko@zooko.com**20090507214932
344 Ignore-this: ae92aa835ad369f4b9e6e49d681957a3
345]
346[.darcs-boringfile: also ignore .gitignore
347warner@allmydata.com**20090415210550
348 Ignore-this: d29db314a1e506f6240859559436b4c3
349]
350[.darcs-boringfile: ignore .git, I'm starting to play around with it
351warner@allmydata.com**20090415205929
352 Ignore-this: 89234453516483c9586cd6e1351e88b5
353]
354[fix quicktest: stop using setuptools, add misc/run-with-pythonpath.py, to make it run faster
355warner@lothar.com**20090414201400]
356[TAG allmydata-tahoe-1.4.1
357zooko@zooko.com**20090414025636
358 Ignore-this: de78fc32364c83e9f4e26b5abcfdea4a
359]
360Patch bundle hash:
361dd7e9bb9e1eed21e3968c447dd304eb229df2f3c