Author: btellier Date: Mon Jun 29 08:34:40 2015 New Revision: 1688130 URL: http://svn.apache.org/r1688130 Log: MAILBOX-155 Factorize test utils and increase Time out for tests
Modified: james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIndexerTest.java james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/EmbeddedElasticSearch.java Modified: james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIndexerTest.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIndexerTest.java?rev=1688130&r1=1688129&r2=1688130&view=diff ============================================================================== --- james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIndexerTest.java (original) +++ james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIndexerTest.java Mon Jun 29 08:34:40 2015 @@ -16,16 +16,15 @@ * specific language governing permissions and limitations * * under the License. * ****************************************************************/ + package org.apache.james.mailbox.elasticsearch; -import static com.jayway.awaitility.Awaitility.await; import static org.assertj.core.api.Assertions.assertThat; -import static org.elasticsearch.node.NodeBuilder.nodeBuilder; -import org.elasticsearch.action.admin.indices.flush.FlushRequestBuilder; +import java.io.IOException; + import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.Client; -import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.node.Node; import org.junit.After; @@ -34,9 +33,6 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; -import com.jayway.awaitility.Duration; - - public class ElasticSearchIndexerTest { @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); @@ -45,22 +41,14 @@ public class ElasticSearchIndexerTest { private ElasticSearchIndexer testee; @Before - public void setup() throws Exception { - node = nodeBuilder().local(true) - .settings(ImmutableSettings.builder() - .put("path.data", temporaryFolder.newFolder().getAbsolutePath()) - .put("script.disable_dynamic",false) - .build()) - .node(); - node.start(); - awaitForElasticSearch(); - + public void setup() throws IOException { + node = EmbeddedElasticSearch.provideNode(temporaryFolder); testee = new ElasticSearchIndexer(node); } @After public void tearDown() { - node.close(); + EmbeddedElasticSearch.shutDown(node); } @Test @@ -69,7 +57,7 @@ public class ElasticSearchIndexerTest { String content = "{\"message\": \"trying out Elasticsearch\"}"; testee.indexMessage(messageId, content); - awaitForElasticSearch(); + EmbeddedElasticSearch.awaitForElasticSearch(node); try (Client client = node.client()) { SearchResponse searchResponse = client.prepareSearch(ElasticSearchIndexer.MAILBOX_INDEX) @@ -91,7 +79,7 @@ public class ElasticSearchIndexerTest { String content = "{\"message\": \"trying out Elasticsearch\",\"field\":\"Should be unchanged\"}"; testee.indexMessage(messageId, content); - awaitForElasticSearch(); + EmbeddedElasticSearch.awaitForElasticSearch(node); testee.updateMessage(messageId, "{\"message\": \"mastering out Elasticsearch\"}"); EmbeddedElasticSearch.awaitForElasticSearch(node); @@ -115,6 +103,12 @@ public class ElasticSearchIndexerTest { @Test(expected=IllegalArgumentException.class) public void updateMessageShouldThrowWhenJsonIsNull() throws InterruptedException { + String messageId = "1:2"; + String content = "{\"message\": \"trying out Elasticsearch\"}"; + + testee.indexMessage(messageId, content); + EmbeddedElasticSearch.awaitForElasticSearch(node); + testee.updateMessage("1", null); } @@ -124,10 +118,10 @@ public class ElasticSearchIndexerTest { String content = "{\"message\": \"trying out Elasticsearch\"}"; testee.indexMessage(messageId, content); - awaitForElasticSearch(); + EmbeddedElasticSearch.awaitForElasticSearch(node); testee.deleteAllWithIdStarting("1:"); - awaitForElasticSearch(); + EmbeddedElasticSearch.awaitForElasticSearch(node); try (Client client = node.client()) { SearchResponse searchResponse = client.prepareSearch(ElasticSearchIndexer.MAILBOX_INDEX) @@ -144,22 +138,22 @@ public class ElasticSearchIndexerTest { String content = "{\"message\": \"trying out Elasticsearch\"}"; testee.indexMessage(messageId, content); - awaitForElasticSearch(); + EmbeddedElasticSearch.awaitForElasticSearch(node); String messageId2 = "1:2"; String content2 = "{\"message\": \"trying out Elasticsearch 2\"}"; testee.indexMessage(messageId2, content2); - awaitForElasticSearch(); + EmbeddedElasticSearch.awaitForElasticSearch(node); String messageId3 = "2:3"; String content3 = "{\"message\": \"trying out Elasticsearch 3\"}"; testee.indexMessage(messageId3, content3); - awaitForElasticSearch(); + EmbeddedElasticSearch.awaitForElasticSearch(node); testee.deleteAllWithIdStarting("1:"); - awaitForElasticSearch(); + EmbeddedElasticSearch.awaitForElasticSearch(node); try (Client client = node.client()) { SearchResponse searchResponse = client.prepareSearch(ElasticSearchIndexer.MAILBOX_INDEX) @@ -172,14 +166,14 @@ public class ElasticSearchIndexerTest { @Test public void deleteMessage() throws Exception { - String messageId = "1"; + String messageId = "1:2"; String content = "{\"message\": \"trying out Elasticsearch\"}"; - + testee.indexMessage(messageId, content); - awaitForElasticSearch(); - + EmbeddedElasticSearch.awaitForElasticSearch(node); + testee.deleteMessage(messageId); - awaitForElasticSearch(); + EmbeddedElasticSearch.awaitForElasticSearch(node); try (Client client = node.client()) { SearchResponse searchResponse = client.prepareSearch(ElasticSearchIndexer.MAILBOX_INDEX) @@ -189,21 +183,5 @@ public class ElasticSearchIndexerTest { assertThat(searchResponse.getHits().getTotalHits()).isEqualTo(0); } } - - /** - * Sometimes, tests are too fast. - * This method ensure that ElasticSearch service is up and indices are updated - */ - private void awaitForElasticSearch() { - await().atMost(Duration.ONE_SECOND).until(() -> flush()); - } - - private boolean flush() { - try (Client client = node.client()) { - new FlushRequestBuilder(client.admin().indices()).setForce(true).get(); - return true; - } catch (Exception e) { - return false; - } - } + } Modified: james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/EmbeddedElasticSearch.java URL: http://svn.apache.org/viewvc/james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/EmbeddedElasticSearch.java?rev=1688130&r1=1688129&r2=1688130&view=diff ============================================================================== --- james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/EmbeddedElasticSearch.java (original) +++ james/mailbox/trunk/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/EmbeddedElasticSearch.java Mon Jun 29 08:34:40 2015 @@ -21,10 +21,11 @@ package org.apache.james.mailbox.elastic +import static com.jayway.awaitility.Awaitility.await; +import static org.elasticsearch.node.NodeBuilder.nodeBuilder; + import java.io.IOException; -import com.jayway.awaitility.Duration; -import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest; import org.elasticsearch.action.admin.indices.flush.FlushRequestBuilder; import org.elasticsearch.client.Client; import org.elasticsearch.common.settings.ImmutableSettings; @@ -34,8 +35,7 @@ import org.junit.rules.TemporaryFolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static com.jayway.awaitility.Awaitility.await; -import static org.elasticsearch.node.NodeBuilder.nodeBuilder; +import com.jayway.awaitility.Duration; public class EmbeddedElasticSearch { @@ -45,7 +45,6 @@ public class EmbeddedElasticSearch { Node node = nodeBuilder().local(true) .settings(ImmutableSettings.builder() .put("path.data", temporaryFolder.newFolder().getAbsolutePath()) - .put("script.disable_dynamic",true) .build()) .node(); node.start(); @@ -56,11 +55,9 @@ public class EmbeddedElasticSearch { public static void shutDown(Node node) { EmbeddedElasticSearch.awaitForElasticSearch(node); try (Client client = node.client()) { - node.client() - .admin() - .indices() - .delete(new DeleteIndexRequest(ElasticSearchIndexer.MAILBOX_INDEX)) - .actionGet(); + client.prepareDeleteByQuery(ElasticSearchIndexer.MAILBOX_INDEX) + .setQuery(QueryBuilders.matchAllQuery()) + .get(); } catch (Exception e) { LOGGER.warn("Error while closing ES connection", e); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org