public virtual void Handle(RMContainerEvent @event) { Log.Debug("Processing " + @event.GetContainerId() + " of type " + @event.GetType( )); try { writeLock.Lock(); RMContainerState oldState = GetState(); try { stateMachine.DoTransition(@event.GetType(), @event); } catch (InvalidStateTransitonException e) { Log.Error("Can't handle this event at current state", e); Log.Error("Invalid event " + @event.GetType() + " on container " + this.containerId ); } if (oldState != GetState()) { Log.Info(@event.GetContainerId() + " Container Transitioned from " + oldState + " to " + GetState()); } } finally { writeLock.Unlock(); } }
/// <exception cref="System.Exception"/> public virtual bool WaitForState(MockNM nm, ContainerId containerId, RMContainerState containerState, int timeoutMillisecs) { RMContainer container = GetResourceScheduler().GetRMContainer(containerId); int timeoutSecs = 0; while (container == null && timeoutSecs++ < timeoutMillisecs / 100) { nm.NodeHeartbeat(true); container = GetResourceScheduler().GetRMContainer(containerId); System.Console.Out.WriteLine("Waiting for container " + containerId + " to be allocated." ); Sharpen.Thread.Sleep(100); if (timeoutMillisecs <= timeoutSecs * 100) { return(false); } } NUnit.Framework.Assert.IsNotNull("Container shouldn't be null", container); while (!containerState.Equals(container.GetState()) && timeoutSecs++ < timeoutMillisecs / 100) { System.Console.Out.WriteLine("Container : " + containerId + " State is : " + container .GetState() + " Waiting for state : " + containerState); nm.NodeHeartbeat(true); Sharpen.Thread.Sleep(100); if (timeoutMillisecs <= timeoutSecs * 100) { return(false); } } System.Console.Out.WriteLine("Container State is : " + container.GetState()); NUnit.Framework.Assert.AreEqual("Container state is not correct (timedout)", containerState , container.GetState()); return(true); }
/// <exception cref="System.Exception"/> public virtual bool WaitForState(MockNM nm, ContainerId containerId, RMContainerState containerState) { // default is wait for 30,000 ms return(WaitForState(nm, containerId, containerState, 30 * 1000)); }