~alecu/ubuntuone-client/gsd-plugin-remove-quota

« back to all changes in this revision

Viewing changes to tests/platform/linux/eventlog/test_zg_listener.py

  • Committer: Tarmac
  • Author(s): Alejandro J. Cura
  • Date: 2011-03-21 16:41:20 UTC
  • mfrom: (919.1.2 fix-ziggy-createshares)
  • Revision ID: tarmac-20110321164120-yl1bzssmqrugib9l
Fix failure logging to zeitgeist on AQ_CREATE_SHARE_OK, and fixed a few randomly failing tests. LP: #708145 and LP: #723832

Show diffs side-by-side

added added

removed removed

Lines of Context:
84
84
    def __init__(self):
85
85
        """Initialize this instance."""
86
86
        self.events = []
 
87
        self.deferreds = []
87
88
 
88
89
    def log(self, event):
89
90
        """Log the event."""
90
91
        self.events.append(event)
 
92
        if self.deferreds:
 
93
            self.callback_next_deferred(event)
 
94
 
 
95
    def callback_next_deferred(self, event):
 
96
        """Pop the next deferred and callback it."""
 
97
        d = self.deferreds.pop()
 
98
        if d:
 
99
            d.callback(event)
91
100
 
92
101
def listen_for(event_q, event, callback, count=1, collect=False):
93
102
    """Setup a EQ listener for the specified event."""
126
135
        self.patch(zglog, "ZeitgeistLogger", MockLogger)
127
136
        self.listener = ZeitgeistListener(self.fs, self.vm)
128
137
        self.event_q.subscribe(self.listener)
 
138
        self.patch(self.event_q, "ignored_base_exception", RuntimeError)
129
139
 
130
140
    def _listen_for(self, *args, **kwargs):
131
141
        return listen_for(self.main.event_q, *args, **kwargs)
134
144
class ZeitgeistSharesTestCase(ZeitgeistListenerTestCase):
135
145
    """Tests for all Share-related zeitgeist events."""
136
146
 
 
147
    @defer.inlineCallbacks
137
148
    def test_share_created_with_username_is_logged(self):
138
149
        """A ShareCreated event is logged."""
139
150
        fake_username = "fake user"
150
161
                                   share_id=share_id,
151
162
                                   marker=marker)
152
163
 
 
164
        d = defer.Deferred()
 
165
        self._listen_for('AQ_CREATE_SHARE_OK', d.callback, 1, collect=True)
153
166
        self.patch(self.main.action_q, "create_share", fake_create_share)
154
167
        self.vm.create_share(path, fake_username, 'shared_name', 'View')
155
168
 
 
169
        yield d
 
170
 
156
171
        self.assert_folder_shared_is_logged(path, fake_username)
157
 
    test_share_created_with_username_is_logged = """
158
 
        This test failed some times, Alecu told me to skip it, he will
159
 
        check later (opened bug #723832 for this) [Facundo]
160
 
        """
161
172
 
162
173
    def test_share_created_with_email_is_logged(self):
163
174
        """A ShareCreated event is logged."""
383
394
        self.patch(self.main.action_q, "create_udf", create_udf)
384
395
 
385
396
        d = defer.Deferred()
386
 
        self._listen_for('VM_UDF_CREATED', d.callback, 1, collect=True)
 
397
        self.listener.zg.deferreds.append(d)
387
398
        self.vm.create_udf(path)
388
399
        yield d
389
400
 
404
415
        self.assertTrue(folder.origin.endswith(path))
405
416
        self.assertEqual(folder.mimetype, DIRECTORY_MIMETYPE)
406
417
        self.assertEqual(folder.storage, STORAGE_NETWORK)
407
 
    test_udf_create_is_logged.skip = """
408
 
        This test failed some times, Alecu told me to skip it, he will
409
 
        check later (opened bug #723832 for this) [Facundo]
410
 
        """
411
418
 
412
419
    @defer.inlineCallbacks
413
420
    def test_udf_delete_is_logged(self):
416
423
        node_id = uuid.uuid4()
417
424
        path = os.path.join(self.home_dir, u'ñoño'.encode('utf-8'))
418
425
 
 
426
        d = defer.Deferred()
 
427
        self.listener.zg.deferreds.append(d)
 
428
 
419
429
        def create_udf(path, name, marker):
420
430
            """Fake create_udf."""
421
431
            # check that the marker is the full path to the udf
430
440
 
431
441
        self.patch(self.main.action_q, "create_udf", create_udf)
432
442
 
433
 
        d = defer.Deferred()
434
 
        self._listen_for('VM_UDF_CREATED', d.callback, 1, collect=True)
435
443
        self.vm.create_udf(path)
436
444
        yield d
437
445
 
441
449
 
442
450
        self.patch(self.main.action_q, "delete_volume", delete_volume)
443
451
 
 
452
        self.assertEqual(len(self.listener.zg.events), 1)
 
453
        event = self.listener.zg.events[0]
 
454
 
 
455
        d2 = defer.Deferred()
 
456
        self.listener.zg.deferreds.append(d2)
444
457
        self.vm.delete_volume(str(id))
445
 
 
446
 
        self.assertEqual(len(self.listener.zg.events), 1)
447
 
        event = self.listener.zg.events[0]
448
 
 
449
 
        d = defer.Deferred()
450
 
        self._listen_for('VM_VOLUME_DELETED', d.callback, 1, collect=True)
451
 
        yield d
 
458
        yield d2
452
459
 
453
460
        self.assertEqual(len(self.listener.zg.events), 2)
454
461
        event = self.listener.zg.events[1]
467
474
        self.assertTrue(folder.origin.endswith(path))
468
475
        self.assertEqual(folder.mimetype, DIRECTORY_MIMETYPE)
469
476
        self.assertEqual(folder.storage, STORAGE_DELETED)
470
 
    test_udf_delete_is_logged.skip = """
471
 
        This test failed some times, Alecu told me to skip it, he will
472
 
        check later (opened bug #723832 for this) [Facundo]
473
 
        """
474
477
 
475
478
    @defer.inlineCallbacks
476
479
    def test_udf_subscribe_is_logged(self):
480
483
                               subscribed=False)
481
484
        yield self.main.vm.add_udf(udf)
482
485
        d = defer.Deferred()
483
 
        self._listen_for('VM_UDF_SUBSCRIBED', d.callback, 1, collect=True)
 
486
        self.listener.zg.deferreds.append(d)
484
487
        self.vm.subscribe_udf(udf.volume_id)
485
488
        yield d
486
489
 
501
504
        self.assertTrue(folder.origin.startswith(URI_PROTOCOL_U1))
502
505
        self.assertEqual(folder.mimetype, DIRECTORY_MIMETYPE)
503
506
        self.assertEqual(folder.storage, STORAGE_LOCAL)
504
 
    test_udf_subscribe_is_logged.skip = """
505
 
        This test failed some times, Alecu told me to skip it, he will
506
 
        check later (opened bug #723832 for this) [Facundo]
507
 
        """
508
507
 
509
508
    @defer.inlineCallbacks
510
509
    def test_udf_unsubscribe_is_logged(self):