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 [email protected].
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.