Exemplo n.º 1
0
        public void Test5Intensity1PeriodRestartStrategy()
        {
            var restartFiveInOneSupervisorTestResults = new RestartFiveInOneSupervisorActor.RestartFiveInOneSupervisorTestResults();
            var supervisor = TestWorld.ActorFor <ISupervisor>(
                Definition.Has <RestartFiveInOneSupervisorActor>(
                    Definition.Parameters(restartFiveInOneSupervisorTestResults), "resuming-5-1-supervisor"));
            var failureControlTestResults = new FailureControlActor.FailureControlTestResults();
            var failure = TestWorld.ActorFor <IFailureControl>(
                Definition.Has <FailureControlActor>(
                    Definition.Parameters(failureControlTestResults), supervisor.ActorInside, "failure-for-stop"));

            var failureAccess = failureControlTestResults.AfterCompleting(0);
            var restartAccess = restartFiveInOneSupervisorTestResults.AfterCompleting(5);

            for (var idx = 1; idx <= 5; ++idx)
            {
                failureAccess = failureControlTestResults.AfterCompleting(1);
                failure.Actor.FailNow();
                failure.Actor.AfterFailure();
            }

            Assert.Equal(5, failureAccess.ReadFrom <int>("failNowCount"));
            Assert.Equal(5, failureAccess.ReadFrom <int>("afterFailureCount"));

            failureAccess = failureControlTestResults.AfterCompleting(1);
            restartAccess = restartFiveInOneSupervisorTestResults.AfterCompleting(1);

            failure.Actor.FailNow();
            failure.Actor.AfterFailure();

            Assert.True(failure.ActorInside.IsStopped);
            Assert.Equal(6, failureAccess.ReadFrom <int>("failNowCount"));
            Assert.Equal(5, failureAccess.ReadFrom <int>("afterFailureCount"));
            Assert.Equal(6, restartAccess.ReadFrom <int>("informedCount"));
        }
Exemplo n.º 2
0
        public void Test5Intensity1PeriodRestartStrategy()
        {
            var restartFiveInOneSupervisorTestResults = new RestartFiveInOneSupervisorActor.RestartFiveInOneSupervisorTestResults();
            var supervisor = TestWorld.ActorFor <ISupervisor>(
                Definition.Has <RestartFiveInOneSupervisorActor>(
                    Definition.Parameters(restartFiveInOneSupervisorTestResults), "resuming-5-1-supervisor"));
            var failureControlTestResults = new FailureControlActor.FailureControlTestResults();
            var failure = TestWorld.ActorFor <IFailureControl>(
                Definition.Has <FailureControlActor>(
                    Definition.Parameters(failureControlTestResults), supervisor.ActorInside, "failure-for-stop"));

            failureControlTestResults.UntilFailNow   = Until(5);
            failureControlTestResults.UntilAfterFail = Until(5);

            for (var idx = 1; idx <= 5; ++idx)
            {
                restartFiveInOneSupervisorTestResults.UntilInform = Until(1);
                failure.Actor.FailNow();
                restartFiveInOneSupervisorTestResults.UntilInform.Completes();
                failure.Actor.AfterFailure();
            }
            failureControlTestResults.UntilFailNow.Completes();
            failureControlTestResults.UntilAfterFail.Completes();

            Assert.Equal(5, failureControlTestResults.FailNowCount.Get());
            Assert.Equal(5, failureControlTestResults.AfterFailureCount.Get());

            failureControlTestResults.UntilFailNow            = Until(1);
            failureControlTestResults.UntilAfterFail          = Until(0);
            restartFiveInOneSupervisorTestResults.UntilInform = Until(1);

            failure.Actor.FailNow();
            failure.Actor.AfterFailure();

            failureControlTestResults.UntilFailNow.Completes();
            restartFiveInOneSupervisorTestResults.UntilInform.Completes();
            failureControlTestResults.UntilAfterFail.Completes();

            Assert.True(failure.ActorInside.IsStopped);
            Assert.Equal(6, failureControlTestResults.FailNowCount.Get());
            Assert.Equal(6, restartFiveInOneSupervisorTestResults.InformedCount.Get());
            Assert.Equal(5, failureControlTestResults.AfterFailureCount.Get());
        }