def test_stop_leader(self, fake_is_leader): fake_is_leader.__get__ = mock.Mock(return_value=True) self.coordinator = coordination.RugCoordinator(self.queue) self.assertRaises(coordination.CoordinatorDone, self.coordinator.stop) self.fake_coord.stand_down_group_leader.assert_called_with( self.coordinator.group) self.fake_coord.leave_group.assert_called_with(self.coordinator.group)
def test_setup(self, fake_start): self.coordinator = coordination.RugCoordinator(self.queue) self.assertEqual('memcache://foo_cache', self.coordinator.url) self.assertEqual('foo_coord_group', self.coordinator.group) self.assertEqual(9, self.coordinator.heartbeat_interval) self.assertEqual('foo_host', self.coordinator.host) self.assertTrue(fake_start.called)
def test_start_raises(self): self.coordinator = coordination.RugCoordinator(self.queue) self.fake_coord.create_group.side_effect = ( tz_coordination.GroupAlreadyExist(self.coordinator.group)) self.fake_coord.join_group.side_effect = ( tz_coordination.MemberAlreadyExist( self.coordinator.host, self.coordinator.group)) return self.test_start()
def test_is_leader(self): fake_async_resp = mock.MagicMock( get=mock.MagicMock(return_value='foo_host') ) self.fake_coord.get_leader.return_value = fake_async_resp self.coordinator = coordination.RugCoordinator(self.queue) self.assertEqual(self.coordinator.is_leader, True) self.fake_coord.get_leader.assert_called_with(self.coordinator.group)
def test_members_filter_no_leader(self): fake_async_resp = mock.MagicMock( get=mock.MagicMock(return_value=['foo', 'bar']) ) self.fake_coord.get_members.return_value = fake_async_resp self.coordinator = coordination.RugCoordinator(self.queue) self.assertEqual(self.coordinator.members, ['foo', 'bar']) self.fake_coord.get_members.assert_called_with(self.coordinator.group)
def test_cluster_changed(self, fake_members, fake_start): fake_members.__get__ = mock.Mock(return_value=['foo', 'bar']) self.coordinator = coordination.RugCoordinator(self.queue) expected_rebalance_event = event.Event( resource=event.Resource('*', '*', '*'), crud=event.REBALANCE, body={'members': ['foo', 'bar']}) self.coordinator.cluster_changed(event=None) expected = ('*', expected_rebalance_event) res = self.queue.get() self.assertEqual(res, expected)
def test_start(self, fake_cluster_changed): self.coordinator = coordination.RugCoordinator(self.queue) self.assertTrue(self.fake_coord.start.called) self.fake_coord.create_group.assert_called_with('foo_coord_group') self.fake_coord.join_group.assert_called_with('foo_coord_group') self.fake_coord.watch_join_group.assert_called_with( 'foo_coord_group', fake_cluster_changed) self.fake_coord.watch_leave_group.assert_called_with( 'foo_coord_group', fake_cluster_changed) self.assertTrue(self.fake_coord.heartbeat.called) fake_cluster_changed.assert_called_with( event=None, node_bootstrap=True)
def test_run(self, fake_stop, fake_sleep): fake_sleep.side_effect = coordination.CoordinatorDone() self.coordinator = coordination.RugCoordinator(self.queue) self.coordinator.run() self.assertTrue(self.fake_coord.heartbeat.called) self.assertTrue(self.fake_coord.run_watchers.called)