Skip to content

trstephen/Elasticsearch-Inside

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

    #Elasticsearch Inside

Many thanks to DJPorv who created the first version of this.

This is a fully embedded version of Elasticsearch for integration tests. When the instance is created both the jvm and elasticsearch itself is extracted to a temporary location (2-3 seconds in my tests) and started (5-6 seconds in my tests). Once disposed everything is removed again.

The instance will be started on a random port - full url available as Url property.

How to

To use elasticsearch in integration tests simply instantiate it - in these tests I'm using the excellent client Elasticsearch-NEST:

using (var elasticsearch = new Elasticsearch())
{
    ////Arrange
    var client = new ElasticClient(new ConnectionSettings(elasticsearch.Url));

    ////Act
    var result = client.Ping();

    ////Assert
    Assert.That(result.IsValid);
}

A few settings can be modified via the constructor. In this example I change the port and add a custom commandline argument for the elasticsearch startup:

using (var elasticsearch = new Elasticsearch(c => c
    .Port(444)
    .AddArgument("-Des.script.engine.groovy.file.aggs=on")))
{
    ////Arrange
    var client = new ElasticClient(new ConnectionSettings(elasticsearch.Url));

    ////Act
    var result = client.Ping();

    ////Assert
    Assert.That(result.IsValid);
    Assert.That(elasticsearch.Url.Port, Is.EqualTo(444));
}

By default nothing is being logged, logging to trace can be enabled with EnableLogging() and can be customized to log to somewhere else with the LogTo() statement:

Console output is by default being written to Trace.Write but can be customized by providing a custom logging-lambda:

using (new Elasticsearch(c => c.EnableLogging().LogTo(Console.WriteLine)))
{
                
}

Install

Simply add the Nuget package:

PM> Install-Package elasticsearch-inside

Requirements

You'll need .NET Framework 4.5.1 or later to use the precompiled binaries.

License

Elasticsearch Inside is under the MIT license.

About

Start Elasticsearch from .NET for integration tests. Contains both java runtime and elasticsearch embedded in the dll.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 87.0%
  • PowerShell 12.0%
  • Batchfile 1.0%