42
44
timeutils.utcnow.override_time = self.override_start
43
45
self.partition_coordinator = coordination.PartitionCoordinator()
44
46
self.partition_coordinator.coordination_rpc = mock.Mock()
47
#add extra logger to check exception conditions and logged content
48
self.output = StringIO.StringIO()
49
self.str_handler = logging.StreamHandler(self.output)
50
coordination.LOG.logger.addHandler(self.str_handler)
46
52
def tearDown(self):
47
53
super(TestCoordinate, self).tearDown()
48
54
timeutils.utcnow.override_time = None
56
coordination.LOG.logger.removeHandler(self.str_handler)
50
59
def _no_alarms(self):
51
60
self.api_client.alarms.list.return_value = []
382
391
alarms = self.partition_coordinator.assigned_alarms(self.api_client)
383
392
self.assertEqual(alarms, self._current_alarms())
394
def test__record_oldest(self):
395
# Test when the partition to be recorded is the same as the oldest.
396
self.partition_coordinator._record_oldest(
397
self.partition_coordinator.oldest, True)
398
self.assertIsNone(self.partition_coordinator.oldest)
400
def test_check_mastership(self):
401
# Test the method exception condition.
402
self.partition_coordinator._is_master = mock.Mock(
403
side_effect=Exception('Boom!'))
404
self.partition_coordinator.check_mastership(10, None)
405
self.assertTrue('mastership check failed' in self.output.getvalue())
407
def test_report_presence(self):
408
self.partition_coordinator.coordination_rpc.presence = mock.Mock(
409
side_effect=Exception('Boom!'))
410
self.partition_coordinator.report_presence()
411
self.assertTrue('presence reporting failed' in self.output.getvalue())
413
def test_assigned_alarms(self):
414
api_client = mock.MagicMock()
415
api_client.alarms = mock.Mock(side_effect=Exception('Boom!'))
416
self.partition_coordinator.assignment = ['something']
417
self.partition_coordinator.assigned_alarms(api_client)
418
self.assertTrue('assignment retrieval failed' in
419
self.output.getvalue())
422
class TestPartitionIdentity(test.BaseTestCase):
424
super(TestPartitionIdentity, self).setUp()
425
self.id_1st = coordination.PartitionIdentity(str(uuid.uuid4()), 1)
426
self.id_2nd = coordination.PartitionIdentity(str(uuid.uuid4()), 2)
428
def test_identity_ops(self):
429
self.assertNotEqual(self.id_1st, 'Nothing')
430
self.assertNotEqual(self.id_1st, self.id_2nd)
431
self.assertTrue(self.id_1st < None)
432
self.assertFalse(self.id_1st < 'Nothing')
433
self.assertTrue(self.id_2nd > self.id_1st)