@@ -226,10 +226,7 @@ def test_check_transition(self):
226226 @patch .object (MultisiteController , 'touch_member' )
227227 @patch .object (MultisiteController , '_disconnected_operation' )
228228 @patch .object (MultisiteController , '_check_transition' )
229- # @patch.object(MultisiteController, '_update_history')
230229 def test_resolve_multisite_leader (self , check_transition , disconnected_operation , touch_member ):
231- # c = get_cluster_initialized_with_leader()
232- # self.multisite.dcs.get_cluster = Mock(return_value=c)
233230 self .multisite .on_change = Mock ()
234231
235232 # update_history.assert_called_once()
@@ -241,7 +238,7 @@ def test_resolve_multisite_leader(self, check_transition, disconnected_operation
241238 # we are a member of the cluster
242239 # touch_member.reset_mock()
243240
244- # unlocked cluster
241+ # Unlocked cluster
245242 c = get_cluster_initialized_without_leader (failover = Failover (0 , '' , 'foo' , None , 'mstest' ))
246243 self .multisite .dcs .get_cluster = Mock (return_value = c )
247244
@@ -274,8 +271,38 @@ def test_resolve_multisite_leader(self, check_transition, disconnected_operation
274271 self .multisite ._resolve_multisite_leader ()
275272 self .multisite .dcs .manual_failover .assert_not_called ()
276273
277- # self.multisite.name = 'leader'
278- # self.multisite._resolve_multisite_leader()
274+ # There is a leader, and it's us
275+ disconnected_operation .reset_mock ()
276+ c = get_cluster_initialized_with_leader ()
277+ self .multisite .dcs .get_cluster = Mock (return_value = c )
278+ # lock is being released
279+ self .multisite .dcs .delete_leader = Mock ()
280+ self .multisite .name = 'leader'
281+ self .multisite ._release = True
282+ self .multisite ._resolve_multisite_leader ()
283+ self .multisite .dcs .delete_leader .assert_called_once_with (c .leader )
284+ check_transition .assert_called_with (leader = False , note = "Released multisite leader status on request" )
285+ disconnected_operation .assert_called_once ()
286+ self .assertFalse (self .multisite ._release )
287+
288+ self .multisite .dcs .update_leader = Mock (return_value = True )
289+ self .multisite ._check_for_failover = Mock ()
290+ self .multisite ._resolve_multisite_leader ()
291+ self .assertIsNone (self .multisite ._standby_config )
292+ check_transition .assert_called_with (leader = True , note = "Already have multisite leader status" )
293+ self .multisite ._check_for_failover .assert_called_once_with (c )
294+
295+ disconnected_operation .reset_mock ()
296+ self .multisite .dcs .update_leader = Mock (return_value = False )
297+ self .multisite ._resolve_multisite_leader ()
298+ disconnected_operation .assert_called_once ()
299+ check_transition .assert_called_with (leader = False , note = "Failed to update multisite leader status" )
300+
301+ # the leader is someone else
302+
303+
304+
305+
279306 # touch_member.assert_called_once()
280307
281308 def test_observe_leader (self ):
0 commit comments