Esempio n. 1
0
        public void Test_SplitBrain_Backup()
        {
            StateChanged <InstanceState> stateChanged = null;
            var                 observer = new MockStateObserver(s => stateChanged = s, Assert.IsNull);
            InstanceState       localState;
            ClusterException    cex     = null;
            ClusterStateMachine machine = CreateClusterStateMachine(observer, NodeRole.Backup, out localState,
                                                                    ex => cex = ex);
            var newState = new InstanceState
            {
                CurrentState = machine.Active,
                Role         = NodeRole.Backup,
                Status       = NodeStatus.Active
            };

            machine.TransitionToState(newState, machine.Active);

            var remoteState = new NodeState {
                Role = NodeRole.Primary, Status = NodeStatus.Active
            };

            machine.RaiseEvent(newState, machine.PartnerStatusReceived, remoteState);

            Assert.AreEqual(ClusterFailureReason.SplitBrain, cex.Reason);
            Assert.AreEqual("Stopped", stateChanged.Previous.Name);
            Assert.AreEqual("Final", stateChanged.Current.Name);
        }