public async Task InitializeAsync() { InterceptQuartzSystemTime(); var collection = new ServiceCollection() .AddMassTransitInMemoryTestHarness(cfg => { cfg.AddSagaStateMachine <TStateMachine, TInstance>().InMemoryRepository(); cfg.AddPublishMessageScheduler(); cfg.AddSagaStateMachineTestHarness <TStateMachine, TInstance>(); ConfigureMassTransit(cfg); }); Provider = collection.BuildServiceProvider(true); ConfigureService(collection); TestHarness = Provider.GetRequiredService <InMemoryTestHarness>(); TestHarness.OnConfigureInMemoryBus += configurator => { var nvc = new NameValueCollection { ["quartz.scheduler.instanceName"] = Guid.NewGuid().ToString() }; ISchedulerFactory schedulerFactory = new StdSchedulerFactory(nvc); configurator.UseInMemoryScheduler(schedulerFactory, out _scheduler); // Use only this cause Exception: Scheduler with name 'DefaultQuartzScheduler' already exists! //configurator.UseInMemoryScheduler(out _scheduler); }; await TestHarness.Start(); SagaHarness = Provider.GetRequiredService <IStateMachineSagaTestHarness <TInstance, TStateMachine> >(); Machine = Provider.GetRequiredService <TStateMachine>(); }
public static SagaStateChecker <TInstance, TStateMachine> SagaOf <TInstance, TStateMachine>( this IStateMachineSagaTestHarness <TInstance, TStateMachine> harness, Guid correlationId) where TInstance : class, SagaStateMachineInstance where TStateMachine : SagaStateMachine <TInstance> { return(new SagaStateChecker <TInstance, TStateMachine>(harness, correlationId)); }
public virtual async Task BeforeEachTest() { TestHarness = new InMemoryTestHarness { TestTimeout = TimeSpan.FromSeconds(4) }; StateMachine = new GreetingsStateMachine(); SagaTestHarness = TestHarness.StateMachineSaga <GreetingsState, GreetingsStateMachine>(StateMachine); await TestHarness.Start(); }
[SetUp]//[OneTimeSetUp] public async Task Setup() { var services = new ServiceCollection(); await BeforeSetup(services); // NUnit 출력으로 Log 를 내보내는 Logger 생성기.(모든 Log Level 이 전부 다 Enable 된 // Masstransit.TestFramework.Logging.TestOutputLoggerFactory (NUnit의 실행환경하에서 출력을 뿜어내는 Logger를 만든다) services.AddSingleton <ILoggerFactory>(provider => new TestOutputLoggerFactory(enabled: true)); services.TryAdd(ServiceDescriptor.Singleton(typeof(ILogger <>), typeof(Logger <>))); // @register-test-harness services.AddMassTransitInMemoryTestHarness(cfg => { cfg.SetKebabCaseEndpointNameFormatter(); cfg.AddPublishMessageScheduler(); // @register-state-machine ConfigureSaga(cfg.AddSagaStateMachine <TStateMachine, TInstance>()); //@register-saga-test-harness cfg.AddSagaStateMachineTestHarness <TStateMachine, TInstance>(); ConfigureMassTransit(cfg); }); ConfigureServices(services); Provider = services.BuildServiceProvider(); var loggerFactory = Provider.GetRequiredService <ILoggerFactory>(); ConfigureLogging(loggerFactory); // see @register-test-harness TestHarness = Provider.GetRequiredService <InMemoryTestHarness>(); Time = FakeSystemTime.For(TestHarness); var timeOut = TestHarness.TestTimeout; //TestHarness.TestInactivityTimeout = TimeSpan.Zero; await TestHarness.Start(); // see @register-saga-test-harness SagaHarness = Provider.GetRequiredService <IStateMachineSagaTestHarness <TInstance, TStateMachine> >(); // see @register-state-machine StateMachine = Provider.GetRequiredService <TStateMachine>(); }
public async Task Setup() { await MigrateUp(); InterceptQuartzSystemTime(); var collection = new ServiceCollection() .AddSingleton <ILoggerFactory>(provider => new TestOutputLoggerFactory(true)) .AddDbContext <IntegrationTestDbContext>(x => { IntegrationTestSagaDbContextFactory.Apply(x); }) .AddMassTransitInMemoryTestHarness(cfg => { cfg.AddSagaStateMachine <TStateMachine, TInstance>() .EntityFrameworkRepository(x => { x.LockStatementProvider = new PostgresLockStatementProvider(); x.ExistingDbContext <IntegrationTestDbContext>(); }); cfg.AddPublishMessageScheduler(); cfg.AddSagaStateMachineTestHarness <TStateMachine, TInstance>(); ConfigureMassTransit(cfg); }); ConfigureServices(collection); Provider = collection.BuildServiceProvider(true); ConfigureLogging(); TestHarness = Provider.GetRequiredService <InMemoryTestHarness>(); TestHarness.OnConfigureInMemoryBus += configurator => { configurator.UseInMemoryScheduler(out _scheduler); }; await TestHarness.Start(); SagaHarness = Provider.GetRequiredService <IStateMachineSagaTestHarness <TInstance, TStateMachine> >(); Machine = Provider.GetRequiredService <TStateMachine>(); }
public async Task Setup() { InterceptQuartzSystemTime(); var collection = new ServiceCollection() .AddSingleton <ILoggerFactory>(provider => new TestOutputLoggerFactory(true)) .AddMassTransitInMemoryTestHarness(cfg => { cfg.SetKebabCaseEndpointNameFormatter(); cfg.AddSagaStateMachine <TStateMachine, TInstance>() .InMemoryRepository(); cfg.AddPublishMessageScheduler(); cfg.AddSagaStateMachineTestHarness <TStateMachine, TInstance>(); ConfigureMassTransit(cfg); }); ConfigureServices(collection); Provider = collection.BuildServiceProvider(true); ConfigureLogging(); TestHarness = Provider.GetRequiredService <InMemoryTestHarness>(); TestHarness.OnConfigureInMemoryBus += configurator => { configurator.UseInMemoryScheduler(out _scheduler); }; await TestHarness.Start(); SagaHarness = Provider.GetRequiredService <IStateMachineSagaTestHarness <TInstance, TStateMachine> >(); Machine = Provider.GetRequiredService <TStateMachine>(); }
public SagaStateChecker(IStateMachineSagaTestHarness <TInstance, TStateMachine> harness, Guid correlationId) { _harness = harness; _correlationId = correlationId; }
protected override void ConfigureService(IServiceCollection collection) { _bookSagaHarness = Provider.GetRequiredService <IStateMachineSagaTestHarness <BookSagaState, BookStateMachine> >(); _bookMachine = Provider.GetRequiredService <BookStateMachine>(); }