Hey,

you might want to read:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/testing-framework.html


should help you to create tests which have a whole elasticsearch cluster
running in the background.


--Alex


On Thu, Feb 13, 2014 at 7:37 PM, joergpra...@gmail.com <
joergpra...@gmail.com> wrote:

> I admit the code is confusing and too short, sorry.
>
> What you want is just exactly what I do.
>
> I start a test elasticsearch test cluster by doing this
>
>
>     @BeforeMethod
>     public void create() throws Exception {
>         startNode("1");
>         NodesInfoRequest nodesInfoRequest = new
> NodesInfoRequest().transport(true);
>         NodesInfoResponse response =
> client("1").admin().cluster().nodesInfo(nodesInfoRequest).actionGet();
>         InetSocketTransportAddress address =
> (InetSocketTransportAddress)response.iterator().next()
>                         .getTransport().getAddress().publishAddress();
>         PORT = address.address().getPort();
>         addresses.put("1", address);
>        ....
>     }
>
>    ...
>
>     protected URI getAddress() {
>         return URI.create("es://localhost:" + PORT + "?es.cluster.name="
> + CLUSTER);
>     }
>
>
>  and now I can tell a TransportClient to use the server. For this I keep a
> map of adresses of the server nodes in form of an URI.
>
> Look at this code, which is trivially extending the abstract test code
>
>     @Test
>     public void testBulkClient() {
>         final BulkClient es = new BulkClient()
>                 .newClient(getAddress());
>         es.shutdown();
>         if (es.hasErrors()) {
>             logger.error("error", es.getThrowable());
>         }
>         assertFalse(es.hasErrors());
>     }
>
> I use "getAddress()" for the address of the elasticseach test cluster that
> is currently running, and the "BulkClient" (which is my custom client
> wrapping a TransportClient together with a BulkProcessor) is connecting to
> the embedded test cluster with "newClient(...)". In this method I build a
> Settings object that contains all the required info for the TransportClient
> to connect.
>
> The Setting object is something like
>
> settingsBuilder()
>                 .put("cluster.name", findClusterName(uri))
>                 .put("network.server", false)
>                 .put("node.client", true)
>                 .put("client.transport.sniff", false)
>                 .put("client.transport.ignore_cluster_name", false)
>                 .put("client.transport.ping_timeout", "30s")
>                 .put("client.transport.nodes_sampler_interval", "30s")
>                 .build();
>
> where "findClusterName()" is a routine to get the cluster name from the
> parameters of the test.
>
> The @AfterMethod shuts everything down, the "BulkClient" and the test
> cluster.
>
> If i want more nodes, I add "startNode("2")", "startNode("3")", to the
> @BeforeMethod
>
> Does this help?
>
> Jörg
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "elasticsearch" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to elasticsearch+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/elasticsearch/CAKdsXoEL2w5kJby8PddkvHRdZNtAima3E1vAaEYOW%3D3mQN2_og%40mail.gmail.com
> .
>
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/CAGCwEM9J7g23LTiDwci6xu5wcTKyTMxpsCancLLdjdKteur6tw%40mail.gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to