public void Aggregate_actor_produce_fault_with_processId_from_command() { var command = new GoSleepCommand(null, null).CloneForProcess(Guid.NewGuid().ToString()); var transport = Sys.InitLocalTransportExtension().Transport; transport.Subscribe <MessageMetadataEnvelop <Fault <GoSleepCommand> > >(TestActor); var handlersActor = Sys.ActorOf(Props.Create(() => new HandlersPipeActor(new HandlersDefaultProcessor(), TestActor))); var actor = Sys.ActorOf(Props.Create(() => new AggregateActor <ProgrammerAggregate>(CommandAggregateHandler.New <ProgrammerAggregate>(null), new SnapshotsPersistencePolicy(1, null, 5, null), AggregateFactory.Default, AggregateFactory.Default, handlersActor)), EntityActorName.New <ProgrammerAggregate>(command.Id).Name); actor.Tell(new MessageMetadataEnvelop <ICommand>(command, MessageMetadata.New(command.Id, null, null))); var fault = FishForMessage <MessageMetadataEnvelop>(m => m.Message is Fault <GoSleepCommand>).Message as IFault; Assert.Equal(command.ProcessId, fault.ProcessId); }
public void Aggregate_actor_produce_fault_with_sagaId_from_command() { var command = new GoSleepCommand(Guid.Empty, Guid.Empty).CloneWithSaga(Guid.NewGuid()); var transport = new LocalAkkaEventBusTransport(Sys); transport.Subscribe <MessageMetadataEnvelop <Fault <GoSleepCommand> > >(TestActor); var actor = Sys.ActorOf(Props.Create(() => new AggregateActor <HomeAggregate>(new HomeAggregateHandler(), new TypedMessageActor <ScheduleCommand>(TestActor), new TypedMessageActor <Unschedule>(TestActor), transport, new SnapshotsPersistencePolicy(TimeSpan.FromSeconds(1), 1, 5), new AggregateFactory() )), AggregateActorName.New <HomeAggregate>(command.Id).Name); actor.Tell(new MessageMetadataEnvelop <ICommand>(command, new MessageMetadata(command.Id))); var fault = ExpectMsg <MessageMetadataEnvelop <Fault <GoSleepCommand> > >(TimeSpan.FromDays(1)); Assert.AreEqual(command.SagaId, fault.Message.SagaId); }