/// <exception cref="System.Exception"/> public virtual void TestHandleSessionExpiration() { ActiveStandbyElector.ActiveStandbyElectorCallback cb = cbs[0]; byte[] appData = appDatas[0]; ActiveStandbyElector elector = electors[0]; // Let the first elector become active elector.EnsureParentZNode(); elector.JoinElection(appData); ZooKeeperServer zks = GetServer(serverFactory); ActiveStandbyElectorTestUtil.WaitForActiveLockData(null, zks, ParentDir, appData); Org.Mockito.Mockito.Verify(cb, Org.Mockito.Mockito.Timeout(1000)).BecomeActive(); CheckFatalsAndReset(); Log.Info("========================== Expiring session"); zks.CloseSession(elector.GetZKSessionIdForTests()); // Should enter neutral mode when disconnected Org.Mockito.Mockito.Verify(cb, Org.Mockito.Mockito.Timeout(1000)).EnterNeutralMode (); // Should re-join the election and regain active ActiveStandbyElectorTestUtil.WaitForActiveLockData(null, zks, ParentDir, appData); Org.Mockito.Mockito.Verify(cb, Org.Mockito.Mockito.Timeout(1000)).BecomeActive(); CheckFatalsAndReset(); Log.Info("========================== Quitting election"); elector.QuitElection(false); ActiveStandbyElectorTestUtil.WaitForActiveLockData(null, zks, ParentDir, null); // Double check that we don't accidentally re-join the election // due to receiving the "expired" event. Thread.Sleep(1000); Org.Mockito.Mockito.Verify(cb, Org.Mockito.Mockito.Never()).BecomeActive(); ActiveStandbyElectorTestUtil.WaitForActiveLockData(null, zks, ParentDir, null); CheckFatalsAndReset(); }
public virtual void Init() { count = 0; mockZK = Org.Mockito.Mockito.Mock <ZooKeeper>(); mockApp = Org.Mockito.Mockito.Mock <ActiveStandbyElector.ActiveStandbyElectorCallback >(); elector = new TestActiveStandbyElector.ActiveStandbyElectorTester(this, "hostPort" , 1000, ZkParentName, ZooDefs.Ids.OpenAclUnsafe, mockApp); }
/// <exception cref="System.IO.IOException"/> /// <exception cref="Org.Apache.Zookeeper.KeeperException"/> internal ActiveStandbyElectorTester(TestActiveStandbyElector _enclosing, string hostPort , int timeout, string parent, IList <ACL> acl, ActiveStandbyElector.ActiveStandbyElectorCallback app) : base(hostPort, timeout, parent, acl, Collections.EmptyList <ZKUtil.ZKAuthInfo >(), app, CommonConfigurationKeys.HaFcElectorZkOpRetriesDefault) { this._enclosing = _enclosing; }