Example #1
0
        public async Task TransportTestSetUp()
        {
            Harness = await _harnessFactory.CreateTestHarness();

            if (_enableLog)
            {
                Harness.OnConfigureBus += cfg =>
                {
                    LogContext.ConfigureCurrentLogContext(LoggerFactory);

                    LoggerFactory.Current = default;
                };
            }

            await Harness.Clean();

            await Arrange();

            _fixtureContext = TestExecutionContext.CurrentContext;

            LoggerFactory.Current = _fixtureContext;


            await StartTestHarness();

            await Task.Delay(200);
        }
Example #2
0
        public ParseFileTestFixture()
        {
            UserId = NewId.NextGuid();

            var builder = new ContainerBuilder();

            builder.RegisterConsumers(Assembly.Load("Sds.SpectraFileParser.Processing"));

            builder.RegisterType <InMemoryStorage>()
            .As <IBlobStorage>()
            .SingleInstance();

            var settings = ConfigurationManager.AppSettings.TestHarnessSettings();

            _harness             = new InMemoryTestHarness();
            _harness.TestTimeout = TimeSpan.FromSeconds(settings.Timeout);

            _harness.Handler <RecordParsed>(context => { return(Task.CompletedTask); });
            _harness.Handler <FileParsed>(context => { return(Task.CompletedTask); });

            var container = builder.Build();

            _harness.OnConfigureBus += cfg =>
            {
                cfg.ReceiveEndpoint("test", e =>
                {
                    e.LoadFrom(container);
                });
            };

            BlobStorage = container.Resolve <IBlobStorage>();
        }
        protected override void SetupActivities(BusTestHarness testHarness)
        {
            testHarness.OnConfigureBus += ConfigureBus;

            AddActivityContext <TestActivity, TestArguments, TestLog>(() => new TestActivity(), h => h.UsePartitioner(_partitioner, args => args.Arguments.Value),
                                                                      h => h.UsePartitioner(_partitioner, args => args.Log.OriginalValue));
        }
Example #4
0
        public ParseFileTestFixture()
        {
            UserId = NewId.NextGuid();

            var builder = new ContainerBuilder();

            builder.RegisterConsumers(Assembly.Load("Sds.OfficeProcessor.Processing"));

            builder.RegisterType <InMemoryStorage>()
            .As <IBlobStorage>()
            .SingleInstance();

            _harness             = new InMemoryTestHarness();
            _harness.TestTimeout = TimeSpan.FromSeconds(30);

            var container = builder.Build();

            _harness.OnConfigureBus += cfg =>
            {
                cfg.ReceiveEndpoint("test", e =>
                {
                    e.LoadFrom(container);
                });
            };

            BlobStorage = container.Resolve <IBlobStorage>();
        }
Example #5
0
 internal void Apply(BusTestHarness harness)
 {
     if (_now)
     {
         harness.InactivityObserver.ForceInactive();
     }
 }
Example #6
0
 public ValidRdfParseTests(ParseFileTestFixture fixture)
 {
     //_fixture = fixture;
     _blobStorage = fixture.BlobStorage;
     _harness     = new InMemoryTestHarness();
     _consumer    = _harness.Consumer(() => new ParseFileCommandHandler(fixture.BlobStorage));
 }
Example #7
0
        public SlowConcurrentSaga_Specs()
        {
            _sagaRepository = new Lazy <ISagaRepository <SlowConcurrentSaga> >(() =>
                                                                               AzureTableSagaRepository <SlowConcurrentSaga> .Create(() => TestCloudTable));

            _sagaTestHarness = BusTestHarness.StateMachineSaga(new SlowConcurrentSagaStateMachine(), _sagaRepository.Value);
        }
Example #8
0
 protected override void SetupActivities(BusTestHarness testHarness)
 {
     AddActivityContext <ObjectGraphTestActivity, ObjectGraphActivityArguments, TestLog>(
         () => new ObjectGraphTestActivity(_intValue, _stringValue, _decimalValue, new[] { "Albert", "Chris" }, _argumentsDictionary));
     AddActivityContext <TestActivity, TestArguments, TestLog>(
         () => new TestActivity());
 }
        public StandardizationValidationTestFixture()
        {
            UserId = Guid.NewGuid();

            var builder = new ContainerBuilder();

            builder.RegisterConsumers(Assembly.Load("Sds.ChemicalStandardizationValidation.Processing"));

            builder.RegisterType <InMemoryStorage>()
            .As <IBlobStorage>()
            .SingleInstance();

            builder.RegisterModule <Sds.Cvsp.Compounds.Autofac.ValidationStandardizationModule>();
            builder.Register(c => new XmlIssuesConfig(CompoundResources.LogCodes)).As <IIssuesConfig>();

            _harness             = new InMemoryTestHarness();
            _harness.TestTimeout = TimeSpan.FromSeconds(30);

            builder.RegisterModule <Cvsp.Compounds.Autofac.PropertiesCalculationModule>();

            var container = builder.Build();

            ServiceLocator.SetLocatorProvider(() => new AutofacServiceLocator(container));

            _harness.OnConfigureBus += cfg =>
            {
                cfg.ReceiveEndpoint("test", e =>
                {
                    e.LoadFrom(container);
                });
            };

            BlobStorage = container.Resolve <IBlobStorage>();
        }
Example #10
0
 public static void WaitWhileModelTrained(this BusTestHarness harness, Guid folderId)
 {
     if (!harness.Published.Select <TrainingFinished>(m => m.Context.Message.Id == folderId).Any())
     {
         throw new TimeoutException();
     }
 }
Example #11
0
 protected override void SetupActivities(BusTestHarness testHarness)
 {
     AddActivityContext <TestActivity, TestArguments, TestLog>(() => new TestActivity(), h =>
     {
         h.UseConsoleLog(async context => GetBodyString(context.Context.ConsumeContext.ReceiveContext));
     });
 }
Example #12
0
 protected override void SetupActivities(BusTestHarness testHarness)
 {
     AddActivityContext <TestActivity, TestArguments, TestLog>(() => new TestActivity(), h =>
     {
         h.UseExecute(context => Console.WriteLine(GetBodyString(context.ReceiveContext)));
     });
 }
        public TestHarness()
        {
            var builder = new ConfigurationBuilder()
                          .AddJsonFile("appsettings.bddtests.json", true, true);

            var configuration = builder.Build();

            var services = new ServiceCollection();

            UserId = NewId.NextGuid();

            _harness = new InMemoryTestHarness();

            services.AddOptions();

            services.AddSingleton <IEventStore, InMemoryEventStore>();
            services.AddScoped <IEventPublisher, MassTransitEventPublisher>();
            services.AddScoped <ISession, Session>();
            services.AddScoped <IRepository, Repository>();

            services.AddScoped <CreateRecordConsumer>();
            services.AddScoped <RecordProcessedConsumer>();

            services.AddSingleton <IConsumerScopeProvider, DependencyInjectionConsumerScopeProvider>();

            services.AddSingleton <TestStateMachine>();

            services.AddSingleton <ISagaRepository <TestState> >(new InMemorySagaRepository <TestState>());

            services.AddSingleton((ctx) =>
            {
                return(_harness.Bus as IBusControl);
            });

            _harness.OnConfigureBus += cfg =>
            {
                cfg.UseInMemoryOutbox();

                cfg.ReceiveEndpoint($"receiver_saga_queue", e =>
                {
                    e.StateMachineSaga(_serviceProvider.GetRequiredService <TestStateMachine>(), _serviceProvider.GetRequiredService <ISagaRepository <TestState> >());
                });

                cfg.ReceiveEndpoint($"receiver_queue", e =>
                {
                    e.ScopedConsumer <CreateRecordConsumer>(_serviceProvider, c => c.UseCqrsLite());
                    e.Consumer(_serviceProvider.GetRequiredService <RecordProcessedConsumer>);
                });
            };

            _harness.Handler <RecordProcessed>(async context =>
            {
                await Task.CompletedTask;
            });

            _serviceProvider = services.BuildServiceProvider();

            _harness.Start().Wait();
        }
Example #14
0
        protected BusTestFixture(BusTestHarness harness)
            : base(harness)
        {
            BusTestHarness = harness;

            harness.OnConnectObservers += ConnectObservers;
            harness.OnConfigureBus     += ConfigureBus;
        }
Example #15
0
 protected override void SetupActivities(BusTestHarness testHarness)
 {
     AddActivityContext <TestActivity, TestArguments, TestLog>(() => new TestActivity());
     AddActivityContext <FaultyActivity, FaultyArguments, FaultyLog>(() => new FaultyActivity(), x =>
     {
         x.UseRetry(r => r.Immediate(2));
     });
 }
 protected override void SetupActivities(BusTestHarness testHarness)
 {
     AddActivityContext <TestActivity, TestArguments, TestLog>(() => new TestActivity());
     AddActivityContext <FaultyActivity, FaultyArguments, FaultyLog>(() => new FaultyActivity());
     AddActivityContext <FirstFaultyActivity, FaultyArguments, FaultyLog>(() => new FirstFaultyActivity());
     AddActivityContext <FaultyCompensateActivity, TestArguments, TestLog>(() => new FaultyCompensateActivity());
     AddActivityContext <FirstFaultyCompensateActivity, TestArguments, TestLog>(() => new FirstFaultyCompensateActivity());
 }
Example #17
0
 protected override void SetupActivities(BusTestHarness testHarness)
 {
     AddActivityContext <TestActivity, TestArguments, TestLog>(() => new TestActivity());
     AddActivityContext <SecondTestActivity, TestArguments, TestLog>(() => new SecondTestActivity());
     AddActivityContext <FaultyCompensateActivity, TestArguments, TestLog>(() => new FaultyCompensateActivity());
     AddActivityContext <FaultyActivity, FaultyArguments, FaultyLog>(() => new FaultyActivity());
     AddActivityContext <NastyFaultyActivity, FaultyArguments, FaultyLog>(() => new NastyFaultyActivity());
     AddActivityContext <SetVariablesFaultyActivity, SetVariablesFaultyArguments>(() => new SetVariablesFaultyActivity());
 }
Example #18
0
        public FileTests(IndexingFixture indexingFixture)
        {
            _fileId     = Guid.NewGuid();
            index       = string.Empty;
            type        = string.Empty;
            doc         = null;
            docAsUpsert = null;
            string _someField = Guid.NewGuid().ToString();
            string _someValue = Guid.NewGuid().ToString();

            _fakeIndex = new List <IIndexRequest <dynamic> >();
            _mongoDb   = indexingFixture.MongoDb;
            var files = _mongoDb.GetCollection <BsonDocument>("Files");

            files.InsertOne(
                new BsonDocument("_id", _fileId)
                .Add("Name", "Processed.mol")
                .Add("Status", "Processed")
                .Add(_someField, _someValue));

            var list = new List <BsonDocument>();

            for (int i = 0; i < 10; i++)
            {
                list.Add(new BsonDocument("_id", Guid.NewGuid()).Add("Name", i.ToString()));
            }

            files.InsertMany(list);
            _file = _mongoDb.GetCollection <dynamic>("Files").Find(new BsonDocument("_id", _fileId)).First();
            ((IDictionary <string, object>)_file).Remove("_id");
            ((IDictionary <string, object>)_file).Add("id", _fileId);

            _elasticClientMock = new Mock <IElasticClient>();
            _elasticClientMock
            .Setup(m => m.IndexAsync <object>(It.IsAny <IIndexRequest>(), null, default(CancellationToken)))
            .Returns(Task.FromResult(new Mock <IIndexResponse>().Object))
            .Callback <IIndexRequest <object>, Func <IndexDescriptor <object>, IIndexRequest>, CancellationToken>((a, s, c) => {
                _fakeIndex.Add(a);
                index = a.Index.Name;
                type  = a.Type.Name;
            }).Verifiable();

            _elasticClientMock.Setup(m => m.UpdateAsync <object, object>(It.IsAny <IUpdateRequest <object, object> >(), default(CancellationToken)))
            .Returns(Task.FromResult(new Mock <IUpdateResponse <object> >().Object))
            .Callback <IUpdateRequest <object, object>, CancellationToken>((a, c) =>
            {
                index       = a.Index.Name;
                type        = a.Type.Name;
                docAsUpsert = a.DocAsUpsert;
                doc         = a.Doc as IDictionary <string, object>;
            }).Verifiable();

            _harness  = new InMemoryTestHarness();
            _consumer = _harness.Consumer(() => new FileEventHandler(_elasticClientMock.Object, _mongoDb, _blobStorage));

            _harness.Start().Wait();
        }
Example #19
0
        public ValidCifParseTests(ParseFileTestFixture fixture)
        {
            _blobStorage = fixture.BlobStorage;
            var settings = ConfigurationManager.AppSettings.TestHarnessSettings();

            _harness             = new InMemoryTestHarness();
            _harness.TestTimeout = TimeSpan.FromSeconds(settings.Timeout);
            _consumer            = _harness.Consumer(() => new ParseFileCommandHandler(fixture.BlobStorage));
        }
Example #20
0
        public async Task CamelCasedJsonIsPreservedAcrossMassTransitBoundary()
        {
            Harness = new InMemoryTestHarness();

            var messagePackOptions = new MessagePackHubProtocolOptions();

            var jsonOptions = new JsonHubProtocolOptions();

            jsonOptions.PayloadSerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
            var backplane1Harness = RegisterBusEndpoint("receiveEndpoint1");
            var backplane2Harness = RegisterBusEndpoint("receiveEndpoint2");

            await Harness.Start();

            try
            {
                backplane1Harness.SetHubLifetimeManager(CreateLifetimeManager(messagePackOptions, jsonOptions));
                backplane2Harness.SetHubLifetimeManager(CreateLifetimeManager());
                using (var client1 = new TestClient())
                    using (var client2 = new TestClient())
                    {
                        var manager1 = backplane1Harness.HubLifetimeManager;
                        var manager2 = backplane2Harness.HubLifetimeManager;

                        var connection1 = HubConnectionContextUtils.Create(client1.Connection);
                        var connection2 = HubConnectionContextUtils.Create(client2.Connection);

                        await manager1.OnConnectedAsync(connection1).OrTimeout();

                        await manager2.OnConnectedAsync(connection2).OrTimeout();

                        await manager1.SendAllAsync("Hello", new object[] { new TestObject {
                                                                                TestProperty = "Foo"
                                                                            } });

                        Assert.IsTrue(backplane2Harness.All.Consumed.Select <All <MyHub> >().Any());

                        var message = await client2.ReadAsync().OrTimeout() as InvocationMessage;

                        Assert.NotNull(message);
                        Assert.AreEqual("Hello", message.Target);
                        CollectionAssert.AllItemsAreInstancesOfType(message.Arguments, typeof(JObject));
                        var jObject = message.Arguments[0] as JObject;
                        Assert.NotNull(jObject);
                        var firstProperty = jObject.Properties().First();
                        Assert.AreEqual("testProperty", firstProperty.Name);
                        Assert.AreEqual("Foo", firstProperty.Value.Value <string>());
                    }
            }
            finally
            {
                await Harness.Stop();
            }
        }
Example #21
0
        public static void WaitWhileFolderMoved(this BusTestHarness harness, Guid id)
        {
            if (!harness.Published.Select <Generic.Domain.Events.Folders.MovedFolderPersisted>(m => m.Context.Message.Id == id).Any())
            {
                throw new TimeoutException();
            }

            if (!harness.Published.Select <Generic.Domain.Events.Nodes.MovedFolderPersisted>(m => m.Context.Message.Id == id).Any())
            {
                throw new TimeoutException();
            }
        }
Example #22
0
        public static void WaitWhileFileShared(this BusTestHarness harness, Guid id)
        {
            if (!harness.Published.Select <Generic.Domain.Events.Files.PermissionChangedPersisted>(m => m.Context.Message.Id == id).Any())
            {
                throw new TimeoutException();
            }

//            if (!harness.Published.Select<Generic.Domain.Events.Nodes.PermissionChangedPersisted>(m => m.Context.Message.Id == id).Any())
//            {
//                throw new TimeoutException();
//            }
        }
Example #23
0
        public IndexingFixture()
        {
            _harness             = new InMemoryTestHarness();
            _harness.TestTimeout = TimeSpan.FromSeconds(30);

            FakeIndex = new List <IIndexRequest <dynamic> >();

            ElasticClientMock = new Mock <IElasticClient>();
            ElasticClientMock
            .Setup(m => m.IndexAsync <object>(It.IsAny <IIndexRequest>(), null, default(CancellationToken)))
            .Returns(Task.FromResult(new Mock <IIndexResponse>().Object))
            .Callback <IIndexRequest <object>, Func <IndexDescriptor <object>, IIndexRequest>, CancellationToken>((a, s, c) => {
                FakeIndex.Add(a);
            });

            //ElasticClientMock
            //    .Setup(m => m.UpdateAsync<object, object>(It.Is<IUpdateRequest<object, object>>(r =>
            //        r.DocAsUpsert == true && r.Index.Name == "files" && r.Type.Name == "file"), default(CancellationToken)))
            //    .Returns(Task.FromResult(new Mock<IUpdateResponse<object>>().Object))
            //    .Callback<IIndexRequest<object>, Func<IndexDescriptor<object>, IIndexRequest>, CancellationToken>((a, s, c) =>
            //        FakeIndex.Add(a));

            var services = new ServiceCollection();

            UserId = Guid.NewGuid();
            services.AddTransient(x => ElasticClientMock.Object);

            var allAssemblies = new Assembly[]
            {
                Assembly.Load(new AssemblyName("Sds.Indexing"))
            };

            services.AddAllConsumers(allAssemblies);

            services.AddSingleton((ctx) =>
            {
                return(_harness.Bus as IBusControl);
            });

            _harness.OnConfigureBus += cfg =>
            {
                cfg.RegisterConsumers(_serviceProvider, allAssemblies);
            };

            services.AddSingleton(new MongoClient(Environment.ExpandEnvironmentVariables("%OSDR_MONGO_DB%")));
            services.AddScoped(service => service.GetService <MongoClient>().GetDatabase(MongoDatabaseName));
            services.AddTransient(x => BlobStorage);

            _serviceProvider = services.BuildServiceProvider();

            _harness.Start().Wait();
        }
        protected override void SetupActivities(BusTestHarness testHarness)
        {
            AddActivityContext <TestActivity, TestArguments, TestLog>(() => new TestActivity());

            var testActivity = GetActivityContext <TestActivity>();

            AddActivityContext <ReviseItineraryActivity, TestArguments, TestLog>(() => new ReviseItineraryActivity(x =>
            {
                x.AddActivity(testActivity.Name, testActivity.ExecuteUri, new { Value = "Added" });
                x.AddSubscription(InputQueueAddress, RoutingSlipEvents.ActivityCompleted | RoutingSlipEvents.Supplemental, RoutingSlipEventContents.All,
                                  testActivity.Name);
            }));
        }
        public SlowConcurrentSaga_Specs()
        {
            // rowlock statements that don't work to cause a deadlock.
            var notWorkingRowLockStatements = new SqlLockStatementProvider("dbo", "SELECT * FROM \"{1}\" WHERE \"CorrelationId\" = @p0");

            // add new migration by calling
            // dotnet ef migrations add --context "SagaDbContext``2" Init  -v
            _sagaRepository = new Lazy <ISagaRepository <SlowConcurrentSaga> >(() =>
                                                                               EntityFrameworkSagaRepository <SlowConcurrentSaga> .CreatePessimistic(
                                                                                   () => new SlowConcurrentSagaContextFactory().CreateDbContext(DbContextOptionsBuilder),
                                                                                   notWorkingRowLockStatements));

            _sagaTestHarness = BusTestHarness.StateMachineSaga(new SlowConcurrentSagaStateMachine(), _sagaRepository.Value);
        }
Example #26
0
        public ImagingTestFixture()
        {
            _harness             = new InMemoryTestHarness();
            _harness.TestTimeout = TimeSpan.FromSeconds(30);

            _harness.OnConfigureBus += cfg =>
            {
                cfg.ReceiveEndpoint("test", e =>
                {
                    //e.Consumer(() => new ImagingCommandHandler(BlobStorage));
                });
            };

            _harness.Start().Wait();
        }
Example #27
0
        protected override void SetupActivities(BusTestHarness testHarness)
        {
            AddActivityContext <TestActivity, TestArguments, TestLog>(() => new TestActivity());
            AddActivityContext <ReviseToEmptyItineraryActivity, TestArguments, TestLog>(
                () => new ReviseToEmptyItineraryActivity());
            AddActivityContext <ReviseWithNoChangeItineraryActivity, TestArguments, TestLog>(
                () => new ReviseWithNoChangeItineraryActivity());

            ActivityTestContext testActivity = GetActivityContext <TestActivity>();

            AddActivityContext <ReviseItineraryActivity, TestArguments, TestLog>(
                () =>
                new ReviseItineraryActivity(
                    x => x.AddActivity(testActivity.Name, testActivity.ExecuteUri, new { Value = "Added" })));
        }
Example #28
0
        public static async Task <Guid> CreateFolder(this BusTestHarness harness, string name, Guid parentId, Guid userId)
        {
            Guid id = NewId.NextGuid();

            await harness.Bus.Publish <CreateFolder>(new
            {
                Id       = id,
                Name     = name,
                ParentId = parentId,
                UserId   = userId
            });

            harness.WaitWhileFolderCreated(id);

            return(id);
        }
Example #29
0
        public ConverterFixture()
        {
            UserId = Guid.NewGuid();

            _harness             = new InMemoryTestHarness();
            _harness.TestTimeout = TimeSpan.FromSeconds(5);

            _harness.OnConfigureBus += cfg =>
            {
                cfg.ReceiveEndpoint("test", e =>
                {
                    e.Consumer(() => new GeneratePdfFromHtmlCommandHandler(BlobStorage));
                });
            };

            _harness.Start().Wait();
        }
Example #30
0
        public ExportTestFixture()
        {
            UserId = Guid.NewGuid();

            _harness             = new InMemoryTestHarness();
            _harness.TestTimeout = TimeSpan.FromSeconds(5);

            provider = new BlobStorageRecordsProvider(BlobStorage);

            _harness.OnConfigureBus += cfg =>
            {
                cfg.ReceiveEndpoint("test", e =>
                {
                    e.Consumer(() => new ExportFileCommandHandler(BlobStorage, provider));
                });
            };

            _harness.Start().Wait();
        }