---
name: "Search::Elasticsearch::TestServer"
section: "3pm"
platform: "linux"
package: "libsearch-elasticsearch-perl"
version: "8.12-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Search::Elasticsearch::TestServer"
---

# Search::Elasticsearch::TestServer(3pm)

A helper class to launch Elasticsearch nodes

## NAME

Search::Elasticsearch::TestServer - A helper class to launch Elasticsearch nodes

## VERSION

version 8.12

## SYNOPSIS

```
    use Search::Elasticsearch;
    use Search::Elasticsearch::TestServer;
    my $server = Search::Elasticsearch::TestServer->new(
        es_home    => '/path/to/elasticsearch',  # defaults to $ENV{ES_HOME}
        es_version => '6_0'                      # defaults to $ENV{ES_VERSION}
    );
    my $nodes = $server->start;
    my $es    = Search::Elasticsearch->new( nodes => $nodes );
    # run tests
    $server->shutdown;
```

## DESCRIPTION

The Search::Elasticsearch::TestServer class can be used to launch one or more instances of Elasticsearch for testing purposes.  The nodes will be shutdown automatically.

## METHODS

### new()

```
    my $server = Search::Elasticsearch::TestServer->new(
        es_home    => '/path/to/elasticsearch',
        es_version => '6_0',
        instances => 1,
        http_port => 9600,
        es_port   => 9700,
        conf      => ['attr.foo=bar'],
    );
```

Params:

- •

  `"es_home"`

  Required. Must point to the Elasticsearch home directory, which contains `"./bin/elasticsearch"`.  Defaults to `$ENV{ES_HOME}`

- •

  `"es_version"`

  Required. Accepts a version of the client, eg \`6\_0\`, \`5\_0\`, \`2\_0\`, \`1\_0\`, \`0\_90\`. Defaults to `$ENV{ES_VERSION}`.

- •

  `"instances"`

  The number of nodes to start. Defaults to 1

- •

  `"http_port"`

  The port to use for HTTP. If multiple instances are started, the `"http_port"` will be incremented for each subsequent instance. Defaults to 9600.

- •

  `"es_port"`

  The port to use for Elasticsearch's internal transport. If multiple instances are started, the `"es_port"` will be incremented for each subsequent instance. Defaults to 9700

- •

  `"conf"`

  An array containing any extra startup options that should be passed to Elasticsearch.

## start()

```
    $nodes = $server->start;
```

Starts the required instances and returns an array ref containing the IP and port of each node, suitable for passing to "**new()**" in Search::Elasticsearch:

```
    $es = Search::Elasticsearch->new( nodes => $nodes );
```

## shutdown()

```
    $server->shutdown;
```

Kills the running instances.  This will be called automatically when `$server` goes out of scope or if the program receives a `"SIGINT"`.

## AUTHOR

Enrico Zimuel \<enrico.zimuel@elastic.co\>

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2024 by Elasticsearch BV.

This is free software, licensed under:

```
  The Apache License, Version 2.0, January 2004
```
