Hey, I highly recommend reusing the existing elasticsearch test infrastructure, as it cleans up behind some test runs and also creates everything upfront, see http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/randomized-testing.html#randomized-testing
The integration tests might be especially interesting for you --Alex On Tue, Apr 15, 2014 at 1:11 PM, Magnus Poromaa <[email protected]>wrote: > Hi > > > I am just starting up with elastic search and I have creaed a local > builder like this > > > public class EmbeddedElasticSearchServer { > > > private static final String DEFAULT_DATA_DIRECTORY = > "data/elasticsearch-data"; > > private final Node node; > private final String dataDirectory; > > public EmbeddedElasticSearchServer() { > this(DEFAULT_DATA_DIRECTORY); > } > > public EmbeddedElasticSearchServer(String dataDirectory) { > this.dataDirectory = dataDirectory; > > ImmutableSettings.Builder settings = > ImmutableSettings.settingsBuilder() > .put("http.enabled", "false") > .put("index.number_of_shards", 1) > .put("index.number_of_replicas", 1) > .put("path.data", dataDirectory); > > > node = NodeBuilder.nodeBuilder() > .local(true) > .settings(settings.build()) > .build() > .start(); > > > } > > public Client getClient() { > > return node.client(); > } > > public void shutdown() { > node.close(); > deleteDataDirectory(); > } > > private void deleteDataDirectory() { > try { > FileUtils.deleteDirectory(new File(dataDirectory)); > } catch (IOException e) { > throw new RuntimeException("Could not delete data directory of > embedded elastic search server", e); > } > } > > } > > > The problem is that it fails and if I remove the > FileUtils.deleteDirectory(new File(dataDirectory)); is succeeds the second > time. This most likely mean it works when the directory is there. > > > > The test I run is just > > @Test > public void testFindInstruments() throws Exception { > String json = > mapper.writeValueAsString(InstrumentIndex.builder().withName("test").withShortName("olle").build()); > IndexResponse response = client.prepareIndex("accounts", > "account", "1") > .setSource(json) > .setConsistencyLevel(WriteConsistencyLevel.ONE) > .execute() > .actionGet(); > > > //This is how we create the index more completely > > > //client.admin().indices().create(Requests.createIndexRequest("")).actionGet(); > > > SearchRequestBuilder searchRequestBuilder = new > SearchRequestBuilder(client); > > //@TODO MAGPOR We need to further develop this but it should be > our own query API and not elastic search that > //we front with > InstrumentQuery instrumentQuery = InstrumentQuery.builder() > .withNameEquals("test") > .or() > .withNameEquals("test") > .build(); > > BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); > for (QueryBuilder childQueryBuilder : instrumentQuery) { > queryBuilder.should(childQueryBuilder); > } > searchRequestBuilder.setQuery(queryBuilder); > SearchResponse searchResponse = searchRequestBuilder.get(); > Assert.assertEquals(1, searchResponse.getHits().totalHits()); > } > > > The InstrumentQuery is using the elastic search query builder. The failig > part is the > > Assert.assertEquals(1, searchResponse.getHits().totalHits()); > > > which seems to be the first time i I run it for some reason. > > > I guess it has something to do with that elastic expects the directory to > be there when it starts up or ? > > > Would be good to get some advice on getting this working soince it is a > very nice way to test > > -- > 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/7e3ed8ae-a65b-4fa7-9f2d-053c87cff3f8%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/7e3ed8ae-a65b-4fa7-9f2d-053c87cff3f8%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- 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/CAGCwEM8NGw%2BvXOj9BYrWaMfYQNvHM233O3UvutSCEXa9NNCWRA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
