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));
        }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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"));
        }
Esempio n. 4
0
        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);

            var access = failureControlTestResults.AfterCompleting(4);

            supervised.RestartWithin(1000, 5, SupervisionStrategyConstants.Scope.One);

            Assert.Equal(2, access.ReadFrom <int>("beforeStartCount"));
            Assert.Equal(1, access.ReadFrom <int>("beforeRestartCount"));
            Assert.Equal(1, access.ReadFrom <int>("afterRestartCount"));
        }
Esempio n. 5
0
        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));
        }