Beispiel #1
0
        public Process_actor_should_execute_async_processes_with_block(ITestOutputHelper output)
        {
            var logger  = new XUnitAutoTestLoggerConfiguration(output).CreateLogger();
            var creator = new AsyncLongRunningProcessManagerFactory();

            _localAkkaEventBusTransport = Sys.InitLocalTransportExtension().Transport;
            var blackHole = Sys.ActorOf(BlackHoleActor.Props);

            var messageProcessActor = Sys.ActorOf(Props.Create(() => new HandlersPipeActor(new HandlersDefaultProcessor(), blackHole)));

            _processId = Guid.NewGuid().ToString();

            var container = new ContainerBuilder();

            container.Register <ProcessStateActor <TestState> >(c =>
                                                                new ProcessStateActor <TestState>(CommandAggregateHandler.New <ProcessStateAggregate <TestState> >(),
                                                                                                  new EachMessageSnapshotsPersistencePolicy(),
                                                                                                  AggregateFactory.Default,
                                                                                                  AggregateFactory.Default,
                                                                                                  messageProcessActor));
            Sys.AddDependencyResolver(new AutoFacDependencyResolver(container.Build(), Sys));
            Sys.AttachSerilogLogging(logger);
            //for process state retrival
            var processStateActor = Sys.ActorOf(Props.Create(() => new ProcessStateHubActor <TestState>(new DefaultRecycleConfiguration())), typeof(TestState).BeautyName() + "_Hub");
            var name = EntityActorName.New <ProcessStateAggregate <TestState> >(_processId).Name;

            _processActor = ActorOfAsTestActorRef(() => new ProcessActor <TestState>(new AsyncLongRunningProcess(), creator),
                                                  name);
        }
Beispiel #2
0
        public void Actors_should_resolve_named_dependencies()
        {
            var container = new ContainerBuilder();

            container.RegisterInstance(new SomeService("A")).Named <SomeService>("A");
            container.RegisterInstance(new SomeService("B")).Named <SomeService>("B");
            container.Register <NamedActorA>(c => new NamedActorA(c.ResolveNamed <SomeService>("A")));
            container.Register <NamedActorB>(c => new NamedActorB(c.ResolveNamed <SomeService>("B")));
            Sys.AddDependencyResolver(new AutoFacDependencyResolver(container.Build(), Sys));

            var actorA = ActorOfAsTestActorRef <NamedActorA>(Sys.DI().Props <NamedActorA>());
            var actorB = ActorOfAsTestActorRef <NamedActorB>(Sys.DI().Props <NamedActorB>());

            Assert.Equal("A", actorA.UnderlyingActor.Dep.Name);
            Assert.Equal("B", actorB.UnderlyingActor.Dep.Name);
        }
Beispiel #3
0
        public void Actors_should_resolve_named_dependencies()
        {
            var container = new UnityContainer();

            container.RegisterInstance("A", new SomeService("A"));
            container.RegisterInstance("B", new SomeService("B"));
            container.RegisterType <NamedActorA>(new InjectionFactory(c => new NamedActorA(c.Resolve <SomeService>("A"))));
            container.RegisterType <NamedActorB>(new InjectionFactory(c => new NamedActorB(c.Resolve <SomeService>("B"))));
            Sys.AddDependencyResolver(new UnityDependencyResolver(container, Sys));

            var actorA = ActorOfAsTestActorRef <NamedActorA>(Sys.DI().Props <NamedActorA>());
            var actorB = ActorOfAsTestActorRef <NamedActorB>(Sys.DI().Props <NamedActorB>());

            Assert.AreEqual("A", actorA.UnderlyingActor.Dep.Name);
            Assert.AreEqual("B", actorB.UnderlyingActor.Dep.Name);
        }
        public SchedulerActorTests(ITestOutputHelper helper)
        {
            var containerBuilder = new ContainerBuilder();
            var log = new XUnitAutoTestLoggerConfiguration(helper, LogEventLevel.Verbose, this.GetType().Name).CreateLogger();

            containerBuilder.RegisterInstance <ILogger>(log);
            var publisherMoq = new Mock <IPublisher>();

            containerBuilder.RegisterInstance(publisherMoq.Object);

            Sys.AddDependencyResolver(new AutoFacDependencyResolver(containerBuilder.Build(), Sys));
            Sys.InitLocalTransportExtension();
            var ext = Sys.InitSchedulingExtension(new InMemoryQuartzConfig(), log, new Mock <IPublisher>().Object, new Mock <ICommandExecutor>().Object);

            _scheduler       = ext.SchedulingActor;
            _quartzScheduler = ext.Scheduler;
        }
Beispiel #5
0
        private void CheckWriteModel(IReadOnlyCollection <BalanceChangePlan> balanceManipulationPlans)
        {
            Sys.AddDependencyResolver(new UnityDependencyResolver(GridNode.Container, Sys));
            var props = Sys.DI().Props <AggregateActor <Account> >();

            Console.WriteLine();
            var aggregateActors = new List <Tuple <BalanceChangePlan, AggregateActor <Account> > >();

            foreach (var plan in balanceManipulationPlans)
            {
                Console.WriteLine($"Checking write model for account {plan.AccountId}");
                var name         = AggregateActorName.New <Account>(plan.AccountId).ToString();
                var balanceActor = ActorOfAsTestActorRef <AggregateActor <Account> >(props, name);
                aggregateActors.Add(Tuple.Create(plan, balanceActor.UnderlyingActor));
            }
            //TODO: remove this dirty hack for wait until actors recover
            Thread.Sleep(2000);

            //TODO: refactor this dirty hack to wait until actor recovers
            foreach (var plan in aggregateActors)
            {
                CheckAmount(plan.Item2.Aggregate.Amount.Amount, plan.Item1, "write model");
            }
        }