protected override IRootResolver CreateRootResolver(IEventFlowOptions eventFlowOptions)
        {
            _elasticsearchUrl = Environment.GetEnvironmentVariable("ELASTICSEARCH_URL");
            _indexName        = $"eventflow-test-{Guid.NewGuid():D}";

            var testReadModelDescriptionProvider = new TestReadModelDescriptionProvider(_indexName);

            var resolver = eventFlowOptions
                           .RegisterServices(sr =>
            {
                sr.RegisterType(typeof(ThingyMessageLocator));
                sr.Register <IReadModelDescriptionProvider>(c => testReadModelDescriptionProvider);
            })
                           .ConfigureElasticsearch(_elasticsearchUrl)
                           .UseElasticsearchReadModelFor <ThingyAggregate, ThingyId, ElasticsearchThingyReadModel>()
                           .UseElasticsearchReadModel <ElasticsearchThingyMessageReadModel, ThingyMessageLocator>()
                           .AddQueryHandlers(
                typeof(ElasticsearchThingyGetQueryHandler),
                typeof(ElasticsearchThingyGetVersionQueryHandler),
                typeof(ElasticsearchThingyGetMessagesQueryHandler))
                           .CreateResolver();

            _elasticClient = resolver.Resolve <IElasticClient>();

            _elasticClient.CreateIndex(_indexName, c => c
                                       .Settings(s => s
                                                 .NumberOfShards(1)
                                                 .NumberOfReplicas(0))
                                       .Mappings(m => m
                                                 .Map <ElasticsearchThingyMessageReadModel>(d => d
                                                                                            .AutoMap())));

            return(resolver);
        }
Esempio n. 2
0
        protected override IRootResolver CreateRootResolver(IEventFlowOptions eventFlowOptions)
        {
            try
            {
                _indexName = $"eventflow-test-{Guid.NewGuid():D}";

                var testReadModelDescriptionProvider = new TestReadModelDescriptionProvider(_indexName);

                var resolver = eventFlowOptions
                               .RegisterServices(sr =>
                {
                    sr.RegisterType(typeof(ThingyMessageLocator));
                    sr.Register <IReadModelDescriptionProvider>(c => testReadModelDescriptionProvider);
                })
                               .ConfigureElasticsearch(_elasticsearchInstance.Uri)
                               .UseElasticsearchReadModel <ElasticsearchThingyReadModel>()
                               .UseElasticsearchReadModel <ElasticsearchThingyMessageReadModel, ThingyMessageLocator>()
                               .AddQueryHandlers(
                    typeof(ElasticsearchThingyGetQueryHandler),
                    typeof(ElasticsearchThingyGetVersionQueryHandler),
                    typeof(ElasticsearchThingyGetMessagesQueryHandler))
                               .CreateResolver();

                _elasticClient = resolver.Resolve <IElasticClient>();

                _elasticClient.CreateIndex(_indexName, c => c
                                           .Settings(s => s
                                                     .NumberOfShards(1)
                                                     .NumberOfReplicas(0))
                                           .Mappings(m => m
                                                     .Map <ElasticsearchThingyMessageReadModel>(d => d
                                                                                                .AutoMap())));

                _elasticsearchInstance.WaitForGreenStateAsync().Wait(TimeSpan.FromMinutes(1));

                return(resolver);
            }
            catch
            {
                _elasticsearchInstance.DisposeSafe("Failed to dispose ES instance");
                throw;
            }
        }
Esempio n. 3
0
        protected override IRootResolver CreateRootResolver(IEventFlowOptions eventFlowOptions)
        {
            // Disable SSL certificate validation
            ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };

            var url = Environment.GetEnvironmentVariable("ELASTICSEARCH_URL");

            if (string.IsNullOrEmpty(url))
            {
                Assert.Inconclusive("The environment variabel named 'ELASTICSEARCH_URL' isn't set. Set it to e.g. 'http://localhost:9200'");
            }

            var indexName = $"eventflow-test-{Guid.NewGuid().ToString("D")}";
            var testReadModelDescriptionProvider = new TestReadModelDescriptionProvider(indexName);

            var resolver = eventFlowOptions
                           .RegisterServices(sr => sr.RegisterType(typeof(ThingyMessageLocator)))
                           .ConfigureElasticsearch(new Uri(url))
                           .UseElasticsearchReadModel <ElasticsearchThingyReadModel>()
                           .UseElasticsearchReadModel <ElasticsearchThingyMessageReadModel, ThingyMessageLocator>()
                           .AddQueryHandlers(
                typeof(ElasticsearchThingyGetQueryHandler),
                typeof(ElasticsearchThingyGetVersionQueryHandler),
                typeof(ElasticsearchThingyGetMessagesQueryHandler))
                           .RegisterServices(sr => sr.Register <IReadModelDescriptionProvider>(c => testReadModelDescriptionProvider))
                           .CreateResolver();

            _elasticClient = resolver.Resolve <IElasticClient>();
            _readModelDescriptionProvider = resolver.Resolve <IReadModelDescriptionProvider>();

            _elasticClient.CreateIndex(indexName);
            _elasticClient.Map <ElasticsearchThingyMessageReadModel>(d => d
                                                                     .Index(indexName)
                                                                     .MapFromAttributes());

            return(resolver);
        }