public void TestSuspendResume() { var supervisor = World.ActorFor <IFailureControlSender>( Definition.Has <SuspendedSenderSupervisorActor>(Definition.NoParameters, "suspended-sender-supervisor")); var failureControlTestResults = new FailureControlActor.FailureControlTestResults(); var failure = World.ActorFor <IFailureControl>( Definition.Has <FailureControlActor>( Definition.Parameters(failureControlTestResults), SuspendedSenderSupervisorActor.Instance.Value, "queueArray", "failure")); var times = 25; failureControlTestResults.UntilFailNow = Until(1); SuspendedSenderSupervisorActor.Instance.Value.UntilInformed = Until(1); failureControlTestResults.UntilFailureCount = Until(times - 1); supervisor.SendUsing(failure, times); failure.FailNow(); failureControlTestResults.UntilFailNow.Completes(); SuspendedSenderSupervisorActor.Instance.Value.UntilInformed.Completes(); failureControlTestResults.UntilFailureCount.Completes(); Assert.Equal(1, SuspendedSenderSupervisorActor.Instance.Value.InformedCount.Get()); Assert.True(failureControlTestResults.AfterFailureCount.Get() >= times - 1); }
public void TestSuspendResume() { var testResults = new SuspendedSenderSupervisorResults(); var failureControlSender = World.ActorFor <IFailureControlSender>( Definition.Has <SuspendedSenderSupervisorActor>(Definition.Parameters(testResults), "suspended-sender-supervisor")); var failureControlTestResults = new FailureControlActor.FailureControlTestResults(); var failure = World.ActorFor <IFailureControl>( Definition.Has <FailureControlActor>( Definition.Parameters(failureControlTestResults), SuspendedSenderSupervisorActor.Instance.Value, "queueArray", "failure")); var times = 25; var failureAccess = failureControlTestResults.AfterCompleting(times); var supervisorAccess = testResults.AfterCompleting(1); failureControlSender.SendUsing(failure, times); failure.FailNow(); Assert.Equal(1, supervisorAccess.ReadFromExpecting("informedCount", 1)); Assert.Equal(times, failureAccess.ReadFromExpecting("afterFailureCountCount", times)); }
public void TestExpectedAttributes() { var testResults = new FailureControlActor.FailureControlTestResults(); var failure = TestWorld.ActorFor <IFailureControl>(() => new FailureControlActor(testResults), "failure"); var exception = new ApplicationException("Failed"); var supervised = new StageSupervisedActor <IFailureControl>(failure.ActorInside, exception); Assert.Equal("failure", supervised.Address.Name); Assert.Equal(World.DefaultSupervisor, supervised.Supervisor); Assert.Equal(exception, supervised.Error); }
public void TestEscalate() { var failureControlTestResults = new FailureControlActor.FailureControlTestResults(); var failure = TestWorld.ActorFor <IFailureControl>( Definition.Has <FailureControlActor>( Definition.Parameters(failureControlTestResults), "failure")); var exception = new ApplicationException("Failed"); var supervised = new StageSupervisedActor <IFailureControl>(failure.ActorInside, exception); supervised.Escalate(); Assert.Equal(1, failureControlTestResults.StoppedCount.Get()); }
public void TestStopOne() { var failureControlTestResults = new FailureControlActor.FailureControlTestResults(); var failure = World.ActorFor <IFailureControl>( Definition.Has <FailureControlActor>( Definition.Parameters(failureControlTestResults), "failure")); var exception = new ApplicationException("Failed"); var supervised = new StageSupervisedActor <IFailureControl>(FailureControlActor.Instance.Value, exception); var access = failureControlTestResults.AfterCompleting(1); supervised.Stop(SupervisionStrategyConstants.Scope.One); Assert.Equal(1, access.ReadFromExpecting("stoppedCount", 1)); }
public void TestEscalate() { var failureControlTestResults = new FailureControlActor.FailureControlTestResults(); var failure = TestWorld.ActorFor <IFailureControl>( Definition.Has <FailureControlActor>( Definition.Parameters(failureControlTestResults), "failure")); var exception = new ApplicationException("Failed"); var supervised = new StageSupervisedActor <IFailureControl>(failure.ActorInside, exception); var access = failureControlTestResults.AfterCompleting(1); supervised.Escalate(); Assert.Equal(1, access.ReadFrom <int>("stoppedCount")); }
public void TestRestart() { var failureControlTestResults = new FailureControlActor.FailureControlTestResults(); var failure = TestWorld.ActorFor <IFailureControl>( Definition.Has <FailureControlActor>( Definition.Parameters(failureControlTestResults), "failure")); var exception = new ApplicationException("Failed"); var supervised = new StageSupervisedActor <IFailureControl>(failure.ActorInside, exception); supervised.RestartWithin(1000, 5, SupervisionStrategyConstants.Scope.One); Assert.Equal(2, failureControlTestResults.BeforeStartCount.Get()); Assert.Equal(1, failureControlTestResults.BeforeRestartCount.Get()); Assert.Equal(1, failureControlTestResults.AfterRestartCount.Get()); }
public void TestStopOne() { var failureControlTestResults = new FailureControlActor.FailureControlTestResults(); var failure = World.ActorFor <IFailureControl>( Definition.Has <FailureControlActor>( Definition.Parameters(failureControlTestResults), "failure")); var exception = new ApplicationException("Failed"); var supervised = new StageSupervisedActor <IFailureControl>(FailureControlActor.Instance.Value, exception); failureControlTestResults.UntilStopped = Until(1); supervised.Stop(SupervisionStrategyConstants.Scope.One); failureControlTestResults.UntilStopped.Completes(); Assert.True(FailureControlActor.Instance.Value.IsStopped); }
public void TestSuspendResume() { var failureControlTestResults = new FailureControlActor.FailureControlTestResults(); var failure = World.ActorFor <IFailureControl>( Definition.Has <FailureControlActor>( Definition.Parameters(failureControlTestResults), "failure")); var exception = new ApplicationException("Failed"); var supervised = new StageSupervisedActor <IFailureControl>(FailureControlActor.Instance.Value, exception); var access = failureControlTestResults.AfterCompleting(1); supervised.Suspend(); Assert.True(IsSuspended(FailureControlActor.Instance.Value)); failure.AfterFailure(); // into suspended stowage supervised.Resume(); // sent Assert.Equal(1, access.ReadFromExpecting("afterFailureCount", 1)); }
public void TestSuspendResume() { var failureControlTestResults = new FailureControlActor.FailureControlTestResults(); var failure = World.ActorFor <IFailureControl>( Definition.Has <FailureControlActor>( Definition.Parameters(failureControlTestResults), "failure")); failureControlTestResults.UntilAfterFail = Until(1); var exception = new ApplicationException("Failed"); var supervised = new StageSupervisedActor <IFailureControl>(FailureControlActor.Instance.Value, exception); supervised.Suspend(); Assert.True(IsSuspended(FailureControlActor.Instance.Value)); failure.AfterFailure(); // into suspended stowage supervised.Resume(); // sent failureControlTestResults.UntilAfterFail.Completes(); // delivered Assert.Equal(1, failureControlTestResults.AfterFailureCount.Get()); }