~rye/ubuntuone-client/unique-check-is-unique

« back to all changes in this revision

Viewing changes to tests/syncdaemon/test_action_queue.py

  • Committer: Tarmac
  • Author(s): facundo at com
  • Date: 2010-09-10 14:36:01 UTC
  • mfrom: (676.3.3 fix-marker-issues)
  • Revision ID: tarmac-20100910143601-bfa0624ufkpgzmp5
Marker chains are errbacked ok now.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1420
1420
 
1421
1421
        # set the marker and check
1422
1422
        self.action_queue.uuid_map.err(marker, Failure(Exception('bad')))
 
1423
        yield d
 
1424
        self.assertTrue(self.handler.check_error("failed marker:foo"))
1423
1425
        try:
1424
 
            yield d
 
1426
            yield self.cmd.markers_resolved_deferred
1425
1427
        except Exception, e:
1426
1428
            self.assertEqual(str(e), 'bad')
1427
 
            self.assertTrue(self.handler.check_error("failed marker:foo"))
 
1429
        else:
 
1430
            self.fail("An exception should have been raised!")
 
1431
 
 
1432
    @defer.inlineCallbacks
 
1433
    def test_demark_two_markers_ok(self):
 
1434
        """Test demark with two markers that finish ok."""
 
1435
        # call demark with both
 
1436
        marker1 = MDMarker('foo')
 
1437
        marker2 = MDMarker('bar')
 
1438
        self.cmd.possible_markers = 'foo', 'bar'
 
1439
        self.cmd.foo = marker1
 
1440
        self.cmd.bar = marker2
 
1441
        d = self.cmd.demark()
 
1442
        self.action_queue.uuid_map.set(marker1, 'data1')
 
1443
        self.action_queue.uuid_map.set(marker2, 'data2')
 
1444
        yield d
 
1445
 
 
1446
        # check
 
1447
        self.assertEqual(self.cmd.foo, 'data1')
 
1448
        self.assertEqual(self.cmd.bar, 'data2')
 
1449
        yield self.cmd.markers_resolved_deferred
 
1450
 
 
1451
    @defer.inlineCallbacks
 
1452
    def test_demark_two_markers_one_fail(self):
 
1453
        """Test demark with two markers that one ends in failure."""
 
1454
        # call demark with both
 
1455
        marker1 = MDMarker('foo')
 
1456
        marker2 = MDMarker('bar')
 
1457
        self.cmd.possible_markers = 'foo', 'bar'
 
1458
        self.cmd.foo = marker1
 
1459
        self.cmd.bar = marker2
 
1460
        d = self.cmd.demark()
 
1461
        self.action_queue.uuid_map.set(marker1, 'data ok')
 
1462
        self.action_queue.uuid_map.err(marker2, Failure(Exception('data bad')))
 
1463
        yield d
 
1464
 
 
1465
        # check
 
1466
        try:
 
1467
            yield self.cmd.markers_resolved_deferred
 
1468
        except Exception, e:
 
1469
            self.assertEqual(str(e), 'data bad')
 
1470
        else:
 
1471
            self.fail("An exception should have been raised!")
1428
1472
 
1429
1473
    @defer.inlineCallbacks
1430
1474
    def test_run_sets_running(self):
1493
1537
        yield self.cmd.run()
1494
1538
        self.assertFalse(self.cmd.running)
1495
1539
 
1496
 
    def test_run_done_running_if_problem(self):
 
1540
    def test_run_done_running_if_problem_in_start(self):
1497
1541
        """If _start fails, done running."""
1498
 
        self.cmd.end_errback = lambda _: None # consume the failure
 
1542
        called = []
 
1543
        self.cmd.end_errback = lambda _: called.append(True)
1499
1544
        self.cmd._start = lambda: defer.fail(Exception('foo'))
1500
1545
        self.cmd.run()
1501
1546
        self.assertFalse(self.cmd.running)
 
1547
        self.assertTrue(called)
 
1548
 
 
1549
    def test_run_done_running_if_problem_in_markers(self):
 
1550
        """If deferring markers fails, done running."""
 
1551
        called = []
 
1552
        self.cmd.end_errback = lambda _: called.append(True)
 
1553
        self.cmd.markers_resolved_deferred.errback(Failure(Exception('foo')))
 
1554
        self.cmd.run()
 
1555
        self.assertFalse(self.cmd.running)
 
1556
        self.assertTrue(called)
1502
1557
 
1503
1558
    def test_queue_calls_prequeued(self):
1504
1559
        """Do the pre-queue when queued."""