1 | Sat 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 | |
---|
8 | Sat Jun 20 14:31:30 PDT 2009 kevan@isnotajoke.com |
---|
9 | * remove upper limit on SDMF filesize |
---|
10 | |
---|
11 | New patches: |
---|
12 | |
---|
13 | [change max filesize limit tests |
---|
14 | kevan@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 | ] { |
---|
21 | hunk ./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 | |
---|
32 | hunk ./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): |
---|
45 | hunk ./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 | |
---|
55 | hunk ./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 |
---|
64 | hunk ./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")) |
---|
76 | hunk ./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 |
---|
87 | kevan@isnotajoke.com**20090620213130 |
---|
88 | Ignore-this: 5bc48c7421c73827909a17e651799d0c |
---|
89 | ] { |
---|
90 | hunk ./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 |
---|
107 | hunk ./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() |
---|
118 | hunk ./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 | |
---|
129 | Context: |
---|
130 | |
---|
131 | [Makefile: add jaunty support, rearrange debian sections in order of release |
---|
132 | warner@lothar.com**20090618050502] |
---|
133 | [test_util: add known-answer tests for hashutil tags |
---|
134 | warner@lothar.com**20090618045709] |
---|
135 | [tests: bump up a timeout that expired on Zandr's box |
---|
136 | zooko@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. |
---|
140 | zooko@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. |
---|
144 | zooko@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 |
---|
148 | zooko@zooko.com**20090612000920 |
---|
149 | Ignore-this: 7d314b8334cfa3f65f9635e3d3eb727e |
---|
150 | ] |
---|
151 | [setup: edit install.html to warn Windows users away from Python v2.6 |
---|
152 | zooko@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 |
---|
156 | zooko@zooko.com**20090611221129 |
---|
157 | Ignore-this: 14dbb9840587797f848226fdb3645c08 |
---|
158 | ] |
---|
159 | [setup: run the same "make quicktest" on Windows as on non-Windows |
---|
160 | zooko@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 |
---|
165 | zooko@zooko.com**20090610161043 |
---|
166 | Ignore-this: 2b3c556c5166a8267b4b15664d3aadfb |
---|
167 | ] |
---|
168 | [test: multiple by 10 or so all timeouts that Zandr's ARM box just overran |
---|
169 | zooko@zooko.com**20090610125639 |
---|
170 | Ignore-this: bf62f063ab46814fd78de55a5fbc9d84 |
---|
171 | ] |
---|
172 | [tests: bump up timeout on a test that timed out on draco |
---|
173 | zooko@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 |
---|
177 | zooko@zooko.com**20090609210509] |
---|
178 | [test_cli.Backup: increase timeout massively, it takes 1200s on zandr's ARM linkstation |
---|
179 | warner@lothar.com**20090609052801] |
---|
180 | [tests: double the timeouts on some tests which time-out on Francois's box |
---|
181 | zooko@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 |
---|
185 | zooko@zooko.com**20090608225557 |
---|
186 | Ignore-this: fb83698338b2f12546cd3e1dcb896d34 |
---|
187 | ] |
---|
188 | [tests: increase timeouts on some other tests that timed-out on Francois's arm box |
---|
189 | zooko@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 |
---|
193 | zooko@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 |
---|
197 | zooko@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 |
---|
202 | zooko@zooko.com**20090604154548 |
---|
203 | Ignore-this: cf04f46079821df209d01dad2e24b40b |
---|
204 | ] |
---|
205 | [setup: add pysqlite and sqlite to get_package_versions() |
---|
206 | zooko@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 |
---|
210 | warner@lothar.com**20090602030750] |
---|
211 | [more storage_broker refactoring: downloader gets a broker instead of a client, |
---|
212 | warner@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 |
---|
216 | warner@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 |
---|
222 | warner@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 |
---|
228 | warner@lothar.com**20090601210604] |
---|
229 | [mutable: catch and display first error, so code bugs which break all servers get displayed better |
---|
230 | warner@lothar.com**20090601210407] |
---|
231 | [misc/run-with-pythonpath.py: exec() the child (on unix), to remove the intermediate process |
---|
232 | warner@lothar.com**20090601210137] |
---|
233 | [docs: small edit to about.html |
---|
234 | zooko@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 |
---|
238 | zooko@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 ) |
---|
242 | zooko@zooko.com**20090527150916 |
---|
243 | Ignore-this: 44adc61cde8ced8be2f0a7dfc7d95dad |
---|
244 | ] |
---|
245 | [docs: a few more edits to network-and-reliance-topology.svg |
---|
246 | zooko@zooko.com**20090527150458 |
---|
247 | Ignore-this: 2eac8c33fe71be25ff809b399c6193c1 |
---|
248 | ] |
---|
249 | [docs: update network-and-reliance-topology.svg for beauty and clarity |
---|
250 | zooko@zooko.com**20090527031123 |
---|
251 | Ignore-this: 5510914849771900ac29b4312470d84 |
---|
252 | ] |
---|
253 | [docs: update NEWS, relnotes.txt, CREDITS to mention WUI Style |
---|
254 | zooko@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. |
---|
258 | Kevin 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_. |
---|
262 | Kevin Reid <kpreid@mac.com>**20090526232414 |
---|
263 | Ignore-this: f006ec52ba2051802e025a60bcface56 |
---|
264 | ] |
---|
265 | [Comment on duplication of code/markup found during styling project. |
---|
266 | Kevin 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. |
---|
270 | Kevin Reid <kpreid@mac.com>**20090503203142 |
---|
271 | Ignore-this: 5c50af241c1a958b5180ef2b6a49f626 |
---|
272 | ] |
---|
273 | [Link all Tahoe web pages to the /tahoe_css stylesheet which already exists. |
---|
274 | Kevin Reid <kpreid@mac.com>**20090503202533 |
---|
275 | Ignore-this: 2ea8d14d3168b9502cf39d5ea3f2f2a8 |
---|
276 | ] |
---|
277 | [Fix broken link from Provisioning to Reliability page. |
---|
278 | Kevin 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 |
---|
282 | zooko@zooko.com**20090526165842 |
---|
283 | Ignore-this: 8f47ab3a0ab782c1f0d46e10bcaebe5b |
---|
284 | ] |
---|
285 | [docs: update network-and-reliance-topology.svg |
---|
286 | zooko@zooko.com**20090526163105 |
---|
287 | Ignore-this: 2b864b4ed8743d4a15dfbb7eff3fa561 |
---|
288 | ] |
---|
289 | [accounting-overview.txt: more edits |
---|
290 | warner@lothar.com**20090523190359] |
---|
291 | [accounting-overview.txt: small edits |
---|
292 | warner@lothar.com**20090523184011] |
---|
293 | [_auto_deps.py: require foolscap-0.4.1, which adds an important fix for py2.4 |
---|
294 | warner@lothar.com**20090523011103] |
---|
295 | [immutable/encode.py: tolerate immediate _remove_shareholder by copying the |
---|
296 | warner@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 |
---|
301 | warner@lothar.com**20090522004632] |
---|
302 | [switch all foolscap imports to use foolscap.api or foolscap.logging |
---|
303 | warner@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 |
---|
305 | warner@lothar.com**20090522002100] |
---|
306 | [test_runner.py: fix minor typo |
---|
307 | warner@lothar.com**20090520033620] |
---|
308 | [setup: fix bug (wrong import) in error message, as noticed by pyflakes |
---|
309 | zooko@zooko.com**20090519195642 |
---|
310 | Ignore-this: f1b9f8c00b46c1b5f2f20e5fc424f341 |
---|
311 | ] |
---|
312 | [setup: fix trivial bug in recent patch to test base64.py at startup |
---|
313 | zooko@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) |
---|
317 | zooko@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 |
---|
321 | warner@lothar.com**20090519034101] |
---|
322 | [immutable WriteBucketProxy: use pipeline to speed up uploads by overlapping roundtrips, for #392 |
---|
323 | warner@lothar.com**20090518234422] |
---|
324 | [util/pipeline.py: new utility class to manage size-limited work pipelines, for #392 |
---|
325 | warner@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 |
---|
327 | zooko@zooko.com**20090514232059 |
---|
328 | Ignore-this: 2420c0a7c254c9f0f2349d9130490d33 |
---|
329 | ] |
---|
330 | [tests: mark test_runner as coded in utf-8 instead of ascii |
---|
331 | zooko@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 |
---|
335 | zooko@zooko.com**20090507215012 |
---|
336 | Ignore-this: ba18fe6832ba255d4971e8f623ed7da5 |
---|
337 | ] |
---|
338 | [setup: fix comment in setup.py |
---|
339 | zooko@zooko.com**20090507215003 |
---|
340 | Ignore-this: c46ef664630d52733138ef7fbc551c1c |
---|
341 | ] |
---|
342 | [docs: how_to_make_a_tahoe_release.txt: a couple of small edits |
---|
343 | zooko@zooko.com**20090507214932 |
---|
344 | Ignore-this: ae92aa835ad369f4b9e6e49d681957a3 |
---|
345 | ] |
---|
346 | [.darcs-boringfile: also ignore .gitignore |
---|
347 | warner@allmydata.com**20090415210550 |
---|
348 | Ignore-this: d29db314a1e506f6240859559436b4c3 |
---|
349 | ] |
---|
350 | [.darcs-boringfile: ignore .git, I'm starting to play around with it |
---|
351 | warner@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 |
---|
355 | warner@lothar.com**20090414201400] |
---|
356 | [TAG allmydata-tahoe-1.4.1 |
---|
357 | zooko@zooko.com**20090414025636 |
---|
358 | Ignore-this: de78fc32364c83e9f4e26b5abcfdea4a |
---|
359 | ] |
---|
360 | Patch bundle hash: |
---|
361 | dd7e9bb9e1eed21e3968c447dd304eb229df2f3c |
---|