/// <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();
        }
示例#2
0
 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);
 }
示例#3
0
 /// <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;
 }