public void TestRestartSupervisor()
        {
            var restartSupervisorTestResults = new RestartSupervisorTestResults();
            var supervisor = TestWorld.ActorFor <ISupervisor>(
                Definition.Has <RestartSupervisorActor>(
                    Definition.Parameters(restartSupervisorTestResults), "restart-supervisor"));
            var failureControlTestResults = new FailureControlActor.FailureControlTestResults();
            var failure = TestWorld.ActorFor <IFailureControl>(
                Definition.Has <FailureControlActor>(
                    Definition.Parameters(failureControlTestResults), supervisor.ActorInside, "failure-for-restart"));

            var failureAccess = failureControlTestResults.AfterCompleting(6);
            var restartAccess = restartSupervisorTestResults.AfterCompleting(1);

            failure.Actor.FailNow();

            Assert.Equal(1, restartAccess.ReadFrom <int>("informedCount"));
            Assert.Equal(2, failureAccess.ReadFrom <int>("beforeStartCount"));
            Assert.Equal(1, failureAccess.ReadFrom <int>("failNowCount"));
            Assert.Equal(1, failureAccess.ReadFrom <int>("afterRestartCount"));
            Assert.Equal(1, failureAccess.ReadFrom <int>("afterStopCount"));
            Assert.Equal(1, failureAccess.ReadFrom <int>("beforeRestartCount"));

            var afterFailureAccess = failureControlTestResults.AfterCompleting(1);

            failure.Actor.AfterFailure();

            Assert.Equal(1, afterFailureAccess.ReadFrom <int>("afterFailureCount"));
            Assert.Equal(0, afterFailureAccess.ReadFrom <int>("stoppedCount"));
        }
        public void TestRestartSupervisor()
        {
            var restartSupervisorTestResults = new RestartSupervisorTestResults();
            var supervisor = TestWorld.ActorFor <ISupervisor>(
                Definition.Has <RestartSupervisorActor>(
                    Definition.Parameters(restartSupervisorTestResults), "restart-supervisor"));
            var failureControlTestResults = new FailureControlActor.FailureControlTestResults();
            var failure = TestWorld.ActorFor <IFailureControl>(
                Definition.Has <FailureControlActor>(
                    Definition.Parameters(failureControlTestResults), supervisor.ActorInside, "failure-for-restart"));

            Assert.Equal(0, failureControlTestResults.FailNowCount.Get());
            Assert.Equal(0, restartSupervisorTestResults.InformedCount.Get());
            Assert.Equal(0, failureControlTestResults.AfterRestartCount.Get());
            Assert.Equal(0, failureControlTestResults.AfterStopCount.Get());
            Assert.Equal(0, failureControlTestResults.BeforeRestartCount.Get());
            Assert.Equal(1, failureControlTestResults.BeforeStartCount.Get());

            failure.Actor.FailNow();

            Assert.Equal(1, failureControlTestResults.FailNowCount.Get());
            Assert.Equal(1, restartSupervisorTestResults.InformedCount.Get());
            Assert.Equal(1, failureControlTestResults.AfterRestartCount.Get());
            Assert.Equal(1, failureControlTestResults.AfterStopCount.Get());
            Assert.Equal(1, failureControlTestResults.BeforeRestartCount.Get());
            Assert.Equal(2, failureControlTestResults.BeforeStartCount.Get());

            Assert.Equal(0, failureControlTestResults.AfterFailureCount.Get());
            failure.Actor.AfterFailure();
            Assert.Equal(1, failureControlTestResults.AfterFailureCount.Get());

            Assert.Equal(0, failureControlTestResults.StoppedCount.Get());
        }
 public RestartSupervisorActor(RestartSupervisorTestResults testResults)
 {
     this.testResults = testResults;
 }