Esempio n. 1
0
        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>();
        }
Esempio n. 2
0
 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>();
        }
Esempio n. 6
0
        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>();
        }
Esempio n. 7
0
 public SagaStateChecker(IStateMachineSagaTestHarness <TInstance, TStateMachine> harness, Guid correlationId)
 {
     _harness       = harness;
     _correlationId = correlationId;
 }
Esempio n. 8
0
 protected override void ConfigureService(IServiceCollection collection)
 {
     _bookSagaHarness =
         Provider.GetRequiredService <IStateMachineSagaTestHarness <BookSagaState, BookStateMachine> >();
     _bookMachine = Provider.GetRequiredService <BookStateMachine>();
 }