|
@@ -452,6 +452,10 @@ public class TestActiveStandbyElector {
|
|
|
Event.KeeperState.SyncConnected);
|
|
|
elector.processWatchEvent(mockZK, mockEvent);
|
|
|
verifyExistCall(1);
|
|
|
+ Assert.assertTrue(elector.isMonitorLockNodePending());
|
|
|
+ elector.processResult(Code.SESSIONEXPIRED.intValue(), ZK_LOCK_NAME,
|
|
|
+ mockZK, new Stat());
|
|
|
+ Assert.assertFalse(elector.isMonitorLockNodePending());
|
|
|
|
|
|
// session expired should enter safe mode and initiate re-election
|
|
|
// re-election checked via checking re-creation of new zookeeper and
|
|
@@ -495,6 +499,13 @@ public class TestActiveStandbyElector {
|
|
|
ZK_LOCK_NAME);
|
|
|
Mockito.verify(mockApp, Mockito.times(1)).becomeStandby();
|
|
|
verifyExistCall(1);
|
|
|
+ Assert.assertTrue(elector.isMonitorLockNodePending());
|
|
|
+
|
|
|
+ Stat stat = new Stat();
|
|
|
+ stat.setEphemeralOwner(0L);
|
|
|
+ Mockito.when(mockZK.getSessionId()).thenReturn(1L);
|
|
|
+ elector.processResult(Code.OK.intValue(), ZK_LOCK_NAME, mockZK, stat);
|
|
|
+ Assert.assertFalse(elector.isMonitorLockNodePending());
|
|
|
|
|
|
WatchedEvent mockEvent = Mockito.mock(WatchedEvent.class);
|
|
|
Mockito.when(mockEvent.getPath()).thenReturn(ZK_LOCK_NAME);
|
|
@@ -504,12 +515,18 @@ public class TestActiveStandbyElector {
|
|
|
Event.EventType.NodeDataChanged);
|
|
|
elector.processWatchEvent(mockZK, mockEvent);
|
|
|
verifyExistCall(2);
|
|
|
+ Assert.assertTrue(elector.isMonitorLockNodePending());
|
|
|
+ elector.processResult(Code.OK.intValue(), ZK_LOCK_NAME, mockZK, stat);
|
|
|
+ Assert.assertFalse(elector.isMonitorLockNodePending());
|
|
|
|
|
|
// monitoring should be setup again after event is received
|
|
|
Mockito.when(mockEvent.getType()).thenReturn(
|
|
|
Event.EventType.NodeChildrenChanged);
|
|
|
elector.processWatchEvent(mockZK, mockEvent);
|
|
|
verifyExistCall(3);
|
|
|
+ Assert.assertTrue(elector.isMonitorLockNodePending());
|
|
|
+ elector.processResult(Code.OK.intValue(), ZK_LOCK_NAME, mockZK, stat);
|
|
|
+ Assert.assertFalse(elector.isMonitorLockNodePending());
|
|
|
|
|
|
// lock node deletion when in standby mode should create znode again
|
|
|
// successful znode creation enters active state and sets monitor
|
|
@@ -524,6 +541,10 @@ public class TestActiveStandbyElector {
|
|
|
ZK_LOCK_NAME);
|
|
|
Mockito.verify(mockApp, Mockito.times(1)).becomeActive();
|
|
|
verifyExistCall(4);
|
|
|
+ Assert.assertTrue(elector.isMonitorLockNodePending());
|
|
|
+ stat.setEphemeralOwner(1L);
|
|
|
+ elector.processResult(Code.OK.intValue(), ZK_LOCK_NAME, mockZK, stat);
|
|
|
+ Assert.assertFalse(elector.isMonitorLockNodePending());
|
|
|
|
|
|
// lock node deletion in active mode should enter neutral mode and create
|
|
|
// znode again successful znode creation enters active state and sets
|
|
@@ -538,6 +559,9 @@ public class TestActiveStandbyElector {
|
|
|
ZK_LOCK_NAME);
|
|
|
Mockito.verify(mockApp, Mockito.times(2)).becomeActive();
|
|
|
verifyExistCall(5);
|
|
|
+ Assert.assertTrue(elector.isMonitorLockNodePending());
|
|
|
+ elector.processResult(Code.OK.intValue(), ZK_LOCK_NAME, mockZK, stat);
|
|
|
+ Assert.assertFalse(elector.isMonitorLockNodePending());
|
|
|
|
|
|
// bad path name results in fatal error
|
|
|
Mockito.when(mockEvent.getPath()).thenReturn(null);
|
|
@@ -570,6 +594,13 @@ public class TestActiveStandbyElector {
|
|
|
ZK_LOCK_NAME);
|
|
|
Mockito.verify(mockApp, Mockito.times(1)).becomeStandby();
|
|
|
verifyExistCall(1);
|
|
|
+ Assert.assertTrue(elector.isMonitorLockNodePending());
|
|
|
+
|
|
|
+ Stat stat = new Stat();
|
|
|
+ stat.setEphemeralOwner(0L);
|
|
|
+ Mockito.when(mockZK.getSessionId()).thenReturn(1L);
|
|
|
+ elector.processResult(Code.OK.intValue(), ZK_LOCK_NAME, mockZK, stat);
|
|
|
+ Assert.assertFalse(elector.isMonitorLockNodePending());
|
|
|
|
|
|
WatchedEvent mockEvent = Mockito.mock(WatchedEvent.class);
|
|
|
Mockito.when(mockEvent.getPath()).thenReturn(ZK_LOCK_NAME);
|