예제 #1
0
            public void Can_query_using_single_value()
            {
                using (var elasticsearch = new ElasticsearchInside.Elasticsearch())
                {
                    var elasticClient = new ElasticClient(new ConnectionSettings(elasticsearch.Url));

                    var camaro = new Car {
                        Name = "Camaro"
                    };
                    var corvette = new Car {
                        Name = "Corvette"
                    };
                    var monteCarlo = new Car {
                        Name = "Monte Carlo"
                    };

                    elasticClient.Index(camaro, x => x.Index("vehicles"));
                    elasticClient.Index(corvette, x => x.Index("vehicles"));
                    elasticClient.Index(monteCarlo, x => x.Index("vehicles"));

                    elasticClient.Refresh("vehicles");

                    var results = elasticClient
                                  .Search <Car>(x => x.Index("vehicles")
                                                .PostFilter(new { Name = "camaro" }));

                    Assert.NotNull(results);
                    Assert.Equal(1, results.Hits.Count());
                    Assert.Equal("Camaro", results.Hits.First().Source.Name);
                }
            }
            public void Properly_filters_date_ranges(string startProductionRunRange, int expectedResults)
            {
                using (var elasticsearch = new ElasticsearchInside.Elasticsearch())
                {
                    var elasticClient = new ElasticClient(new ConnectionSettings(elasticsearch.Url).EnableDebugMode(x =>
                    {
                        Debug.WriteLine(x.DebugInformation);
                    }));

                    var camaro = new Car {
                        Name = "Camaro", StartProductionRun = DateTimeOffset.Parse("2020-01-01T00:00:00Z")
                    };
                    var corvette = new Car {
                        Name = "Corvette", StartProductionRun = DateTimeOffset.Parse("2010-01-01T00:00:00Z")
                    };
                    var monteCarlo = new Car {
                        Name = "Monte Carlo", StartProductionRun = DateTimeOffset.Parse("2000-01-01T00:00:00Z")
                    };

                    elasticClient.Index(camaro, x => x.Index("vehicles"));
                    elasticClient.Index(corvette, x => x.Index("vehicles"));
                    elasticClient.Index(monteCarlo, x => x.Index("vehicles"));

                    elasticClient.Refresh("vehicles");

                    var noResults = elasticClient.Search <Car>(s => s.Index("vehicles").Query(
                                                                   q => q.Bool(x => x.Filter(new { StartProductionRun = Range.FromString <DateTime>(startProductionRunRange) }))));

                    Assert.Equal(expectedResults, noResults.Hits.Count());
                }
            }
            public void Properly_filters_numeric_ranges(string yearRange, int expectedResults)
            {
                using (var elasticsearch = new ElasticsearchInside.Elasticsearch())
                {
                    var elasticClient = new ElasticClient(new ConnectionSettings(elasticsearch.Url).EnableDebugMode(x =>
                    {
                        Debug.WriteLine(x.DebugInformation);
                    }));

                    var camaro = new Car {
                        Name = "Camaro", Year = 2020
                    };
                    var corvette = new Car {
                        Name = "Corvette", Year = 2010
                    };
                    var monteCarlo = new Car {
                        Name = "Monte Carlo", Year = 2000
                    };

                    elasticClient.Index(camaro, x => x.Index("vehicles"));
                    elasticClient.Index(corvette, x => x.Index("vehicles"));
                    elasticClient.Index(monteCarlo, x => x.Index("vehicles"));

                    elasticClient.Refresh("vehicles");

                    var noResults = elasticClient.Search <Car>(s => s.Index("vehicles").Query(
                                                                   q => q.Bool(x => x.Filter(new { Year = Range.FromString <int>(yearRange) }))));

                    Assert.Equal(expectedResults, noResults.Hits.Count());
                }
            }
            public void Nullable_boolean_null_returns_expected_results()
            {
                using (var elasticsearch = new ElasticsearchInside.Elasticsearch())
                {
                    var elasticClient = new ElasticClient(new ConnectionSettings(elasticsearch.Url));

                    var camaro = new Car {
                        Name = "Camaro", IsElectric = false
                    };
                    var volt = new Car {
                        Name = "Volt", IsElectric = true
                    };

                    elasticClient.Index(camaro, x => x.Index("vehicles"));
                    elasticClient.Index(volt, x => x.Index("vehicles"));

                    elasticClient.Refresh("vehicles");

                    var results = elasticClient.Search <Car>(s => s.Index("vehicles").Query(
                                                                 q => q.MatchAll() && q.Bool(x => x.Filter(new { IsElectric = (bool?)null }))));

                    Assert.Collection(
                        results.Hits.OrderBy(x => x.Source.Name),
                        x => Assert.Equal("Camaro", x.Source.Name),
                        x => Assert.Equal("Volt", x.Source.Name));
                }
            }
            public void Can_query_using_collection()
            {
                using (var elasticsearch = new ElasticsearchInside.Elasticsearch())
                {
                    var elasticClient = new ElasticClient(new ConnectionSettings(elasticsearch.Url));

                    var camaro = new Car {
                        Name = "Camaro"
                    };
                    var corvette = new Car {
                        Name = "Corvette"
                    };
                    var monteCarlo = new Car {
                        Name = "Monte Carlo"
                    };

                    elasticClient.Index(camaro, x => x.Index("vehicles"));
                    elasticClient.Index(corvette, x => x.Index("vehicles"));
                    elasticClient.Index(monteCarlo, x => x.Index("vehicles"));

                    elasticClient.Refresh("vehicles");

                    var results = elasticClient.Search <Car>(s => s.Index("vehicles").Query(
                                                                 q => q.Bool(x => x.Filter(new { Name = new[] { "camaro", "monte carlo" } }))));

                    Assert.Collection(
                        results.Hits.OrderBy(x => x.Source.Name),
                        x => Assert.Equal("Camaro", x.Source.Name),
                        x => Assert.Equal("Monte Carlo", x.Source.Name));
                }
            }
            public void Nullable_boolean_false_returns_expected_results()
            {
                using (var elasticsearch = new ElasticsearchInside.Elasticsearch())
                {
                    var elasticClient = new ElasticClient(new ConnectionSettings(elasticsearch.Url));

                    var camaro = new Car {
                        Name = "Camaro", IsElectric = false
                    };
                    var volt = new Car {
                        Name = "Volt", IsElectric = true
                    };

                    elasticClient.Index(camaro, x => x.Index("vehicles"));
                    elasticClient.Index(volt, x => x.Index("vehicles"));

                    elasticClient.Refresh("vehicles");

                    var results = elasticClient
                                  .Search <Car>(x => x.Index("vehicles")
                                                .PostFilter(new { IsElectric = false }));

                    Assert.Equal("Camaro", results.Hits.Single().Source.Name);
                }
            }
            public void Nullable_boolean_omitted_returns_expected_results()
            {
                using (var elasticsearch = new ElasticsearchInside.Elasticsearch())
                {
                    var elasticClient = new ElasticClient(new ConnectionSettings(elasticsearch.Url));

                    var camaro = new Car {
                        Name = "Camaro", IsElectric = false
                    };
                    var volt = new Car {
                        Name = "Volt", IsElectric = true
                    };

                    elasticClient.Index(camaro, x => x.Index("vehicles"));
                    elasticClient.Index(volt, x => x.Index("vehicles"));

                    elasticClient.Refresh("vehicles");

                    var results = elasticClient.Search <Car>(s => s.Index("vehicles").Query(
                                                                 q => q.MatchAll() && q.Filter(new { })));

                    Assert.NotNull(results);
                    Assert.Equal(2, results.Hits.Count());
                    Assert.Equal("Camaro", results.Hits.First().Source.Name);
                    Assert.Equal("Volt", results.Hits.Last().Source.Name);
                }
            }
예제 #8
0
        protected ElasticTest(ITestOutputHelper outputHelper)
        {
            _output = outputHelper;
#if ESV5
            _server = new ElasticsearchInside.Elasticsearch(c => c.EnableLogging().LogTo(this.WriteToLog));
#else
            _server = new ElasticsearchInside.Elasticsearch(c => c.EnableLogging().LogTo(this.WriteToLog));
#endif
        }
        public ESFixture(IMessageSink messageSink)
        {
            _messageSink = messageSink;

            _elasticsearch = new ElasticsearchInside.Elasticsearch(c => c.SetElasticsearchStartTimeout(60)
                                                                   .EnableLogging()
                                                                   .LogTo(s => _messageSink.OnMessage(new Xunit.Sdk.DiagnosticMessage(s ?? string.Empty))));

            _elasticsearch.ReadySync();
        }
        public ElasticSearchConfig()
        {
            ElasticSearch = new ElasticsearchInside.Elasticsearch(
                settings => settings
                .EnableLogging()
                .SetPort(9200)
                .SetElasticsearchStartTimeout(180))
                            .ReadySync();

            ////Arrange
            ConnectionConfiguration = new ConnectionSettings(ElasticSearch.Url);
        }
        public ElasticSearchConfig()
        {
            try
            {
                ElasticSearch = new ElasticsearchInside.Elasticsearch(
                    settings => settings
                    .EnableLogging()
                    .SetElasticsearchStartTimeout(180))
                                .ReadySync();
                ConnectionConfiguration = new ConnectionSettings(ElasticSearch.Url);
            }
            catch (DllNotFoundException)
            {
            }

            ////Arrange
        }
        public ClusterFixture(IMessageSink messageSink)
        {
            _messageSink = messageSink;

            _elasticsearch = new ElasticsearchInside.Elasticsearch(c => c.SetElasticsearchStartTimeout(6000)
                                                                   .EnableLogging()
                                                                   .LogTo(s => _messageSink.OnMessage(new Xunit.Sdk.DiagnosticMessage(s ?? string.Empty))));

            _elasticsearch.ReadySync();



            var builder = new TestClusterBuilder();

            // add the cluster id for this instance
            // this allows the silos to safely lookup shared data for this cluster deployment
            // without this we can only share data via static properties and that messes up parallel testing
            builder.ConfigureHostConfiguration(config =>
            {
                config.AddInMemoryCollection(new Dictionary <string, string>()
                {
                    { nameof(TestClusterId), TestClusterId },
                    { nameof(ESEndpoint), _elasticsearch.Url.ToString() }
                });
            });

            // a configurator allows the silos to configure themselves
            // at this time, configurators cannot take injected parameters
            // therefore we must other means of sharing objects as you can see above
            builder.AddSiloBuilderConfigurator <SiloBuilderConfigurator>();
            builder.AddClientBuilderConfigurator <ClientBuilderConfigurator>();

            Cluster = builder.Build();
            Cluster.Deploy();


            //var esTeleM = new ElasticSearchTelemetryConsumer(_elasticsearch.Url, "orleans-telemetry");
            //LogManager.TelemetryConsumers.Add(esTeleM);
            //LogManager.LogConsumers.Add(esTeleM);
        }
예제 #13
0
            public void Multiple_filter_properties_queried_as_collection_of_and_operators()
            {
                using (var elasticsearch = new ElasticsearchInside.Elasticsearch())
                {
                    var elasticClient = new ElasticClient(new ConnectionSettings(elasticsearch.Url));

                    var camaro = new Car {
                        Name = "Camaro", Year = 2000
                    };
                    var corvette = new Car {
                        Name = "Corvette", Year = 2016
                    };
                    var monteCarlo = new Car {
                        Name = "Monte Carlo", Year = 2000
                    };

                    elasticClient.Index(camaro, x => x.Index("vehicles"));
                    elasticClient.Index(corvette, x => x.Index("vehicles"));
                    elasticClient.Index(monteCarlo, x => x.Index("vehicles"));

                    elasticClient.Refresh("vehicles");

                    var noResults = elasticClient
                                    .Search <Car>(x => x.Index("vehicles")
                                                  .PostFilter(new { Name = new[] { "camaro", "monte carlo" }, Year = 2016 }));

                    Assert.NotNull(noResults);
                    Assert.Equal(0, noResults.Hits.Count());

                    var twoResults = elasticClient
                                     .Search <Car>(x => x.Index("vehicles")
                                                   .PostFilter(new { Name = new[] { "camaro", "monte carlo", "corvette" }, Year = 2000 }));

                    Assert.NotNull(twoResults);
                    Assert.Equal(2, twoResults.Hits.Count());
                    Assert.Equal("Camaro", twoResults.Hits.First().Source.Name);
                    Assert.Equal("Monte Carlo", twoResults.Hits.Last().Source.Name);
                }
            }
            public void Null_string_array_item_does_not_throw_NullReferenceException()
            {
                using (var elasticsearch = new ElasticsearchInside.Elasticsearch())
                {
                    var elasticClient = new ElasticClient(new ConnectionSettings(elasticsearch.Url));

                    var camaro = new Car {
                        Name = "Camaro", IsElectric = false
                    };
                    var volt = new Car {
                        Name = "Volt", IsElectric = true
                    };

                    elasticClient.Index(camaro, x => x.Index("vehicles"));
                    elasticClient.Index(volt, x => x.Index("vehicles"));

                    elasticClient.Refresh("vehicles");

                    elasticClient.Search <Car>(s => s.Index("vehicles").Query(
                                                   q => q.MatchAll() && q.Filter(new { Name = new string[] { null } })));
                }
            }
예제 #15
0
 public Fixture()
 {
     Elasticsearch = new ElasticsearchInside.Elasticsearch();
     Elasticsearch = Task.Run(() => Elasticsearch.Ready()).Result;
 }