using Akka.Actor; using ZB.MOM.WW.ScadaBridge.ManagementService; namespace ZB.MOM.WW.ScadaBridge.ManagementService.Tests; /// /// Tests for the supervision strategy. The project convention is that long-lived /// coordinator-style actors declare an explicit Resume-based strategy. /// public class ManagementActorSupervisionTests { /// Verifies that the supervisor strategy is a one-for-one strategy. [Fact] public void CreateSupervisorStrategy_ReturnsOneForOneStrategy() { var strategy = ManagementActor.CreateSupervisorStrategy(); Assert.IsType(strategy); } /// Verifies that the supervisor strategy resumes on an arbitrary exception. [Fact] public void CreateSupervisorStrategy_ResumesOnArbitraryException() { var strategy = (OneForOneStrategy)ManagementActor.CreateSupervisorStrategy(); var directive = strategy.Decider.Decide(new InvalidOperationException("boom")); Assert.Equal(Directive.Resume, directive); } /// Verifies that the supervisor strategy resumes indefinitely. [Fact] public void CreateSupervisorStrategy_ResumesIndefinitely() { var strategy = (OneForOneStrategy)ManagementActor.CreateSupervisorStrategy(); // Coordinator actors should not give up: unbounded retries. Assert.Equal(-1, strategy.MaxNumberOfRetries); } }