Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
 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()
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
    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)
Beispiel #7
0
 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)
Beispiel #8
0
 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)