Merge lp:~nataliabidart/ubuntuone-client/yield-around into lp:ubuntuone-client

Proposed by Natalia Bidart
Status: Merged
Approved by: Natalia Bidart
Approved revision: 838
Merged at revision: 836
Proposed branch: lp:~nataliabidart/ubuntuone-client/yield-around
Merge into: lp:ubuntuone-client
Diff against target: 2089 lines (+383/-282)
10 files modified
tests/eventlog/test_zg_listener.py (+9/-7)
tests/platform/linux/test_dbus.py (+150/-106)
tests/platform/linux/test_filesystem_notifications.py (+14/-7)
tests/platform/linux/test_tools.py (+4/-3)
tests/syncdaemon/test_eq_inotify.py (+10/-7)
tests/syncdaemon/test_fsm.py (+113/-84)
tests/syncdaemon/test_localrescan.py (+61/-44)
tests/syncdaemon/test_status_listener.py (+5/-5)
tests/syncdaemon/test_sync.py (+8/-9)
tests/syncdaemon/test_u1sdtool.py (+9/-10)
To merge this branch: bzr merge lp:~nataliabidart/ubuntuone-client/yield-around
Reviewer Review Type Date Requested Status
Roberto Alsina (community) Approve
Eric Casteleijn (community) Approve
Review via email: mp+48504@code.launchpad.net

Commit message

- volume_manager.add_share returns a deferred now, yield on it (part of bug LP: #708335).

- Fix tests that were finishing before the dbus call was completed (LP: #689677).

To post a comment you must log in.
837. By Natalia Bidart

Merged trunk in.

838. By Natalia Bidart

ZG tests should also yield on vm.add_share.

Revision history for this message
Eric Casteleijn (thisfred) wrote :

Looks good!

review: Approve
Revision history for this message
Roberto Alsina (ralsina) wrote :

+1

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'tests/eventlog/test_zg_listener.py'
2--- tests/eventlog/test_zg_listener.py 2011-01-28 15:23:20 +0000
3+++ tests/eventlog/test_zg_listener.py 2011-02-03 17:29:42 +0000
4@@ -213,7 +213,7 @@
5 self.main.fs.set_node_id(path, sample_node_id)
6 share = Shared(path=path, volume_id=sample_share_id,
7 node_id=sample_node_id, other_username=fake_username)
8- self.vm.add_shared(share)
9+ yield self.vm.add_shared(share)
10
11 def fake_delete_share(share_id):
12 """Fake delete_share."""
13@@ -250,6 +250,7 @@
14 self.assertEqual(other_user.manifestation,
15 MANIFESTATION_U1_CONTACT_DATA_OBJECT)
16
17+ @defer.inlineCallbacks
18 def test_share_accepted_is_logged(self):
19 """Test that an accepted share event is logged."""
20 # initialize the the root
21@@ -260,7 +261,7 @@
22 share_path = os.path.join(self.shares_dir, 'fake_share')
23 share = Share(path=share_path, volume_id='volume_id', node_id="node_id",
24 other_username=fake_username)
25- self.vm.add_share(share)
26+ yield self.vm.add_share(share)
27
28 self.assertEqual(len(self.listener.zg.events), 1)
29 event = self.listener.zg.events[0]
30@@ -300,7 +301,8 @@
31 fake_username,
32 u'visible_name', 'Read')
33
34- self.main.vm.add_share(Share.from_notify_holder(holder, share_path))
35+ share = Share.from_notify_holder(holder, share_path)
36+ yield self.main.vm.add_share(share)
37 self._listen_for('VM_VOLUME_DELETED', d.callback, 1, collect=True)
38 self.main.event_q.push('SV_SHARE_DELETED', share_id=holder.share_id)
39 yield d
40@@ -1092,8 +1094,8 @@
41 public_url = 'http://example.com/foo.mp3'
42
43 share_path = os.path.join(self.shares_dir, 'share')
44- self.main.vm.add_share(Share(path=share_path, volume_id='share',
45- other_username='other username'))
46+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share',
47+ other_username='other username'))
48 path = os.path.join(share_path, "foo.mp3")
49 self.main.fs.create(path, str(share_id))
50 self.main.fs.set_node_id(path, str(node_id))
51@@ -1132,8 +1134,8 @@
52 public_url = 'http://example.com/foo.mp3'
53
54 share_path = os.path.join(self.shares_dir, 'share')
55- self.main.vm.add_share(Share(path=share_path, volume_id='share',
56- other_username='other username'))
57+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share',
58+ other_username='other username'))
59 path = os.path.join(share_path, "foo.mp3")
60 self.main.fs.create(path, str(share_id))
61 self.main.fs.set_node_id(path, str(node_id))
62
63=== modified file 'tests/platform/linux/test_dbus.py'
64--- tests/platform/linux/test_dbus.py 2011-02-02 13:10:59 +0000
65+++ tests/platform/linux/test_dbus.py 2011-02-03 17:29:42 +0000
66@@ -424,10 +424,11 @@
67
68 return d
69
70+ @defer.inlineCallbacks
71 def test_get_metadata_path(self):
72 """Test the FileSystem Object, getting MD by path."""
73 share_path = os.path.join(self.shares_dir, 'share')
74- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
75+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
76 path = os.path.join(share_path, "foo")
77 self.fs_manager.create(path, "share")
78 self.fs_manager.set_node_id(path, "node_id")
79@@ -446,12 +447,13 @@
80 client = DBusClient(self.bus, '/filesystem', DBUS_IFACE_FS_NAME)
81 client.call_method('get_metadata', path, reply_handler=handler,
82 error_handler=self.error_handler)
83- return d
84+ yield d
85
86+ @defer.inlineCallbacks
87 def test_get_metadata_path_symlink(self):
88 """Test the FileSystem Object, getting MD by path in a symlink."""
89 share_path = os.path.join(self.shares_dir, 'share')
90- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
91+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
92 path = os.path.join(share_path, "foo")
93 symlink_path = os.path.join(self.shares_dir, "share_symlink")
94 share_context = self.main.fs._enable_share_write('share',
95@@ -468,7 +470,8 @@
96
97 def callback(result):
98 """Callback to check the result."""
99- self.assertEquals(os.path.join(symlink_path, 'foo'), str(result['path']))
100+ self.assertEquals(os.path.join(symlink_path, 'foo'),
101+ str(result['path']))
102 self.assertEquals('share', result['share_id'])
103 self.assertEquals('node_id', result['node_id'])
104
105@@ -477,12 +480,13 @@
106 client.call_method('get_metadata', os.path.join(symlink_path, 'foo'),
107 reply_handler=handler,
108 error_handler=self.error_handler)
109- return d
110+ yield d
111
112+ @defer.inlineCallbacks
113 def test_get_metadata_share_node(self):
114 """Test the FileSystem Object, getting MD by share and node."""
115 share_path = os.path.join(self.shares_dir, 'share')
116- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
117+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
118 path = os.path.join(share_path, "foo")
119 self.fs_manager.create(path, "share")
120 self.fs_manager.set_node_id(path, "node_id")
121@@ -502,7 +506,7 @@
122 client.call_method('get_metadata_by_node', 'share', 'node_id',
123 reply_handler=handler,
124 error_handler=self.error_handler)
125- return d
126+ yield d
127
128 def test_push_event(self):
129 """Test the exposed method: push_event."""
130@@ -540,6 +544,7 @@
131 self.event_q.add_empty_event_queue_callback(empty_queue_cb)
132 return push_deferred
133
134+ @defer.inlineCallbacks
135 def test_waiting_content(self):
136 """Test Status.waiting_content.
137
138@@ -552,7 +557,8 @@
139
140 # prepare the VM so it lies for us
141 share_path = os.path.join(self.shares_dir, 'share')
142- self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
143+ share = Share(path=share_path, volume_id='share_id')
144+ yield self.main.vm.add_share(share)
145 b_path = os.path.join(share_path, "path_b")
146 c_path = os.path.join(share_path, "path_c")
147 self.fs_manager.create(b_path, "share_id")
148@@ -582,13 +588,15 @@
149 client.call_method('waiting_content',
150 reply_handler=waiting_handler,
151 error_handler=self.error_handler)
152- return d
153+ yield d
154
155+ @defer.inlineCallbacks
156 def test_waiting_metadata(self):
157 """Test Status.waiting_metadata with fake data in the AQ."""
158 # prepare the VM so it lies for us
159 share_path = os.path.join(self.shares_dir, 'share')
160- self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
161+ share = Share(path=share_path, volume_id='share_id')
162+ yield self.main.vm.add_share(share)
163 b_path = os.path.join(share_path, "path_b")
164 c_path = os.path.join(share_path, "path_c")
165 d_path = os.path.join(share_path, "path_d")
166@@ -635,15 +643,17 @@
167 client.call_method('waiting_metadata',
168 reply_handler=waiting_handler,
169 error_handler=self.error_handler)
170- return d
171+ yield d
172
173+ @defer.inlineCallbacks
174 def test_get_metadata_and_quick_tree_not_synced(self):
175 """Test Status.get_metadata_and_quick_tree_status.
176
177 Fake data in the AQ is used.
178 """
179 share_path = os.path.join(self.shares_dir, 'share')
180- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
181+ share = Share(path=share_path, volume_id='share')
182+ yield self.main.vm.add_share(share)
183 path = os.path.join(share_path, u'ñoño'.encode('utf-8'))
184 self.fs_manager.create(path, "share")
185 self.fs_manager.set_node_id(path, "node_id")
186@@ -669,15 +679,16 @@
187 client.call_method('get_metadata_and_quick_tree_synced',
188 path, reply_handler=handler,
189 error_handler=self.error_handler)
190- return d
191+ yield d
192
193+ @defer.inlineCallbacks
194 def test_get_metadata_and_quick_tree_no_blow_up_kthxbye(self):
195 """Test Status.get_metadata_and_quick_tree_status.
196
197 Fake data in the AQ is used.
198 """
199 share_path = os.path.join(self.shares_dir, 'share')
200- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
201+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
202 path = os.path.join(share_path, u'ñoño'.encode('utf-8'))
203 self.fs_manager.create(path, "share")
204 self.fs_manager.set_node_id(path, "node_id")
205@@ -704,15 +715,16 @@
206 client.call_method('get_metadata_and_quick_tree_synced',
207 path, reply_handler=handler,
208 error_handler=self.error_handler)
209- return d
210+ yield d
211
212+ @defer.inlineCallbacks
213 def test_get_metadata_and_quick_tree_not_synced_2(self):
214 """Test Status.get_metadata_and_quick_tree_status.
215
216 Fake data in the AQ is used.
217 """
218 share_path = os.path.join(self.shares_dir, 'share')
219- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
220+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
221 path = os.path.join(share_path, u'ñoño'.encode('utf-8'))
222 self.fs_manager.create(path, "share")
223 self.fs_manager.set_node_id(path, "node_id")
224@@ -738,13 +750,14 @@
225 client.call_method('get_metadata_and_quick_tree_synced',
226 path, reply_handler=handler,
227 error_handler=self.error_handler)
228- return d
229+ yield d
230
231+ @defer.inlineCallbacks
232 def test_get_metadata_and_quick_tree_synced(self):
233 """Test Status.get_metadata_and_quick_tree_status
234 without fake data in the AQ."""
235 share_path = os.path.join(self.shares_dir, 'share')
236- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
237+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
238 path = os.path.join(share_path, u'ñoño'.encode('utf-8'))
239 self.fs_manager.create(path, "share")
240 self.fs_manager.set_node_id(path, "node_id")
241@@ -766,13 +779,14 @@
242 client.call_method('get_metadata_and_quick_tree_synced',
243 path, reply_handler=handler,
244 error_handler=self.error_handler)
245- return d
246+ yield d
247
248+ @defer.inlineCallbacks
249 def test_get_metadata_and_quick_tree_synced_symlink(self):
250 """Test Status.get_metadata_and_quick_tree_status
251 without fake data in the AQ."""
252 share_path = os.path.join(self.shares_dir, 'share')
253- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
254+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
255 path = os.path.join(share_path, u'ñoño'.encode('utf-8'))
256 self.fs_manager.create(path, "share")
257 self.fs_manager.set_node_id(path, "node_id")
258@@ -801,7 +815,7 @@
259 client.call_method('get_metadata_and_quick_tree_synced',
260 expected_path, reply_handler=handler,
261 error_handler=self.error_handler)
262- return d
263+ yield d
264
265 def test_content_queue_added(self):
266 """Test the signal because a command was added to the queue."""
267@@ -831,10 +845,12 @@
268 self.main.event_q.push('SYS_QUEUE_REMOVED', FakeCommand())
269 return d
270
271+ @defer.inlineCallbacks
272 def test_current_downloads(self):
273 """Test Status.current_downloads with fake data in the AQ."""
274 share_path = os.path.join(self.shares_dir, 'share')
275- self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
276+ share = Share(path=share_path, volume_id='share_id')
277+ yield self.main.vm.add_share(share)
278 down_path = os.path.join(share_path, "down_path")
279 self.fs_manager.create(down_path, "share_id")
280 self.fs_manager.set_node_id(down_path, "node_id")
281@@ -853,12 +869,14 @@
282 client.call_method('current_downloads',
283 reply_handler=downloads_handler,
284 error_handler=self.error_handler)
285- return d
286+ yield d
287
288+ @defer.inlineCallbacks
289 def test_current_uploads(self):
290 """Test Status.current_uploads with fake data in the AQ."""
291 share_path = os.path.join(self.shares_dir, 'share')
292- self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
293+ share = Share(path=share_path, volume_id='share_id')
294+ yield self.main.vm.add_share(share)
295 up_path = os.path.join(share_path, "up_path")
296 self.fs_manager.create(up_path, "share_id")
297 self.fs_manager.set_node_id(up_path, "node_id")
298@@ -877,7 +895,7 @@
299
300 client.call_method('current_uploads', reply_handler=uploads_handler,
301 error_handler=self.error_handler)
302- return d
303+ yield d
304
305 def test_current_uploads_with_marker(self):
306 """Test Status.current_uploads with fake data in the AQ."""
307@@ -895,17 +913,20 @@
308 error_handler=self.error_handler)
309 return d
310
311+ @defer.inlineCallbacks
312 def test_two_current_downloads(self):
313 """Test Status.current_downloads with fake data in the AQ."""
314 share_path = os.path.join(self.shares_dir, 'share')
315- self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
316+ share = Share(path=share_path, volume_id='share_id')
317+ yield self.main.vm.add_share(share)
318 down_path = os.path.join(share_path, "down_path")
319 self.fs_manager.create(down_path, "share_id")
320 self.fs_manager.set_node_id(down_path, "node_id")
321 self.action_q.downloading[('share_id', 'node_id')] = dict(
322 deflated_size=10, size=100, n_bytes_read=8)
323 share1_path = os.path.join(self.shares_dir, 'share1')
324- self.main.vm.add_share(Share(path=share1_path, volume_id='share_id_1'))
325+ share1 = Share(path=share1_path, volume_id='share_id_1')
326+ yield self.main.vm.add_share(share1)
327 down_path_1 = os.path.join(share1_path, "down_path_1")
328 self.fs_manager.create(down_path_1, "share_id_1")
329 self.fs_manager.set_node_id(down_path_1, "node_id_1")
330@@ -927,19 +948,22 @@
331 client.call_method('current_downloads',
332 reply_handler=downloads_handler,
333 error_handler=self.error_handler)
334- return d
335+ yield d
336
337+ @defer.inlineCallbacks
338 def test_two_current_uploads(self):
339 """Test Status.current_uploads with fake data in the AQ."""
340 share_path = os.path.join(self.shares_dir, 'share')
341- self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
342+ share = Share(path=share_path, volume_id='share_id')
343+ yield self.main.vm.add_share(share)
344 up_path = os.path.join(share_path, "up_path")
345 self.fs_manager.create(up_path, "share_id")
346 self.fs_manager.set_node_id(up_path, "node_id")
347 self.action_q.uploading[('share_id', 'node_id')] = dict(
348 deflated_size=100, n_bytes_written=10)
349 share1_path = os.path.join(self.shares_dir, 'share1')
350- self.main.vm.add_share(Share(path=share1_path, volume_id='share_id_1'))
351+ share1 = Share(path=share1_path, volume_id='share_id_1')
352+ yield self.main.vm.add_share(share1)
353 up_path_1 = os.path.join(share1_path, "up_path_1")
354 self.fs_manager.create(up_path_1, "share_id_1")
355 self.fs_manager.set_node_id(up_path_1, "node_id_1")
356@@ -961,12 +985,14 @@
357
358 client.call_method('current_uploads', reply_handler=uploads_handler,
359 error_handler=self.error_handler)
360- return d
361+ yield d
362
363+ @defer.inlineCallbacks
364 def test_current_downloads_deflated_size_NA(self):
365 """Test Status.current_downloads with fake data in the AQ."""
366 share_path = os.path.join(self.shares_dir, 'share')
367- self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
368+ share = Share(path=share_path, volume_id='share_id')
369+ yield self.main.vm.add_share(share)
370 down_path = os.path.join(share_path, "down_path")
371 self.fs_manager.create(down_path, "share_id")
372 self.fs_manager.set_node_id(down_path, "node_id")
373@@ -984,12 +1010,14 @@
374 client.call_method('current_downloads',
375 reply_handler=downloads_handler,
376 error_handler=self.error_handler)
377- return d
378+ yield d
379
380+ @defer.inlineCallbacks
381 def test_current_uploads_deflated_size_NA(self):
382 """Test Status.current_uploads with fake data in the AQ."""
383 share_path = os.path.join(self.shares_dir, 'share')
384- self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
385+ share = Share(path=share_path, volume_id='share_id')
386+ yield self.main.vm.add_share(share)
387 up_path = os.path.join(share_path, "up_path")
388 self.fs_manager.create(up_path, "share_id")
389 self.fs_manager.set_node_id(up_path, "node_id")
390@@ -1007,7 +1035,7 @@
391
392 client.call_method('current_uploads', reply_handler=uploads_handler,
393 error_handler=self.error_handler)
394- return d
395+ yield d
396
397 def test_nm_signals(self):
398 """Test that NM signals are received and handled properly."""
399@@ -1036,11 +1064,13 @@
400 self.event_q.add_empty_event_queue_callback(empty_queue_cb)
401 return d
402
403+ @defer.inlineCallbacks
404 def test_get_shares(self):
405 """Test Shares.get_shares method."""
406 share_path = os.path.join(self.main.shares_dir, 'share')
407- self.main.vm.add_share(Share(path=share_path, volume_id='share_id',
408- access_level='Read', accepted=False))
409+ share = Share(path=share_path, volume_id='share_id',
410+ access_level='Read', accepted=False)
411+ yield self.main.vm.add_share(share)
412 client = DBusClient(self.bus, '/shares', DBUS_IFACE_SHARES_NAME)
413 d = defer.Deferred()
414 def check(shares):
415@@ -1056,19 +1086,21 @@
416 self.assertEquals('share_id', str(share['volume_id']))
417 self.assertEquals(share_path, str(share['path']))
418 self.assertEquals('Read', str(share['access_level']))
419- self.assertEquals('False', str(share['accepted']))
420+ self.assertEquals('', str(share['accepted']))
421
422 def shares_handler(shares):
423 d.callback(shares)
424
425 client.call_method('get_shares', reply_handler=shares_handler,
426 error_handler=self.error_handler)
427- return d
428+ d.addCallback(check)
429+ yield d
430
431+ @defer.inlineCallbacks
432 def test_accept_share(self):
433 """Test the accept_share method in dbus_interface.Share."""
434 share_path = os.path.join(self.main.shares_dir, 'share')
435- self.main.vm.add_share(Share(path=share_path, volume_id='share_id',
436+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share_id',
437 access_level='Read', accepted=False,
438 node_id="node_id"))
439 self.assertEquals(False, self.main.vm.shares['share_id'].accepted)
440@@ -1088,12 +1120,13 @@
441 self.assertEquals(True, self.main.vm.shares['share_id'].accepted)
442
443 d.addCallback(check)
444- return d
445+ yield d
446
447+ @defer.inlineCallbacks
448 def test_reject_share(self):
449 """Test the reject_share method in dbus_interface.Share."""
450 share_path = os.path.join(self.main.shares_dir, 'share')
451- self.main.vm.add_share(Share(path=share_path, volume_id='share_id',
452+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share_id',
453 access_level='Read', accepted=False))
454 self.assertEquals(False, self.main.vm.shares['share_id'].accepted)
455 client = DBusClient(self.bus, '/shares', DBUS_IFACE_SHARES_NAME)
456@@ -1112,7 +1145,7 @@
457 self.assertEquals(False, self.main.vm.shares['share_id'].accepted)
458
459 d.addCallback(check)
460- return d
461+ yield d
462
463 def test_get_root(self):
464 """Check SycnDaemon.get_root exposed method."""
465@@ -1349,18 +1382,20 @@
466 share = Share(path=share_path, volume_id=str(uuid.uuid4()),
467 access_level='Modify', accepted=True,
468 node_id=str(uuid.uuid4()))
469- self.main.vm.add_share(share)
470+ yield self.main.vm.add_share(share)
471 client = DBusClient(self.bus, '/', DBUS_IFACE_SYNC_NAME)
472+
473+ rescan_d = defer.Deferred()
474+ self.main.action_q.rescan_from_scratch = rescan_d.callback
475+
476 d = defer.Deferred()
477- def fake_rescan_from_scratch(volume_id):
478- """Stub method."""
479- d.callback(volume_id)
480- self.main.action_q.rescan_from_scratch = fake_rescan_from_scratch
481- d.addCallback(self.assertTrue)
482 client.call_method('rescan_from_scratch', share.volume_id,
483- reply_handler=lambda _: None,
484+ reply_handler=d.callback,
485 error_handler=d.errback)
486- vol_id = yield d
487+
488+ yield d
489+
490+ vol_id = yield rescan_d
491 self.assertEqual(vol_id, share.volume_id)
492
493 @defer.inlineCallbacks
494@@ -1422,13 +1457,14 @@
495 class DBusInterfaceUnicodeTests(DBusTwistedTestCase):
496 """Unicode variant of basic tests to the objects exposed with D-Bus."""
497
498+ @defer.inlineCallbacks
499 def test_filesystem_unicode(self):
500 """Test the FileSystem Object, registering it to the session bus.
501
502 Excercise the API.
503 """
504 share_path = os.path.join(self.shares_dir, 'share')
505- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
506+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
507 path = os.path.join(share_path, u'ñoño'.encode('utf-8'))
508 self.fs_manager.create(path, "share")
509 self.fs_manager.set_node_id(path, "node_id")
510@@ -1447,7 +1483,7 @@
511 client = DBusClient(self.bus, '/filesystem', DBUS_IFACE_FS_NAME)
512 client.call_method('get_metadata', path, reply_handler=handler,
513 error_handler=self.error_handler)
514- return d
515+ yield d
516
517 def test_create_share_unicode(self):
518 """Test share offering."""
519@@ -1480,6 +1516,7 @@
520 error_handler=self.error_handler)
521 return d
522
523+ @defer.inlineCallbacks
524 def test_get_shared_unicode(self):
525 """Test that list_shared method behaves with unicode data."""
526 a_dir = os.path.join(self.root_dir, u'ñoño'.encode('utf-8'))
527@@ -1488,7 +1525,7 @@
528 share = Shared(path=a_dir, volume_id='shared_id', name=u'ñoño_shared',
529 access_level='View', other_username=u'test_username',
530 node_id='node_id')
531- self.main.vm.add_shared(share)
532+ yield self.main.vm.add_shared(share)
533 client = DBusClient(self.bus, '/shares', DBUS_IFACE_SHARES_NAME)
534 d = defer.Deferred()
535
536@@ -1504,7 +1541,7 @@
537 d.addCallback(check)
538 client.call_method('get_shared',
539 reply_handler=d.callback, error_handler=d.errback)
540- return d
541+ yield d
542
543
544 class DBusSignalTest(DBusTwistedTestCase):
545@@ -1823,6 +1860,7 @@
546 node_id='node', path=None, mdid=None)
547 return d
548
549+ @defer.inlineCallbacks
550 def test_share_changed(self):
551 """Test the ShareChanged signal."""
552 share_path = os.path.join(self.main.shares_dir, 'share')
553@@ -1831,7 +1869,7 @@
554 u'test_username',
555 u'visible_name', 'Write')
556
557- self.main.vm.add_share(Share(path=share_path,
558+ yield self.main.vm.add_share(Share(path=share_path,
559 volume_id=str(share_holder.share_id),
560 node_id=str(share_holder.subtree),
561 access_level='Read', accepted=False))
562@@ -1850,8 +1888,9 @@
563 signal_name='ShareChanged')
564 self.signal_receivers.add(match)
565 self.main.event_q.push('SV_SHARE_CHANGED', info=share_holder)
566- return d
567+ yield d
568
569+ @defer.inlineCallbacks
570 def test_share_deleted(self):
571 """Test the ShareDeleted signal."""
572 share_path = os.path.join(self.main.shares_dir, 'share')
573@@ -1859,15 +1898,11 @@
574 u'fake_share',
575 u'test_username',
576 u'visible_name', 'Read')
577-
578- self.main.vm.add_share(Share.from_notify_holder(share_holder, share_path))
579+ share = Share.from_notify_holder(share_holder, share_path)
580+ yield self.main.vm.add_share(share)
581 d = defer.Deferred()
582- def share_handler(share_dict):
583- """Handler for ShareDeletedsignal."""
584- d.callback(share_dict)
585-
586- match = self.bus.add_signal_receiver(share_handler,
587- signal_name='ShareDeleted')
588+ match = self.bus.add_signal_receiver(d.callback,
589+ signal_name='ShareDeleted')
590 self.signal_receivers.add(match)
591
592 def check(share_dict):
593@@ -1888,13 +1923,9 @@
594 self.assertEquals(expected_dict[str(k)], str(v))
595 d.addCallback(check)
596
597- match = self.bus.add_signal_receiver(share_handler,
598- signal_name='ShareDeleted')
599- self.signal_receivers.add(match)
600-
601 self.main.event_q.push('SV_SHARE_DELETED',
602 share_id=share_holder.share_id)
603- return d
604+ yield d
605
606 def test_share_created(self):
607 """Test the ShareCreated signal."""
608@@ -1960,6 +1991,7 @@
609 new_generation='new_generation')
610 return d
611
612+ @defer.inlineCallbacks
613 def test_new_share(self):
614 """Test the NewShare signal."""
615 share_path = os.path.join(self.main.shares_dir, 'share')
616@@ -1996,9 +2028,10 @@
617 for k, v in share_dict.items():
618 self.assertEquals(expected_dict[str(k)], str(v))
619 d.addCallback(check)
620- self.main.vm.add_share(share)
621- return d
622+ yield self.main.vm.add_share(share)
623+ yield d
624
625+ @defer.inlineCallbacks
626 def test_public_access_changed(self):
627 """Test the PublicAccessChanged signal."""
628 d = defer.Deferred()
629@@ -2016,7 +2049,7 @@
630 public_url = 'http://example.com'
631
632 share_path = os.path.join(self.shares_dir, 'share')
633- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
634+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
635 path = os.path.join(share_path, "foo")
636 self.fs_manager.create(path, str(share_id))
637 self.fs_manager.set_node_id(path, str(node_id))
638@@ -2033,8 +2066,9 @@
639 self.event_q.push('AQ_CHANGE_PUBLIC_ACCESS_OK',
640 share_id=share_id, node_id=node_id,
641 is_public=is_public, public_url=public_url)
642- return d
643+ yield d
644
645+ @defer.inlineCallbacks
646 def test_public_access_change_error(self):
647 """Test the PublicAccessChangeError signal."""
648 d = defer.Deferred()
649@@ -2051,7 +2085,7 @@
650 expected_error = 'error message'
651
652 share_path = os.path.join(self.shares_dir, 'share')
653- self.main.vm.add_share(Share(path=share_path, volume_id='share'))
654+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share'))
655 path = os.path.join(share_path, "foo")
656 self.fs_manager.create(path, str(share_id))
657 self.fs_manager.set_node_id(path, str(node_id))
658@@ -2067,7 +2101,7 @@
659 self.event_q.push('AQ_CHANGE_PUBLIC_ACCESS_ERROR',
660 share_id=share_id, node_id=node_id,
661 error=expected_error)
662- return d
663+ yield d
664
665 def test_root_mismatch(self):
666 """Test RootMismatch signal."""
667@@ -2089,6 +2123,7 @@
668 self.main.vm._got_root('another_root_id')
669 return d
670
671+ @defer.inlineCallbacks
672 def test_public_files_list(self):
673 """Test the PublicAccessChanged signal."""
674 d = defer.Deferred()
675@@ -2105,7 +2140,8 @@
676 public_url = 'http://example.com'
677
678 share_path = os.path.join(self.shares_dir, 'share')
679- self.main.vm.add_share(Share(path=share_path, volume_id=volume_id))
680+ share = Share(path=share_path, volume_id=volume_id)
681+ yield self.main.vm.add_share(share)
682 path = os.path.join(share_path, "foo")
683 self.fs_manager.create(path, str(volume_id))
684 self.fs_manager.set_node_id(path, str(node_id))
685@@ -2120,7 +2156,7 @@
686 d.addCallback(check)
687 pf = dict(volume_id=volume_id, node_id=node_id, public_url=public_url)
688 self.event_q.push('AQ_PUBLIC_FILES_LIST_OK', public_files=[pf])
689- return d
690+ yield d
691
692 def test_public_files_list_error(self):
693 """Test the PublicFilesListError signal."""
694@@ -2164,16 +2200,17 @@
695 volume_id=volume_id, free_bytes=123)
696 return d
697
698+ @defer.inlineCallbacks
699 def test_quota_exceeded_for_share(self):
700 """Test QuotaExceeded signal for share."""
701 volume_id = 'test this please'
702 path = 'test/path/bla'
703 name = 'Beatiful Stranger'
704- a_share = Share(volume_id=volume_id, node_id=None, path=path, name=name,
705- other_username=None, other_visible_name=None,
706- accepted=False, access_level='View', free_bytes=None)
707- self.main.vm.add_share(a_share)
708- return self.assert_quota_exceeded(volume_id, _get_share_dict(a_share))
709+ share = Share(volume_id=volume_id, node_id=None, path=path, name=name,
710+ other_username=None, other_visible_name=None,
711+ accepted=False, access_level='View', free_bytes=None)
712+ yield self.main.vm.add_share(share)
713+ yield self.assert_quota_exceeded(volume_id, _get_share_dict(share))
714
715 def test_quota_exceeded_for_udf(self):
716 """Test QuotaExceeded signal for UDF."""
717@@ -2972,11 +3009,12 @@
718 'VM_UDF_CREATE_ERROR', path=path, error="I'm broken")
719 return d
720
721+ @defer.inlineCallbacks
722 def test_delete(self):
723 """Test for Folders.delete."""
724 suggested_path = u'~/ñoño'
725 udf = self._create_udf(uuid.uuid4(), 'node_id', suggested_path)
726- self.main.vm.add_udf(udf)
727+ yield self.main.vm.add_udf(udf)
728 d = defer.Deferred()
729 def delete_volume(volume_id, path):
730 """Fake delete_volume."""
731@@ -3001,13 +3039,14 @@
732 self.folders_client.call_method('delete', udf.volume_id,
733 reply_handler=check_deleted,
734 error_handler=self.error_handler)
735- return d
736+ yield d
737
738+ @defer.inlineCallbacks
739 def test_delete_error_signal(self):
740 """Test for FolderDeleteError."""
741 suggested_path = u'~/ñoño'
742 udf = self._create_udf(uuid.uuid4(), 'node_id', suggested_path)
743- self.main.vm.add_udf(udf)
744+ yield self.main.vm.add_udf(udf)
745 d = defer.Deferred()
746 # patch delete_volume to fail
747 def delete_volume(volume_id, path):
748@@ -3026,8 +3065,8 @@
749 self.folders_client.call_method('delete', udf.volume_id,
750 reply_handler=lambda *args: None,
751 error_handler=self.error_handler)
752- d.addCallback(lambda _: self.main.vm.udf_deleted(udf.volume_id))
753- return d
754+ yield d
755+ self.main.vm.udf_deleted(udf.volume_id)
756
757 @defer.inlineCallbacks
758 def test_delete_error_signal_folder_id(self):
759@@ -3120,36 +3159,38 @@
760 d.addCallback(lambda _: self.main.vm.udf_deleted(udf.volume_id))
761 yield d
762
763+ @defer.inlineCallbacks
764 def test_refresh_volumes(self):
765 """Just check that refresh_volumes method works."""
766 client = DBusClient(self.bus, '/folders', DBUS_IFACE_FOLDERS_NAME)
767+ list_volumes_d = defer.Deferred()
768+ self.main.action_q.list_volumes = lambda: list_volumes_d.callback(True)
769+
770 d = defer.Deferred()
771- def list_volumes():
772- """Stub list_volumes."""
773- d.callback(True)
774- self.main.action_q.list_volumes = list_volumes
775 client.call_method('refresh_volumes',
776- reply_handler=lambda _: None,
777+ reply_handler=d.callback,
778 error_handler=self.error_handler)
779- return d
780+ yield list_volumes_d
781+ yield d
782
783
784 class ShareTests(DBusTwistedTestCase):
785 """Share specific tests."""
786
787+ @defer.inlineCallbacks
788 def test_delete_share(self):
789 """Test for Shares.delete_share."""
790 share_path = os.path.join(self.main.shares_dir, 'share')
791 share = Share(path=share_path, volume_id='share_id',
792 node_id='node_id', accepted=True)
793- self.main.vm.add_share(share)
794+ yield self.main.vm.add_share(share)
795 d = defer.Deferred()
796 def delete_volume(volume_id, path):
797 """Fake delete_volume."""
798 self.main.event_q.push("AQ_DELETE_VOLUME_OK", volume_id=volume_id)
799 self.main.action_q.delete_volume = delete_volume
800 def deleted_handler(info):
801- """FolderDeleted handler."""
802+ """ShareDeleted handler."""
803 self.assertRaises(KeyError, self.main.fs.get_by_path,
804 info['path'].decode('utf-8'))
805 self.assertRaises(VolumeDoesNotExist,
806@@ -3168,14 +3209,15 @@
807 client.call_method('delete_share', share.volume_id,
808 reply_handler=check_deleted,
809 error_handler=self.error_handler)
810- return d
811+ yield d
812
813+ @defer.inlineCallbacks
814 def test_delete_share_from_me(self):
815 """Test for Shares.delete_share with share from_me."""
816 share_path = os.path.join(self.main.shares_dir, 'share')
817 share = Shared(path=share_path, volume_id='share_id',
818 node_id='node_id', accepted=True)
819- self.main.vm.add_shared(share)
820+ yield self.main.vm.add_shared(share)
821 d = defer.Deferred()
822 def delete_share(volume_id):
823 """Fake delete_volume."""
824@@ -3193,14 +3235,15 @@
825 client.call_method('delete_share', share.volume_id,
826 reply_handler=lambda _: None,
827 error_handler=self.error_handler)
828- return d
829+ yield d
830
831+ @defer.inlineCallbacks
832 def test_delete_share_error_signal(self):
833 """Test for Shares.delete_share with an error."""
834 share_path = os.path.join(self.main.shares_dir, 'share')
835 share = Share(path=share_path, volume_id='share_id',
836 node_id='node_id', accepted=True)
837- self.main.vm.add_share(share)
838+ yield self.main.vm.add_share(share)
839 d = defer.Deferred()
840 # patch delete_volume to fail
841 def delete_volume(volume_id, path):
842@@ -3209,7 +3252,7 @@
843 volume_id=volume_id, error="I'm broken")
844 self.main.action_q.delete_volume = delete_volume
845 def deleted_error_handler(info, error):
846- """FolderDeleteError handler."""
847+ """ShareDeleteError handler."""
848 self.assertEquals(info['volume_id'], share.volume_id)
849 self.assertEquals(error, "I'm broken")
850 d.callback(True)
851@@ -3220,14 +3263,15 @@
852 client.call_method('delete_share', share.volume_id,
853 reply_handler=lambda *args: None,
854 error_handler=self.error_handler)
855- return d
856+ yield d
857
858+ @defer.inlineCallbacks
859 def test_delete_share_from_me_error(self):
860 """Test failure of Shares.delete_share with a share from_me."""
861 share_path = os.path.join(self.main.shares_dir, 'share')
862 share = Shared(path=share_path, volume_id='share_id',
863 node_id='node_id', accepted=True)
864- self.main.vm.add_shared(share)
865+ yield self.main.vm.add_shared(share)
866 d = defer.Deferred()
867 # patch delete_share to fail
868 def delete_share(share_id):
869@@ -3236,7 +3280,7 @@
870 share_id=share_id, error="I'm broken")
871 self.patch(self.main.action_q, 'delete_share', delete_share)
872 def deleted_error_handler(info, error):
873- """FolderDeleteError handler."""
874+ """ShareDeleteError handler."""
875 self.assertEquals(info['volume_id'], share.volume_id)
876 self.assertEquals(error, "I'm broken")
877 d.callback(True)
878@@ -3247,14 +3291,14 @@
879 client.call_method('delete_share', share.volume_id,
880 reply_handler=lambda *args: None,
881 error_handler=self.error_handler)
882- return d
883+ yield d
884
885 def test_delete_share_from_me_doesnotexist(self):
886 """Test failure of Shares.delete_share with a share from_me."""
887 d = defer.Deferred()
888 # patch delete_share to fail
889 def deleted_error_handler(info, error):
890- """FolderDeleteError handler."""
891+ """ShareDeleteError handler."""
892 self.assertEquals(info['volume_id'], 'missing_share_id')
893 self.assertEquals(error, "DOES_NOT_EXIST")
894 d.callback(True)
895
896=== modified file 'tests/platform/linux/test_filesystem_notifications.py'
897--- tests/platform/linux/test_filesystem_notifications.py 2011-01-20 21:27:24 +0000
898+++ tests/platform/linux/test_filesystem_notifications.py 2011-02-03 17:29:42 +0000
899@@ -291,12 +291,13 @@
900 class WatchTests(BaseFSMonitorTestCase):
901 """Test the EQ API to add and remove watchs."""
902
903+ @defer.inlineCallbacks
904 def _create_udf(self, path):
905 """Create an UDF and returns it and the volume"""
906 os.makedirs(path)
907 udf = volume_manager.UDF("vol_id", "node_id", path.decode('utf-8'),
908 path, True)
909- self.vm.add_udf(udf)
910+ yield self.vm.add_udf(udf)
911
912 def test_add_general_watch(self):
913 """Test that general watchs can be added."""
914@@ -311,11 +312,12 @@
915 # nothing in the udf ancestors watch
916 self.assertEqual(self.monitor._ancestors_watchs, {})
917
918+ @defer.inlineCallbacks
919 def test_add_watch_on_udf_ancestor(self):
920 """Test that ancestors watchs can be added."""
921 # create the udf and add the watch
922 path_udf = os.path.join(self.home_dir, "path/to/UDF")
923- self._create_udf(path_udf)
924+ yield self._create_udf(path_udf)
925 path_ancestor = os.path.join(self.home_dir, "path")
926 self.monitor.add_watch(path_ancestor)
927
928@@ -327,22 +329,24 @@
929 # nothing in the general watch
930 self.assertEqual(self.monitor._general_watchs, {})
931
932+ @defer.inlineCallbacks
933 def test_add_watch_on_udf_exact(self):
934 """Test adding the watch exactly on UDF."""
935 # create the udf and add the watch
936 path_udf = os.path.join(self.home_dir, "path/to/UDF")
937- self._create_udf(path_udf)
938+ yield self._create_udf(path_udf)
939 self.monitor.add_watch(path_udf)
940
941 # pylint: disable-msg=W0212
942 self.assertTrue(path_udf in self.monitor._general_watchs)
943 self.assertEqual(self.monitor._ancestors_watchs, {})
944
945+ @defer.inlineCallbacks
946 def test_add_watch_on_udf_child(self):
947 """Test adding the watch inside UDF."""
948 # create the udf and add the watch
949 path_udf = os.path.join(self.home_dir, "path/to/UDF")
950- self._create_udf(path_udf)
951+ yield self._create_udf(path_udf)
952 path_ancestor = os.path.join(self.home_dir, "path/to/UDF/inside")
953 os.mkdir(path_ancestor)
954 self.monitor.add_watch(path_ancestor)
955@@ -364,12 +368,13 @@
956 self.monitor.rm_watch(not_existing_dir)
957 self.assertFalse(self.monitor.has_watch(not_existing_dir))
958
959+ @defer.inlineCallbacks
960 def test_rm_watch_wrong(self):
961 """Test that general watchs can be removed."""
962 # add two types of watchs
963 self.monitor.add_watch(self.root_dir)
964 path_udf = os.path.join(self.home_dir, "path/to/UDF")
965- self._create_udf(path_udf)
966+ yield self._create_udf(path_udf)
967 path_ancestor = os.path.join(self.home_dir, "path")
968 self.monitor.add_watch(path_ancestor)
969
970@@ -388,11 +393,12 @@
971 self.assertEqual(self.monitor._general_watchs, {})
972 self.assertEqual(self.monitor._ancestors_watchs, {})
973
974+ @defer.inlineCallbacks
975 def test_rm_watch_ancestor(self):
976 """Test that ancestor watchs can be removed."""
977 # create the udf and add the watch
978 path_udf = os.path.join(self.home_dir, "path/to/UDF")
979- self._create_udf(path_udf)
980+ yield self._create_udf(path_udf)
981 path_ancestor = os.path.join(self.home_dir, "path")
982 self.monitor.add_watch(path_ancestor)
983
984@@ -414,10 +420,11 @@
985 self.monitor.rm_watch(self.root_dir)
986 self.assertFalse(self.monitor.has_watch(self.root_dir))
987
988+ @defer.inlineCallbacks
989 def test_has_watch_ancestor(self):
990 """Test that an ancestor path is watched."""
991 path_udf = os.path.join(self.home_dir, "path/to/UDF")
992- self._create_udf(path_udf)
993+ yield self._create_udf(path_udf)
994 path_ancestor = os.path.join(self.home_dir, "path")
995
996 self.assertFalse(self.monitor.has_watch(path_ancestor))
997
998=== modified file 'tests/platform/linux/test_tools.py'
999--- tests/platform/linux/test_tools.py 2011-01-17 20:14:09 +0000
1000+++ tests/platform/linux/test_tools.py 2011-02-03 17:29:42 +0000
1001@@ -48,14 +48,15 @@
1002 self.rmtree(self.home_dir)
1003 return DBusTwistedTestCase.tearDown(self)
1004
1005+ @defer.inlineCallbacks
1006 def create_file(self, path):
1007 """ creates a test file in fsm """
1008 share_path = os.path.join(self.shares_dir, 'share_tools')
1009- self.main.vm.add_share(volume_manager.Share(share_path,
1010- volume_id='tools_share_id'))
1011+ share = volume_manager.Share(share_path, volume_id='tools_share_id')
1012+ yield self.main.vm.add_share(share)
1013 self.fs_manager.create(path, "tools_share_id")
1014 self.fs_manager.set_node_id(path, "node_id")
1015- return 'tools_share_id', 'node_id'
1016+ defer.returnValue(('tools_share_id', 'node_id'))
1017
1018
1019 class TestToolsBasic(TestToolsBase):
1020
1021=== modified file 'tests/syncdaemon/test_eq_inotify.py'
1022--- tests/syncdaemon/test_eq_inotify.py 2011-01-12 13:30:03 +0000
1023+++ tests/syncdaemon/test_eq_inotify.py 2011-02-03 17:29:42 +0000
1024@@ -1745,23 +1745,25 @@
1025 self._deferred.addCallback(check)
1026 return self._deferred
1027
1028+ @defer.inlineCallbacks
1029 def _create_udf(self, vol_id, path):
1030 """Create an UDF and returns it and the volume"""
1031 os.makedirs(path)
1032 udf = volume_manager.UDF(vol_id, "node_id", path.decode('utf-8'),
1033 path, True)
1034- self.vm.add_udf(udf)
1035+ yield self.vm.add_udf(udf)
1036
1037+ @defer.inlineCallbacks
1038 def test_move_dir_across_volumes(self):
1039 """Dir move between volumes is deletion and creation."""
1040 # base dir 1
1041 base1 = os.path.join(self.home_dir, "dir1")
1042- self._create_udf('vol1', base1)
1043+ yield self._create_udf('vol1', base1)
1044 self.fs.create(path=base1, share_id='vol1', is_dir=True)
1045
1046 # base dir 2
1047 base2 = os.path.join(self.home_dir, "dir2")
1048- self._create_udf('vol2', base2)
1049+ yield self._create_udf('vol2', base2)
1050 self.fs.create(path=base2, share_id='vol2', is_dir=True)
1051
1052 # working stuff
1053@@ -1779,18 +1781,19 @@
1054
1055 # generate the event
1056 os.rename(moving1, moving2)
1057- return self._deferred
1058+ yield self._deferred
1059
1060+ @defer.inlineCallbacks
1061 def test_move_file_across_volumes(self):
1062 """File ove between volumes is deletion and creation (and write)."""
1063 # base dir 1
1064 base1 = os.path.join(self.home_dir, "dir1")
1065- self._create_udf('vol1', base1)
1066+ yield self._create_udf('vol1', base1)
1067 self.fs.create(path=base1, share_id='vol1', is_dir=True)
1068
1069 # base dir 2
1070 base2 = os.path.join(self.home_dir, "dir2")
1071- self._create_udf('vol2', base2)
1072+ yield self._create_udf('vol2', base2)
1073 self.fs.create(path=base2, share_id='vol2', is_dir=True)
1074
1075 # working stuff
1076@@ -1809,7 +1812,7 @@
1077
1078 # generate the event
1079 os.rename(moving1, moving2)
1080- return self._deferred
1081+ yield self._deferred
1082
1083
1084 def test_suite():
1085
1086=== modified file 'tests/syncdaemon/test_fsm.py'
1087--- tests/syncdaemon/test_fsm.py 2011-01-20 21:27:24 +0000
1088+++ tests/syncdaemon/test_fsm.py 2011-02-03 17:29:42 +0000
1089@@ -26,6 +26,8 @@
1090 import time
1091 import unittest
1092
1093+from twisted.internet import defer
1094+
1095 from contrib.testing.testcase import (
1096 BaseTwistedTestCase,
1097 FakeVolumeManager,
1098@@ -56,9 +58,21 @@
1099 BROKEN_PICKLE = '\axb80\x02}q\x01(U\x01aU\x04testq\x02U\x01bU\x06brokenq\x03u.'
1100
1101
1102+@defer.inlineCallbacks
1103+def _create_share(share_id, share_name, fsm, shares_dir, access_level='Modify'):
1104+ """Create a share."""
1105+ share_path = os.path.join(shares_dir, share_name)
1106+ os.makedirs(share_path)
1107+ share = Share(path=share_path, volume_id=share_id,
1108+ access_level=access_level)
1109+ yield fsm.vm.add_share(share)
1110+ defer.returnValue(share)
1111+
1112+
1113 class FSMTestCase(unittest.TestCase):
1114 """ Base test case for FSM """
1115
1116+ @defer.inlineCallbacks
1117 def setUp(self):
1118 """ Setup the test """
1119 unittest.TestCase.setUp(self)
1120@@ -80,8 +94,7 @@
1121 FakeVolumeManager(self.root_dir), self.db)
1122 self.eq = EventQueue(self.fsm)
1123 self.fsm.register_eq(self.eq)
1124- self.share = self.create_share('share', 'share_name',
1125- self.fsm, self.shares_dir)
1126+ self.share = yield self.create_share('share', 'share_name')
1127 self.share_path = self.share.path
1128
1129 # add a in-memory logger handler
1130@@ -109,16 +122,17 @@
1131 os.chmod(os.path.join(dirpath, dir), 0777)
1132 shutil.rmtree(path)
1133
1134- @staticmethod
1135- def create_share(share_id, share_name, fsm, shares_dir,
1136+ @defer.inlineCallbacks
1137+ def create_share(self, share_id, share_name, fsm=None, shares_dir=None,
1138 access_level='Modify'):
1139- """ creates a share """
1140- share_path = os.path.join(shares_dir, share_name)
1141- os.makedirs(share_path)
1142- share = Share(path=share_path, volume_id=share_id,
1143- access_level=access_level)
1144- fsm.vm.add_share(share)
1145- return share
1146+ """Create a share."""
1147+ if fsm is None:
1148+ fsm = self.fsm
1149+ if shares_dir is None:
1150+ shares_dir = self.shares_dir
1151+ share = yield _create_share(share_id, share_name, fsm, shares_dir,
1152+ access_level)
1153+ defer.returnValue(share)
1154
1155 def create_node(self, name, is_dir=False, share=None):
1156 """Create a node."""
1157@@ -162,6 +176,7 @@
1158 self.assertTrue(os.path.exists(fsmdir))
1159 db.shutdown()
1160
1161+ @defer.inlineCallbacks
1162 def test_complex_startup(self):
1163 """Test startup after having data."""
1164 # pylint: disable-msg=W0212
1165@@ -172,8 +187,8 @@
1166 db = Tritcask(fsmdir)
1167 fsm = FileSystemManager(fsmdir, partials_dir,
1168 FakeVolumeManager(fsmdir), db)
1169- share = FSMTestCase.create_share('share', 'share_name',
1170- fsm, fsmdir)
1171+ share = yield _create_share('share', 'share_name',
1172+ fsm=fsm, shares_dir=fsmdir)
1173 self.assertEqual(fsm._idx_path, {})
1174 self.assertEqual(fsm._idx_node_id, {})
1175
1176@@ -299,6 +314,7 @@
1177 md_version = open(os.path.join(self.fsmdir, "metadata_version")).read()
1178 self.assertEqual(md_version, METADATA_VERSION)
1179
1180+ @defer.inlineCallbacks
1181 def test_old_metadata_None(self):
1182 """Test old metadata situation, in None."""
1183 # create some stuff
1184@@ -307,8 +323,7 @@
1185 mdid = self.fsm.create(path, "share")
1186 self.fsm.set_node_id(path, "uuid")
1187 # create a path with the old layout
1188- other_share = self.create_share('share1', 'share1_name',
1189- self.fsm, self.shares_dir)
1190+ other_share = yield self.create_share('share1', 'share1_name')
1191 share_mdid = self.fsm.create(other_share.path, "share1")
1192 self.fsm.set_node_id(other_share.path, "uuid1")
1193 os.makedirs(os.path.join(self.root_dir, 'Ubuntu One'))
1194@@ -358,6 +373,7 @@
1195 self.assertFalse(old_path in newfsm._idx_path)
1196 db.shutdown()
1197
1198+ @defer.inlineCallbacks
1199 def test_old_metadata_1(self):
1200 """Test old metadata situation, in v1."""
1201 # create some stuff
1202@@ -369,8 +385,7 @@
1203 self.fsm.set_node_id(path2, "uuid2")
1204
1205 # create a path with the old layout
1206- other_share = self.create_share('share1', 'share1_name',
1207- self.fsm, self.shares_dir)
1208+ other_share = yield self.create_share('share1', 'share1_name')
1209 share_mdid = self.fsm.create(other_share.path, "share1")
1210 self.fsm.set_node_id(other_share.path, "uuid1")
1211 os.makedirs(os.path.join(self.root_dir, 'Ubuntu One'))
1212@@ -423,6 +438,7 @@
1213 self.assertFalse(old_path in newfsm._idx_path)
1214 db.shutdown()
1215
1216+ @defer.inlineCallbacks
1217 def test_old_metadata_2(self):
1218 """Test old metadata situation, in v2."""
1219 # create some stuff
1220@@ -430,8 +446,7 @@
1221 mdid = self.fsm.create(path, "share")
1222 self.fsm.set_node_id(path, "uuid")
1223 # create a path with the old layout
1224- other_share = self.create_share('share1', 'share1_name',
1225- self.fsm, self.shares_dir)
1226+ other_share = yield self.create_share('share1', 'share1_name')
1227 share_mdid = self.fsm.create(other_share.path, "share1")
1228 self.fsm.set_node_id(other_share.path, "uuid1")
1229 os.makedirs(os.path.join(self.root_dir, 'Ubuntu One'))
1230@@ -480,6 +495,7 @@
1231 self.assertFalse(old_path in newfsm._idx_path)
1232 db.shutdown()
1233
1234+ @defer.inlineCallbacks
1235 def test_old_metadata_3(self):
1236 """Test old metadata situation, in v3."""
1237 # create a path with the old layout and metadata
1238@@ -487,8 +503,7 @@
1239 root_mdid = self.fsm.create(self.root_dir, "")
1240 self.fsm.set_node_id(self.root_dir, "uuid")
1241 # a share
1242- other_share = self.create_share('share1', 'share1_name',
1243- self.fsm, self.shares_dir)
1244+ other_share = yield self.create_share('share1', 'share1_name')
1245 share_mdid = self.fsm.create(other_share.path, "share1")
1246 self.fsm.set_node_id(other_share.path, "uuid1")
1247 os.makedirs(os.path.join(self.root_dir, 'Ubuntu One'))
1248@@ -1263,13 +1278,14 @@
1249 mdobj = self.fsm.get_by_node_id("share", "uuid")
1250 self.assertEquals(self.share_path, mdobj.path)
1251
1252+ @defer.inlineCallbacks
1253 def test_get_all_by_share(self):
1254 """ Test that it returns all the mdids in a share. """
1255 # create the shares
1256- share1 = self.create_share('share_id1', 'share_name1', self.fsm,
1257- self.shares_dir, access_level='View')
1258- share2 = self.create_share('share_id2', 'share_name2', self.fsm,
1259- self.shares_dir, access_level='View')
1260+ share1 = yield self.create_share('share_id1', 'share_name1',
1261+ access_level='View')
1262+ share2 = yield self.create_share('share_id2', 'share_name2',
1263+ access_level='View')
1264 self.fsm.create(share1.path, "share_id1", is_dir=True)
1265 self.fsm.set_node_id(share1.path, "uuid1")
1266 self.fsm.create(share2.path, "share_id2", is_dir=True)
1267@@ -1330,11 +1346,12 @@
1268 self.assertTrue(mdid7 not in all)
1269 self.assertTrue(mdid8 not in all)
1270
1271+ @defer.inlineCallbacks
1272 def test_get_all_by_share_mixed(self):
1273 """Test that it returns all the mdids in a share with mixed nodes."""
1274 # create the shares
1275- share = self.create_share('share_id', 'sharetest', self.fsm,
1276- self.shares_dir, access_level='View')
1277+ share = yield self.create_share('share_id', 'sharetest',
1278+ access_level='View')
1279 self.fsm.create(share.path, "share_id", is_dir=True)
1280 self.fsm.set_node_id(share.path, "uuid")
1281
1282@@ -1441,10 +1458,10 @@
1283 os.path.join(self.share.path, 'a', 'b'))])
1284 self.assertEqual(expected, actual)
1285
1286+ @defer.inlineCallbacks
1287 def test_with_two_shares(self):
1288 """Test having 2 shares."""
1289- second_share = self.create_share('second_share', 'the_second',
1290- self.fsm, self.shares_dir)
1291+ second_share = yield self.create_share('second_share', 'the_second')
1292 self.create_some_contents(second_share)
1293
1294 expected = ['a']
1295@@ -1452,10 +1469,10 @@
1296 self.fsm.get_mdobjs_in_dir(second_share.path)])
1297 self.assertEqual(expected, actual)
1298
1299+ @defer.inlineCallbacks
1300 def test_both_shares(self):
1301 """Test having 2 shares and asking for mdobjs in shares_dir."""
1302- second_share = self.create_share('second_share', 'the_second',
1303- self.fsm, self.shares_dir)
1304+ second_share = yield self.create_share('second_share', 'the_second')
1305 self.create_some_contents(second_share)
1306
1307 expected = []
1308@@ -1750,14 +1767,14 @@
1309 # it has no partial!
1310 self.fsm.remove_partial("uuid", "share")
1311
1312+ @defer.inlineCallbacks
1313 def test_ro_share(self):
1314 """Test creating a partial of a RO share.
1315
1316 It should leave the partials dir permissions intact.
1317 """
1318- share = self.create_share('ro_share', 'ro_share_name',
1319- self.fsm, self.shares_dir,
1320- access_level='View')
1321+ share = yield self.create_share('ro_share', 'ro_share_name',
1322+ access_level='View')
1323 testdir = os.path.join(share.path, "path")
1324 mdid = self.fsm.create(testdir, share.volume_id, is_dir=False)
1325 self.fsm.set_node_id(testdir, "uuid")
1326@@ -2638,22 +2655,24 @@
1327 self.fsm.make_dir(mdid)
1328 self.assertTrue(os.path.exists(local_dir))
1329
1330+ @defer.inlineCallbacks
1331 def test_make_dir_in_ro_share(self):
1332 """Also works in a read only share."""
1333- share = self.create_share('ro_share_id', 'ro', self.fsm,
1334- self.shares_dir, access_level='View')
1335+ share = yield self.create_share('ro_share_id', 'ro',
1336+ access_level='View')
1337 testdir = os.path.join(share.path, "foo")
1338 mdid = self.fsm.create(testdir, 'ro_share_id', is_dir=True)
1339 self.fsm.make_dir(mdid)
1340 self.assertTrue(os.path.exists(testdir))
1341
1342+ @defer.inlineCallbacks
1343 def test_make_dir_ro_watch(self):
1344 """Don't add the watch nor the mute on a RO share."""
1345 called = []
1346 self.eq.add_watch = lambda p: called.append(p)
1347 self.eq.add_to_mute_filter = lambda *a: called.append(a)
1348- share = self.create_share('ro_share_id', 'ro', self.fsm,
1349- self.shares_dir, access_level='View')
1350+ share = yield self.create_share('ro_share_id', 'ro',
1351+ access_level='View')
1352 testdir = os.path.join(share.path, "foo")
1353 mdid = self.fsm.create(testdir, 'ro_share_id', is_dir=True)
1354
1355@@ -2862,17 +2881,19 @@
1356 os.chmod(os.path.join(dirpath, file), 0666)
1357 FSMTestCase.tearDown(self)
1358
1359+ @defer.inlineCallbacks
1360 def test_file_ro_share_fail(self):
1361 """ Test that manual creation of a file, fails on a ro-share. """
1362- share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1363- self.shares_dir, access_level='View')
1364+ share = yield self.create_share('ro_share', 'ro_share_name',
1365+ access_level='View')
1366 testfile = os.path.join(share.path, "a_file")
1367 self.assertRaises(IOError, open, testfile, 'w')
1368
1369+ @defer.inlineCallbacks
1370 def test_dir_ro_share(self):
1371 """ Test that the creation of a file using fsm, works on a ro-share."""
1372- share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1373- self.shares_dir, access_level='View')
1374+ share = yield self.create_share('ro_share', 'ro_share_name',
1375+ access_level='View')
1376 testdir = os.path.join(share.path, "path2")
1377 self.fsm.create(testdir, share.volume_id, is_dir=True)
1378 self.fsm.set_node_id(testdir, "uuid2")
1379@@ -2882,10 +2903,11 @@
1380 fd.close()
1381 self.assertTrue(os.path.exists(testdir))
1382
1383+ @defer.inlineCallbacks
1384 def test_file_ro_share(self):
1385 """ Test that the creation of a file using fsm, works on a ro-share."""
1386- self.share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1387- self.shares_dir, access_level='View')
1388+ self.share = yield self.create_share('ro_share', 'ro_share_name',
1389+ access_level='View')
1390 testfile = os.path.join(self.share.path, "a_file")
1391 self.fsm.create(testfile, self.share.volume_id, is_dir=False)
1392 self.fsm.set_node_id(testfile, "uuid3")
1393@@ -2896,10 +2918,11 @@
1394 self.fsm.commit_partial('uuid3', self.share.volume_id, None)
1395 self.assertTrue(os.path.exists(testfile))
1396
1397+ @defer.inlineCallbacks
1398 def test_delete_dir_ro_share(self):
1399 """ Test that fsm is able to delete a dir in a ro.share. """
1400- share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1401- self.shares_dir, access_level='View')
1402+ share = yield self.create_share('ro_share', 'ro_share_name',
1403+ access_level='View')
1404 testdir = os.path.join(share.path, "path2")
1405 self.fsm.create(testdir, share.volume_id, is_dir=True)
1406 self.fsm.set_node_id(testdir, "uuid2")
1407@@ -2912,10 +2935,11 @@
1408 self.fsm.delete_file(testdir)
1409 self.assertFalse(os.path.exists(testdir))
1410
1411+ @defer.inlineCallbacks
1412 def test_delete_non_empty_dir_ro_share(self):
1413 """Test that fsm is able to delete a non-empty dir in a ro.share."""
1414- share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1415- self.shares_dir, access_level='View')
1416+ share = yield self.create_share('ro_share', 'ro_share_name',
1417+ access_level='View')
1418 testdir = os.path.join(share.path, "path2")
1419 mdid = self.fsm.create(testdir, share.volume_id, is_dir=True)
1420 self.fsm.set_node_id(testdir, "uuid2")
1421@@ -2941,10 +2965,11 @@
1422 self.assertFalse(os.path.exists(testdir))
1423 self.assertFalse(os.path.exists(testfile))
1424
1425+ @defer.inlineCallbacks
1426 def test_delete_non_empty_dir_rw_share(self):
1427 """Test that fsm is able to delete a non-empty dir in a rw.share."""
1428- share = self.create_share('rw_share', 'rw_share_name', self.fsm,
1429- self.shares_dir, access_level='Modify')
1430+ share = yield self.create_share('rw_share', 'rw_share_name',
1431+ access_level='Modify')
1432 testdir = os.path.join(share.path, "path2")
1433 mdid = self.fsm.create(testdir, share.volume_id, is_dir=True)
1434 self.fsm.set_node_id(testdir, "uuid2")
1435@@ -2970,10 +2995,11 @@
1436 self.assertFalse(os.path.exists(testdir))
1437 self.assertFalse(os.path.exists(testfile))
1438
1439+ @defer.inlineCallbacks
1440 def test_delete_non_empty_dir_bad_perms_rw_share(self):
1441 """Test that fsm is able to delete a non-empty dir in a rw.share."""
1442- share = self.create_share('rw_share', 'rw_share_name', self.fsm,
1443- self.shares_dir, access_level='Modify')
1444+ share = yield self.create_share('rw_share', 'rw_share_name',
1445+ access_level='Modify')
1446 testdir = os.path.join(share.path, "path2")
1447 mdid = self.fsm.create(testdir, share.volume_id, is_dir=True)
1448 self.fsm.set_node_id(testdir, "uuid2")
1449@@ -3001,10 +3027,11 @@
1450 self.assertTrue(os.path.exists(testdir))
1451 self.assertTrue(os.path.exists(testfile))
1452
1453+ @defer.inlineCallbacks
1454 def test_delete_file_ro_share(self):
1455 """ Test that fsm is able to delete a file in a ro-share. """
1456- self.share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1457- self.shares_dir, access_level='View')
1458+ self.share = yield self.create_share('ro_share', 'ro_share_name',
1459+ access_level='View')
1460 testfile = os.path.join(self.share.path, "a_file")
1461 self.fsm.create(testfile, self.share.volume_id, is_dir=False)
1462 self.fsm.set_node_id(testfile, "uuid3")
1463@@ -3017,10 +3044,11 @@
1464 self.fsm.delete_file(testfile)
1465 self.assertFalse(os.path.exists(testfile))
1466
1467+ @defer.inlineCallbacks
1468 def test_move_to_conflict_ro_share(self):
1469 """ Test that fsm is able to handle move_to_conflict in a ro-share. """
1470- self.share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1471- self.shares_dir, access_level='View')
1472+ self.share = yield self.create_share('ro_share', 'ro_share_name',
1473+ access_level='View')
1474 testfile = os.path.join(self.share.path, "a_file")
1475 file_mdid = self.fsm.create(testfile, self.share.volume_id,
1476 is_dir=False)
1477@@ -3034,18 +3062,18 @@
1478 self.fsm.move_to_conflict(file_mdid)
1479 self.assertTrue(os.path.exists(testfile + self.fsm.CONFLICT_SUFFIX))
1480
1481+ @defer.inlineCallbacks
1482 def test_file_rw_share_no_fail(self):
1483 """ Test that manual creation of a file, ona rw-share. """
1484- share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1485- self.shares_dir)
1486+ share = yield self.create_share('ro_share', 'ro_share_name')
1487 testfile = os.path.join(share.path, "a_file")
1488 open(testfile, 'w').close()
1489 self.assertTrue(os.path.exists(testfile))
1490
1491+ @defer.inlineCallbacks
1492 def test_dir_rw_share(self):
1493 """ Test that the creation of a file using fsm, works on a rw-share."""
1494- share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1495- self.shares_dir)
1496+ share = yield self.create_share('ro_share', 'ro_share_name')
1497 testdir = os.path.join(share.path, "path2")
1498 self.fsm.create(testdir, share.volume_id, is_dir=True)
1499 self.fsm.set_node_id(testdir, "uuid2")
1500@@ -3055,10 +3083,10 @@
1501 fd.close()
1502 self.assertTrue(os.path.exists(testdir))
1503
1504+ @defer.inlineCallbacks
1505 def test_file_rw_share(self):
1506 """ Test that the creation of a file using fsm, works on a rw-share."""
1507- self.share = self.create_share('ro_share', 'ro_share_name', self.fsm,
1508- self.shares_dir)
1509+ self.share = yield self.create_share('ro_share', 'ro_share_name')
1510 testfile = os.path.join(self.share.path, "a_file")
1511 self.fsm.create(testfile, self.share.volume_id, is_dir=False)
1512 self.fsm.set_node_id(testfile, "uuid3")
1513@@ -3094,13 +3122,13 @@
1514 class TestEnableShareWrite(FSMTestCase):
1515 """Tests for EnableShareWrite context manager"""
1516
1517+ @defer.inlineCallbacks
1518 def setUp(self):
1519 """Test setup"""
1520 FSMTestCase.setUp(self)
1521 # create a ro share
1522- self.share_ro = self.create_share('share_ro', 'share_ro_name',
1523- self.fsm, self.shares_dir,
1524- access_level='View')
1525+ self.share_ro = yield self.create_share('share_ro', 'share_ro_name',
1526+ access_level='View')
1527 self.share_ro_path = self.share_ro.path
1528
1529 def test_write_in_ro_share(self):
1530@@ -3140,6 +3168,7 @@
1531
1532 class RealVMTestCase(FSMTestCase):
1533
1534+ @defer.inlineCallbacks
1535 def setUp(self):
1536 """ Setup the test """
1537 unittest.TestCase.setUp(self)
1538@@ -3158,8 +3187,7 @@
1539 self.main = FakeMain(self.root_dir, self.shares_dir,
1540 self.data_dir, self.partials_dir)
1541 self.fsm = self.main.fs
1542- self.share = self.create_share('share', 'share_name',
1543- self.fsm, self.shares_dir)
1544+ self.share = yield self.create_share('share', 'share_name')
1545 self.share_path = self.share.path
1546
1547 def tearDown(self):
1548@@ -3167,14 +3195,16 @@
1549 self.main.shutdown()
1550 self.rmtree(TESTS_DIR)
1551
1552-
1553- @staticmethod
1554- def create_share(share_id, share_name, fsm, shares_dir,
1555+ @defer.inlineCallbacks
1556+ def create_share(self, share_id, share_name,
1557 access_level='Modify'):
1558- with allow_writes(shares_dir):
1559- return FSMTestCase.create_share(share_id, share_name, fsm,
1560- shares_dir, access_level)
1561-
1562+ with allow_writes(self.shares_dir):
1563+ share = yield _create_share(share_id, share_name, self.fsm,
1564+ self.shares_dir, access_level)
1565+
1566+ defer.returnValue(share)
1567+
1568+ @defer.inlineCallbacks
1569 def test_old_metadata_None_missing_share(self):
1570 """test loading metadata v0. that points to a share that
1571 we don't have
1572@@ -3185,8 +3215,7 @@
1573 mdid = self.fsm.create(path, "share")
1574 self.fsm.set_node_id(path, "uuid")
1575 # create a path with the old layout
1576- other_share = self.create_share('share1', 'share1_name',
1577- self.fsm, self.shares_dir)
1578+ other_share = yield self.create_share('share1', 'share1_name')
1579 share_mdid = self.fsm.create(other_share.path, "share1")
1580 self.fsm.set_node_id(other_share.path, "uuid1")
1581 os.makedirs(os.path.join(self.root_dir, 'Ubuntu One'))
1582@@ -3238,6 +3267,7 @@
1583 self.assertRaises(KeyError, newfsm.get_by_mdid, share_mdid)
1584 db.shutdown()
1585
1586+ @defer.inlineCallbacks
1587 def test_old_metadata_1_missing_share(self):
1588 """test loading metadata v1. that points to a share that
1589 we don't have
1590@@ -3251,8 +3281,7 @@
1591 self.fsm.set_node_id(path2, "uuid2")
1592
1593 # create a path with the old layout
1594- other_share = self.create_share('share1', 'share1_name',
1595- self.fsm, self.shares_dir)
1596+ other_share = yield self.create_share('share1', 'share1_name')
1597 share_mdid = self.fsm.create(other_share.path, "share1")
1598 self.fsm.set_node_id(other_share.path, "uuid3")
1599 os.makedirs(os.path.join(self.root_dir, 'Ubuntu One'))
1600@@ -3303,6 +3332,7 @@
1601 self.assertRaises(KeyError, newfsm.get_by_mdid, share_mdid)
1602 db.shutdown()
1603
1604+ @defer.inlineCallbacks
1605 def test_old_metadata_2_missing_share(self):
1606 """test loading metadata v2. that points to a share that
1607 we don't have
1608@@ -3312,8 +3342,7 @@
1609 mdid = self.fsm.create(path, "share")
1610 self.fsm.set_node_id(path, "uuid")
1611 # create a path with the old layout
1612- other_share = self.create_share('share1', 'share1_name',
1613- self.fsm, self.shares_dir)
1614+ other_share = yield self.create_share('share1', 'share1_name')
1615 share_mdid = self.fsm.create(other_share.path, "share1")
1616 self.fsm.set_node_id(other_share.path, "uuid3")
1617 os.makedirs(os.path.join(self.root_dir, 'Ubuntu One'))
1618@@ -3360,6 +3389,7 @@
1619 self.assertRaises(KeyError, newfsm.get_by_mdid, share_mdid)
1620 db.shutdown()
1621
1622+ @defer.inlineCallbacks
1623 def test_old_metadata_3_missing_share(self):
1624 """test loading metadata v3. that points to a share that
1625 we don't have
1626@@ -3369,8 +3399,7 @@
1627 root_mdid = self.fsm.get_by_path(self.root_dir).mdid
1628 self.fsm.set_node_id(self.root_dir, "uuid")
1629 # a share
1630- other_share = self.create_share('share1', 'share1_name',
1631- self.fsm, self.shares_dir)
1632+ other_share = yield self.create_share('share1', 'share1_name')
1633 share_mdid = self.fsm.create(other_share.path, "share1")
1634 self.fsm.set_node_id(other_share.path, "uuid1")
1635 os.makedirs(os.path.join(self.root_dir, 'Ubuntu One'))
1636@@ -3416,6 +3445,7 @@
1637 self.assertRaises(KeyError, newfsm.get_by_mdid, share_mdid)
1638 db.shutdown()
1639
1640+ @defer.inlineCallbacks
1641 def test_metadata_missing_share(self):
1642 """test loading current metadata that points to a share
1643 that we don't have
1644@@ -3425,8 +3455,7 @@
1645 self.assertEqual(md_version, METADATA_VERSION)
1646 path = os.path.join(self.share.path, 'path')
1647 path1 = os.path.join(self.share.path, 'path1')
1648- other_share = self.create_share('share1', 'share1_name',
1649- self.fsm, self.shares_dir)
1650+ other_share = yield self.create_share('share1', 'share1_name')
1651
1652 path2 = os.path.join(other_share.path, 'broken_path2')
1653 for p in [path, path1, path2]:
1654
1655=== modified file 'tests/syncdaemon/test_localrescan.py'
1656--- tests/syncdaemon/test_localrescan.py 2011-02-01 14:33:46 +0000
1657+++ tests/syncdaemon/test_localrescan.py 2011-02-03 17:29:42 +0000
1658@@ -119,19 +119,20 @@
1659 self.rmtree(self.tmpdir)
1660 testcase.BaseTwistedTestCase.tearDown(self)
1661
1662- @staticmethod
1663- def create_share(share_id, share_name, fsm, shares_dir,
1664+ @defer.inlineCallbacks
1665+ def create_share(self, share_id, share_name,
1666 access_level='Modify', accepted=True, subscribed=True):
1667 """Create a share."""
1668- share_path = os.path.join(shares_dir, share_name)
1669+ share_path = os.path.join(self.shares_dir, share_name)
1670 os.makedirs(share_path)
1671 share = volume_manager.Share(path=share_path, volume_id=share_id,
1672 access_level=access_level,
1673 accepted=accepted,
1674 subscribed=subscribed)
1675- fsm.vm.add_share(share)
1676- return share
1677+ yield self.fsm.vm.add_share(share)
1678+ defer.returnValue(share)
1679
1680+ @defer.inlineCallbacks
1681 def create_udf(self, udf_id, node_id, suggested_path, path, subscribed,
1682 generation=None, free_bytes=100):
1683 """Create an UDF and add it to the volume manager."""
1684@@ -139,8 +140,8 @@
1685 suggested_path.decode('utf-8'))
1686 udf = volume_manager.UDF.from_udf_volume(volume, path)
1687 udf.subscribed = subscribed
1688- self.fsm.vm.add_udf(udf)
1689- return udf
1690+ yield self.fsm.vm.add_udf(udf)
1691+ defer.returnValue(udf)
1692
1693 def create_node(self, path, is_dir, real=True, which_share=None):
1694 """Creates a node, really (maybe) and in the metadata."""
1695@@ -189,11 +190,12 @@
1696 lr.start()
1697 self.assertEqual(toscan, [self.vm.root.path])
1698
1699+ @defer.inlineCallbacks
1700 def test_empty_rw(self):
1701 """Test with one empty Modify share."""
1702 # create the share
1703- share = self.create_share('share_id', 'rw_share', self.fsm,
1704- self.shares_dir, access_level='Modify')
1705+ share = yield self.create_share('share_id', 'rw_share',
1706+ access_level='Modify')
1707 self.fsm.create(share.path, "share_id", is_dir=True)
1708 self.fsm.set_node_id(share.path, "uuid")
1709
1710@@ -210,11 +212,12 @@
1711 lr.start()
1712 self.assertEqual(sorted(toscan), [share.path, self.vm.root.path])
1713
1714+ @defer.inlineCallbacks
1715 def test_not_empty_rw(self):
1716 """Test with a Modify share with info."""
1717 # create the share
1718- share = self.create_share('share_id', 'ro_share', self.fsm,
1719- self.shares_dir, access_level='Modify')
1720+ share = yield self.create_share('share_id', 'ro_share',
1721+ access_level='Modify')
1722 self.fsm.create(share.path, "share_id", is_dir=True)
1723 self.fsm.set_node_id(share.path, "uuid1")
1724
1725@@ -237,11 +240,12 @@
1726 lr.start()
1727 self.assertEqual(sorted(toscan), [share.path, self.vm.root.path])
1728
1729+ @defer.inlineCallbacks
1730 def test_deleted_rw(self):
1731 """Test with a deleted rw share."""
1732 # create the share
1733- share = self.create_share('share_id', 'rw_share', self.fsm,
1734- self.shares_dir, access_level='Modify')
1735+ share = yield self.create_share('share_id', 'rw_share',
1736+ access_level='Modify')
1737 self.fsm.create(share.path, "share_id", is_dir=True)
1738 self.fsm.set_node_id(share.path, "uuid")
1739
1740@@ -266,11 +270,12 @@
1741 self.assertEqual(vol_id, share.volume_id)
1742 self.assertEqual(sorted(toscan), [self.vm.root.path])
1743
1744+ @defer.inlineCallbacks
1745 def test_deleted_rw_not_empty(self):
1746 """Test with a deleted rw share with some nodes in it."""
1747 # create the share
1748- share = self.create_share('share_id', 'rw_share', self.fsm,
1749- self.shares_dir, access_level='Modify')
1750+ share = yield self.create_share('share_id', 'rw_share',
1751+ access_level='Modify')
1752 self.fsm.create(share.path, "share_id", is_dir=True)
1753 self.fsm.set_node_id(share.path, "uuid")
1754
1755@@ -307,7 +312,7 @@
1756 """Test with a deleted udf."""
1757 # create the udf
1758 udf_path = os.path.expanduser("~/myudf")
1759- udf = self.create_udf('udf_id', 'udf_root_node_id', "~/myudf",
1760+ udf = yield self.create_udf('udf_id', 'udf_root_node_id', "~/myudf",
1761 udf_path, True)
1762 os.makedirs(udf.path)
1763 self.fsm.create(udf.path, 'udf_id', is_dir=True)
1764@@ -337,9 +342,10 @@
1765 class VolumeTestCase(BaseTestCase):
1766 """Test how LocalRescan manages volumes."""
1767
1768+ @defer.inlineCallbacks
1769 def setUp(self):
1770 """Init."""
1771- BaseTestCase.setUp(self)
1772+ yield BaseTestCase.setUp(self)
1773
1774 self.env_var = 'HOME'
1775 self.old_value = os.environ.get(self.env_var, None)
1776@@ -355,7 +361,8 @@
1777 path = os.path.expanduser(suggested_path).encode("utf8")
1778 os.makedirs(path)
1779 udf_id, node_id = 'udf_id%i' % i, 'node_id%i' % i
1780- udf = self.create_udf(udf_id, node_id, suggested_path, path, True)
1781+ udf = yield self.create_udf(udf_id, node_id, suggested_path,
1782+ path, True)
1783 self.volumes.append(udf)
1784
1785 # make FSM aware of it
1786@@ -493,6 +500,7 @@
1787
1788 timeout = 2
1789
1790+ @defer.inlineCallbacks
1791 def setUp(self):
1792 """Set up the test."""
1793 BaseTestCase.setUp(self)
1794@@ -500,8 +508,8 @@
1795 self.lr = LocalRescan(self.vm, self.fsm, self.eq, self.aq)
1796
1797 # create a share
1798- self.share = self.create_share('share_id', 'ro_share', self.fsm,
1799- self.shares_dir, access_level='Modify')
1800+ self.share = yield self.create_share('share_id', 'ro_share',
1801+ access_level='Modify')
1802 self.fsm.create(self.share.path, "share_id", is_dir=True)
1803 self.fsm.set_node_id(self.share.path, "uuidshare")
1804 self.share.node_id = "uuidshare"
1805@@ -535,14 +543,15 @@
1806
1807 timeout = 20
1808
1809+ @defer.inlineCallbacks
1810 def setUp(self):
1811- TwistedBase.setUp(self)
1812+ yield TwistedBase.setUp(self)
1813
1814 # create an udf
1815 udf_path = os.path.join(self.home_dir, "myudf")
1816 os.mkdir(udf_path)
1817- self.udf = self.create_udf('udf_id', 'udf_root_node_id', "~/myudf",
1818- udf_path, True)
1819+ self.udf = yield self.create_udf('udf_id', 'udf_root_node_id',
1820+ "~/myudf", udf_path, True)
1821 self.fsm.create(self.udf.path, 'udf_id', is_dir=True)
1822 self.fsm.set_node_id(self.udf.path, 'udf_root_node_id')
1823
1824@@ -954,11 +963,12 @@
1825 reactor.callLater(.2, self.deferred.callback, None)
1826 return self.deferred
1827
1828+ @defer.inlineCallbacks
1829 def test_one_dir_ro_share(self):
1830 """The dir is in a share that's RO, no error but no action."""
1831 # create the share
1832- share = self.create_share('share_id', 'ro_share2', self.fsm,
1833- self.shares_dir, access_level='View')
1834+ share = yield self.create_share('share_id', 'ro_share2',
1835+ access_level='View')
1836 self.fsm.create(share.path, "share_id", is_dir=True)
1837 self.fsm.set_node_id(share.path, "uuidshare")
1838
1839@@ -1155,20 +1165,21 @@
1840 """Test that simultaneus calls are queued."""
1841 timeout = 2
1842
1843+ @defer.inlineCallbacks
1844 def setUp(self):
1845 """set up the test."""
1846- BaseTestCase.setUp(self)
1847+ yield BaseTestCase.setUp(self)
1848 self.deferred = defer.Deferred()
1849 self.eq = event_queue.EventQueue(self.fsm)
1850 self.lr = LocalRescan(self.vm, self.fsm, self.eq, self.aq)
1851
1852 # create two shares
1853- self.share1 = self.create_share('share_id1', 'ro_share_1', self.fsm,
1854- self.shares_dir, access_level='Modify')
1855+ self.share1 = yield self.create_share('share_id1', 'ro_share_1',
1856+ access_level='Modify')
1857 self.fsm.create(self.share1.path, "share_id1", is_dir=True)
1858 self.fsm.set_node_id(self.share1.path, "uuidshare1")
1859- self.share2 = self.create_share('share_id2', 'ro_share_2', self.fsm,
1860- self.shares_dir, access_level='Modify')
1861+ self.share2 = yield self.create_share('share_id2', 'ro_share_2',
1862+ access_level='Modify')
1863 self.fsm.create(self.share2.path, "share_id2", is_dir=True)
1864 self.fsm.set_node_id(self.share2.path, "uuidshare2")
1865
1866@@ -2007,11 +2018,12 @@
1867 self.startTest(check)
1868 return self.deferred
1869
1870+ @defer.inlineCallbacks
1871 def test_SERVER_file_ro_share(self):
1872 """We were downloading the file, but it was interrupted in RO share."""
1873 # create the file in metadata
1874- ro_share = self.create_share('share_ro_id', 'share_ro2', self.fsm,
1875- self.shares_dir, access_level='View')
1876+ ro_share = yield self.create_share('share_ro_id', 'share_ro2',
1877+ access_level='View')
1878 self.fsm.create(ro_share.path, ro_share.id, is_dir=True)
1879 self.fsm.set_node_id(ro_share.path, "uuidshare")
1880 path = os.path.join(ro_share.path, "a")
1881@@ -2040,16 +2052,17 @@
1882 self.assertTrue(self.handler.check_debug("comp yield", "SERVER"))
1883
1884 self.startTest(check)
1885- return self.deferred
1886+ yield self.deferred
1887
1888+ @defer.inlineCallbacks
1889 def test_SERVER_dir_ro_share(self):
1890 """Found a dir in SERVER in a ro_share.
1891
1892 This was valid before, but no more, so we just fix and log in warning.
1893 """
1894 # create the dir in metadata
1895- ro_share = self.create_share('share_ro_id', 'share_ro2', self.fsm,
1896- self.shares_dir, access_level='View')
1897+ ro_share = yield self.create_share('share_ro_id', 'share_ro2',
1898+ access_level='View')
1899 self.fsm.create(ro_share.path, ro_share.id, is_dir=True)
1900 self.fsm.set_node_id(ro_share.path, "uuidshare")
1901
1902@@ -2078,7 +2091,7 @@
1903 "Found a directory in SERVER"))
1904
1905 self.startTest(check)
1906- return self.deferred
1907+ yield self.deferred
1908
1909 def test_check_stat_None(self):
1910 """Test check_stat with oldstat = None."""
1911@@ -2136,26 +2149,28 @@
1912 self.fsm.set_node_id(self.vm.root.path, self.vm.root.node_id)
1913 return self._test_it(self.vm.root)
1914
1915+ @defer.inlineCallbacks
1916 def test_SERVER_share(self):
1917 """We were downloading the share root dir but it was interrupted."""
1918 # create a share
1919- share = self.create_share('share_id_1', 'rw_share', self.fsm,
1920- self.shares_dir, access_level='Modify')
1921+ share = yield self.create_share('share_id_1', 'rw_share',
1922+ access_level='Modify')
1923 self.fsm.create(share.path, "share_id_1", is_dir=True)
1924 self.fsm.set_node_id(share.path, "uuid_share_1")
1925 share.node_id = "uuid_share_1"
1926 self.vm.shares['share_id_1'] = share
1927- return self._test_it(share)
1928+ yield self._test_it(share)
1929
1930+ @defer.inlineCallbacks
1931 def test_SERVER_udf(self):
1932 """We were downloading the udf root dir, but it was interrupted."""
1933 udf_path = os.path.join(self.home_dir, "myudf")
1934 os.mkdir(udf_path)
1935- udf = self.create_udf('udf_id', 'udf_root_node_id', "~/myudf",
1936- udf_path, True)
1937+ udf = yield self.create_udf('udf_id', 'udf_root_node_id', "~/myudf",
1938+ udf_path, True)
1939 self.fsm.create(udf.path, 'udf_id', is_dir=True)
1940 self.fsm.set_node_id(udf.path, 'udf_root_node_id')
1941- return self._test_it(udf)
1942+ yield self._test_it(udf)
1943
1944
1945 class LimboTests(TwistedBase):
1946@@ -2339,9 +2354,10 @@
1947
1948 timeout = 2
1949
1950+ @defer.inlineCallbacks
1951 def setUp(self):
1952 """Init."""
1953- BaseTestCase.setUp(self)
1954+ yield BaseTestCase.setUp(self)
1955 self._deferred = defer.Deferred()
1956 self.eq = event_queue.EventQueue(self.fsm)
1957 self.original_add = self.eq.add_watch
1958@@ -2361,7 +2377,8 @@
1959 path = os.path.expanduser(suggested_path).encode("utf8")
1960 os.makedirs(path)
1961 udf_id, node_id = 'udf_id', 'node_id'
1962- self.udf = self.create_udf(udf_id, node_id, suggested_path, path, True)
1963+ self.udf = yield self.create_udf(udf_id, node_id, suggested_path,
1964+ path, True)
1965 self.ancestors = self.udf.ancestors # need a fake HOME
1966
1967 # make FSM aware of it
1968
1969=== modified file 'tests/syncdaemon/test_status_listener.py'
1970--- tests/syncdaemon/test_status_listener.py 2011-01-27 20:44:23 +0000
1971+++ tests/syncdaemon/test_status_listener.py 2011-02-03 17:29:42 +0000
1972@@ -120,8 +120,8 @@
1973 public_url = 'http://example.com/foo.mp3'
1974
1975 share_path = os.path.join(self.shares_dir, 'share')
1976- self.main.vm.add_share(Share(path=share_path, volume_id='share',
1977- other_username='other username'))
1978+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share',
1979+ other_username='other username'))
1980 path = os.path.join(share_path, "foo.mp3")
1981 self.main.fs.create(path, str(share_id))
1982 self.main.fs.set_node_id(path, str(node_id))
1983@@ -144,8 +144,8 @@
1984 public_url = 'http://example.com/foo.mp3'
1985
1986 share_path = os.path.join(self.shares_dir, 'share')
1987- self.main.vm.add_share(Share(path=share_path, volume_id='share',
1988- other_username='other username'))
1989+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share',
1990+ other_username='other username'))
1991 path = os.path.join(share_path, "foo.mp3")
1992 self.main.fs.create(path, str(share_id))
1993 self.main.fs.set_node_id(path, str(node_id))
1994@@ -210,7 +210,7 @@
1995 SHARE_ID = "fake share id"
1996 d = defer.Deferred()
1997 share = Share(volume_id=SHARE_ID)
1998- self.main.vm.add_share(share)
1999+ yield self.main.vm.add_share(share)
2000 self._listen_for('VM_SHARE_CREATED', d.callback)
2001 self.main.event_q.push('VM_SHARE_CREATED', share)
2002 yield d
2003
2004=== modified file 'tests/syncdaemon/test_sync.py'
2005--- tests/syncdaemon/test_sync.py 2011-01-25 18:29:04 +0000
2006+++ tests/syncdaemon/test_sync.py 2011-02-03 17:29:42 +0000
2007@@ -75,6 +75,7 @@
2008 class FSKeyTestCase(BaseTwistedTestCase):
2009 """ Base test case for FSKey """
2010
2011+ @defer.inlineCallbacks
2012 def setUp(self):
2013 """ Setup the test """
2014 unittest.TestCase.setUp(self)
2015@@ -93,8 +94,7 @@
2016 self.db)
2017 self.eq = EventQueue(self.fsm)
2018 self.fsm.register_eq(self.eq)
2019- self.share = self.create_share('share', 'share_name',
2020- self.fsm, self.shares_dir)
2021+ self.share = yield self.create_share('share', 'share_name')
2022 self.share_path = self.share.path
2023
2024 def tearDown(self):
2025@@ -103,16 +103,15 @@
2026 self.db.shutdown()
2027 shutil.rmtree(self.test_dir)
2028
2029- @staticmethod
2030- def create_share(share_id, share_name, fsm, shares_dir,
2031- access_level='Modify'):
2032- """ creates a share """
2033- share_path = os.path.join(shares_dir, share_name)
2034+ @defer.inlineCallbacks
2035+ def create_share(self, share_id, share_name, access_level='Modify'):
2036+ """Create a share."""
2037+ share_path = os.path.join(self.shares_dir, share_name)
2038 os.makedirs(share_path)
2039 share = Share(path=share_path, volume_id=share_id,
2040 access_level=access_level)
2041- fsm.vm.add_share(share)
2042- return share
2043+ yield self.fsm.vm.add_share(share)
2044+ defer.returnValue(share)
2045
2046
2047 class FSKeyTests(FSKeyTestCase):
2048
2049=== modified file 'tests/syncdaemon/test_u1sdtool.py'
2050--- tests/syncdaemon/test_u1sdtool.py 2011-01-14 13:11:47 +0000
2051+++ tests/syncdaemon/test_u1sdtool.py 2011-02-03 17:29:42 +0000
2052@@ -179,12 +179,13 @@
2053 d.addCallback(check)
2054 return d
2055
2056+ @defer.inlineCallbacks
2057 def test_show_current_transfers(self):
2058 """test the output of --current_transfers option with transfers in
2059 progress.
2060 """
2061 share_path = os.path.join(self.shares_dir, 'share')
2062- self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
2063+ yield self.main.vm.add_share(Share(path=share_path, volume_id='share_id'))
2064 # create a download
2065 down_path = os.path.join(share_path, "down_path")
2066 self.fs_manager.create(down_path, "share_id")
2067@@ -203,15 +204,13 @@
2068 "downloads:\n path: %(down_path)s\n deflated size: " + \
2069 "10\n bytes read: 1\n"
2070 expected = expected % dict(up_path=up_path, down_path=down_path)
2071- d = self.tool.get_current_uploads()
2072- d.addCallback(lambda result: show_uploads(result, out))
2073- d.addCallback(lambda _: self.tool.get_current_downloads())
2074- d.addCallback(lambda result: show_downloads(result, out))
2075- def check(result):
2076- """check the output"""
2077- self.assertEquals(out.getvalue(), expected)
2078- d.addCallback(check)
2079- return d
2080+ result = yield self.tool.get_current_uploads()
2081+ show_uploads(result, out)
2082+
2083+ result = yield self.tool.get_current_downloads()
2084+ show_downloads(result, out)
2085+
2086+ self.assertEquals(out.getvalue(), expected)
2087
2088 def test_show_state(self):
2089 """test the output of --status """

Subscribers

People subscribed via source and target branches