public virtual void TestRMDispatcherForHA() { string errorMessageForEventHandler = "Expect to get the same number of handlers"; string errorMessageForService = "Expect to get the same number of services"; configuration.SetBoolean(YarnConfiguration.AutoFailoverEnabled, false); Configuration conf = new YarnConfiguration(configuration); rm = new _MockRM_313(conf); rm.Init(conf); int expectedEventHandlerCount = ((TestRMHA.MyCountingDispatcher)rm.GetRMContext() .GetDispatcher()).GetEventHandlerCount(); int expectedServiceCount = rm.GetServices().Count; NUnit.Framework.Assert.IsTrue(expectedEventHandlerCount != 0); HAServiceProtocol.StateChangeRequestInfo requestInfo = new HAServiceProtocol.StateChangeRequestInfo (HAServiceProtocol.RequestSource.RequestByUser); NUnit.Framework.Assert.AreEqual(StateErr, HAServiceProtocol.HAServiceState.Initializing , rm.adminService.GetServiceStatus().GetState()); NUnit.Framework.Assert.IsFalse("RM is ready to become active before being started" , rm.adminService.GetServiceStatus().IsReadyToBecomeActive()); rm.Start(); //call transitions to standby and active a couple of times rm.adminService.TransitionToStandby(requestInfo); rm.adminService.TransitionToActive(requestInfo); rm.adminService.TransitionToStandby(requestInfo); rm.adminService.TransitionToActive(requestInfo); rm.adminService.TransitionToStandby(requestInfo); TestRMHA.MyCountingDispatcher dispatcher = (TestRMHA.MyCountingDispatcher)rm.GetRMContext ().GetDispatcher(); NUnit.Framework.Assert.IsTrue(!dispatcher.IsStopped()); rm.adminService.TransitionToActive(requestInfo); NUnit.Framework.Assert.AreEqual(errorMessageForEventHandler, expectedEventHandlerCount , ((TestRMHA.MyCountingDispatcher)rm.GetRMContext().GetDispatcher()).GetEventHandlerCount ()); NUnit.Framework.Assert.AreEqual(errorMessageForService, expectedServiceCount, rm. GetServices().Count); // Keep the dispatcher reference before transitioning to standby dispatcher = (TestRMHA.MyCountingDispatcher)rm.GetRMContext().GetDispatcher(); rm.adminService.TransitionToStandby(requestInfo); NUnit.Framework.Assert.AreEqual(errorMessageForEventHandler, expectedEventHandlerCount , ((TestRMHA.MyCountingDispatcher)rm.GetRMContext().GetDispatcher()).GetEventHandlerCount ()); NUnit.Framework.Assert.AreEqual(errorMessageForService, expectedServiceCount, rm. GetServices().Count); NUnit.Framework.Assert.IsTrue(dispatcher.IsStopped()); rm.Stop(); }