You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/08/10 11:09:37 UTC

[camel] branch main updated: CAMEL-19725: replaced Thread.sleep() in camel-opensearch tests (#11055)

This is an automated email from the ASF dual-hosted git repository.

orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new f0ea0a1baf0 CAMEL-19725: replaced Thread.sleep() in camel-opensearch tests (#11055)
f0ea0a1baf0 is described below

commit f0ea0a1baf0f0761d79dec660f535b9b18266c93
Author: LostArtist <93...@users.noreply.github.com>
AuthorDate: Thu Aug 10 13:09:15 2023 +0200

    CAMEL-19725: replaced Thread.sleep() in camel-opensearch tests (#11055)
    
    * CAMEL-19725: replaced Thread.sleep() in camel-opensearch tests
    
    * CAMEL-19725: replaced Thread.sleep() in camel-opensearch tests
    
    ---------
    
    Co-authored-by: Nikita Konovalov <nk...@redhat.com>
---
 .../OpensearchGetSearchDeleteExistsUpdateIT.java   | 188 ++++++++++-----------
 .../integration/OpensearchSizeLimitIT.java         |  17 +-
 2 files changed, 103 insertions(+), 102 deletions(-)

diff --git a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java
index ca604e31953..782d7fb73c9 100644
--- a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java
+++ b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchGetSearchDeleteExistsUpdateIT.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.concurrent.TimeUnit;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.JsonNode;
@@ -47,6 +48,7 @@ import org.opensearch.client.opensearch.core.msearch.MultisearchBody;
 import org.opensearch.client.opensearch.core.msearch.MultisearchHeader;
 import org.opensearch.client.opensearch.core.msearch.RequestItem;
 import org.opensearch.client.opensearch.core.search.HitsMetadata;
+import org.testcontainers.shaded.org.awaitility.Awaitility;
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.notNullValue;
@@ -270,6 +272,7 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
 
     @Test
     void testSearchWithMapQuery() throws Exception {
+
         //first, Index a value
         Map<String, String> map1 = Map.of("testSearchWithMapQuery1", "foo");
         Map<String, String> map2 = Map.of("testSearchWithMapQuery2", "bar");
@@ -295,20 +298,19 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
         actualQuery.put("doc.testSearchWithMapQuery1", "foo");
 
         // Delay the execution, because the search is getting stale results
-        Thread.sleep(2000);
-
-        HitsMetadata<?> resp = template().requestBody("direct:search", query, HitsMetadata.class);
-
-        assertNotNull(resp, "response should not be null");
-        assertNotNull(resp.total());
-        assertEquals(1, resp.total().value(), "response hits should be == 1");
-        assertEquals(1, resp.hits().size(), "response hits should be == 1");
-        Object result = resp.hits().get(0).source();
-        assertInstanceOf(ObjectNode.class, result);
-        assertTrue(((ObjectNode) result).has("doc"));
-        JsonNode node = ((ObjectNode) result).get("doc");
-        assertTrue(node.has("testSearchWithMapQuery1"));
-        assertEquals("foo", node.get("testSearchWithMapQuery1").asText());
+        Awaitility.await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
+            HitsMetadata<?> resp = template().requestBody("direct:search", query, HitsMetadata.class);
+            assertNotNull(resp, "response should not be null");
+            assertNotNull(resp.total());
+            assertEquals(1, resp.total().value(), "response hits should be == 1");
+            assertEquals(1, resp.hits().size(), "response hits should be == 1");
+            Object result = resp.hits().get(0).source();
+            assertInstanceOf(ObjectNode.class, result);
+            assertTrue(((ObjectNode) result).has("doc"));
+            JsonNode node = ((ObjectNode) result).get("doc");
+            assertTrue(node.has("testSearchWithMapQuery1"));
+            assertEquals("foo", node.get("testSearchWithMapQuery1").asText());
+        });
     }
 
     @Test
@@ -334,9 +336,6 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
         assertNotNull(response.total());
         assertEquals(0, response.total().value(), "response hits should be == 0");
 
-        // Delay the execution, because the search is getting stale results
-        Thread.sleep(2000);
-
         // Match
         String q = """
                 {
@@ -344,17 +343,20 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
                 }
                 """;
 
-        HitsMetadata<?> resp = template().requestBody("direct:search", q, HitsMetadata.class);
-        assertNotNull(resp, "response should not be null");
-        assertNotNull(resp.total());
-        assertEquals(1, resp.total().value(), "response hits should be == 1");
-        assertEquals(1, resp.hits().size(), "response hits should be == 1");
-        Object result = resp.hits().get(0).source();
-        assertInstanceOf(ObjectNode.class, result);
-        assertTrue(((ObjectNode) result).has("doc"));
-        JsonNode node = ((ObjectNode) result).get("doc");
-        assertTrue(node.has("testSearchWithStringQuery1"));
-        assertEquals("foo", node.get("testSearchWithStringQuery1").asText());
+        // Delay the execution, because the search is getting stale results
+        Awaitility.await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
+            HitsMetadata<?> resp = template().requestBody("direct:search", q, HitsMetadata.class);
+            assertNotNull(resp, "response should not be null");
+            assertNotNull(resp.total());
+            assertEquals(1, resp.total().value(), "response hits should be == 1");
+            assertEquals(1, resp.hits().size(), "response hits should be == 1");
+            Object result = resp.hits().get(0).source();
+            assertInstanceOf(ObjectNode.class, result);
+            assertTrue(((ObjectNode) result).has("doc"));
+            JsonNode node = ((ObjectNode) result).get("doc");
+            assertTrue(node.has("testSearchWithStringQuery1"));
+            assertEquals("foo", node.get("testSearchWithStringQuery1").asText());
+        });
     }
 
     @Test
@@ -376,10 +378,6 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
         HitsMetadata<?> response = template().requestBody("direct:search", builder, HitsMetadata.class);
         assertNotNull(response, "response should not be null");
         assertNotNull(response.total());
-        assertEquals(0, response.total().value(), "response hits should be == 0");
-
-        // Delay the execution, because the search is getting stale results
-        Thread.sleep(2000);
 
         SearchRequest.Builder b = new SearchRequest.Builder()
                 .query(new Query.Builder()
@@ -387,19 +385,21 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
                                 .build())
                         .build());
 
-        // Match
-        HitsMetadata<?> resp = template().requestBody("direct:search", b, HitsMetadata.class);
-
-        assertNotNull(resp, "response should not be null");
-        assertNotNull(resp.total());
-        assertEquals(1, resp.total().value(), "response hits should be == 1");
-        assertEquals(1, resp.hits().size(), "response hits should be == 1");
-        Object result = resp.hits().get(0).source();
-        assertInstanceOf(ObjectNode.class, result);
-        assertTrue(((ObjectNode) result).has("doc"));
-        JsonNode node = ((ObjectNode) result).get("doc");
-        assertTrue(node.has("testSearchWithBuilder1"));
-        assertEquals("foo", node.get("testSearchWithBuilder1").asText());
+        // Delay the execution, because the search is getting stale results
+        Awaitility.await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
+            // Match
+            HitsMetadata<?> resp = template().requestBody("direct:search", b, HitsMetadata.class);
+            assertNotNull(resp, "response should not be null");
+            assertNotNull(resp.total());
+            assertEquals(1, resp.total().value(), "response hits should be == 1");
+            assertEquals(1, resp.hits().size(), "response hits should be == 1");
+            Object result = resp.hits().get(0).source();
+            assertInstanceOf(ObjectNode.class, result);
+            assertTrue(((ObjectNode) result).has("doc"));
+            JsonNode node = ((ObjectNode) result).get("doc");
+            assertTrue(node.has("testSearchWithBuilder1"));
+            assertEquals("foo", node.get("testSearchWithBuilder1").asText());
+        });
     }
 
     @Test
@@ -431,27 +431,25 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
                 "direct:search", builder, OpensearchConstants.PARAM_DOCUMENT_CLASS, Product.class, HitsMetadata.class);
         assertNotNull(response, "response should not be null");
         assertNotNull(response.total());
-        assertEquals(0, response.total().value(), "response hits should be == 0");
 
         SearchRequest.Builder b = new SearchRequest.Builder()
                 .query(new Query.Builder().match(new MatchQuery.Builder().field("id").query(FieldValue.of("2020")).build())
                         .build());
 
         // Delay the execution, because the search is getting stale results
-        Thread.sleep(2000);
-
-        // Match
-        HitsMetadata<?> resp = template().requestBodyAndHeader("direct:search", b, OpensearchConstants.PARAM_DOCUMENT_CLASS,
-                Product.class, HitsMetadata.class);
-
-        assertNotNull(resp, "response should not be null");
-        assertNotNull(resp.total());
-        assertEquals(1, resp.total().value(), "response hits should be == 1");
-        assertEquals(1, resp.hits().size(), "response hits should be == 1");
-        Object result = resp.hits().get(0).source();
-        assertInstanceOf(Product.class, result);
-        Product p = (Product) result;
-        assertEquals(product1, p);
+        Awaitility.await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
+            //Match
+            HitsMetadata<?> resp = template().requestBodyAndHeader("direct:search", b, OpensearchConstants.PARAM_DOCUMENT_CLASS,
+                    Product.class, HitsMetadata.class);
+            assertNotNull(resp, "response should not be null");
+            assertNotNull(resp.total());
+            assertEquals(1, resp.total().value(), "response hits should be == 1");
+            assertEquals(1, resp.hits().size(), "response hits should be == 1");
+            Object result = resp.hits().get(0).source();
+            assertInstanceOf(Product.class, result);
+            Product p = (Product) result;
+            assertEquals(product1, p);
+        });
     }
 
     @Test
@@ -459,7 +457,6 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
         //first, Index a value
         Map<String, String> map = createIndexedData();
         String indexId = template().requestBody("direct:index", map, String.class);
-        assertNotNull(indexId, "indexId should be set");
 
         MsearchRequest.Builder builder = new MsearchRequest.Builder().index("twitter").searches(
                 new RequestItem.Builder().header(new MultisearchHeader.Builder().build())
@@ -468,21 +465,22 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
                         .body(new MultisearchBody.Builder().query(b -> b.matchAll(x -> x)).build()).build());
 
         // Delay the execution, because the search is getting stale results
-        Thread.sleep(2000);
+        Awaitility.await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
 
-        @SuppressWarnings("unchecked")
-        List<MultiSearchResponseItem<?>> response = template().requestBody("direct:multiSearch", builder, List.class);
+            @SuppressWarnings("unchecked")
+            List<MultiSearchResponseItem<?>> response = template().requestBody("direct:multiSearch", builder, List.class);
 
-        assertNotNull(response, "response should not be null");
-        assertEquals(2, response.size(), "response should be == 2");
-        assertInstanceOf(MultiSearchResponseItem.class, response.get(0));
-        assertTrue(response.get(0).isResult());
-        assertNotNull(response.get(0).result());
-        assertTrue(response.get(0).result().hits().total().value() > 0);
-        assertInstanceOf(MultiSearchResponseItem.class, response.get(1));
-        assertTrue(response.get(1).isResult());
-        assertNotNull(response.get(1).result());
-        assertTrue(response.get(1).result().hits().total().value() > 0);
+            assertNotNull(response, "response should not be null");
+            assertEquals(2, response.size(), "response should be == 2");
+            assertInstanceOf(MultiSearchResponseItem.class, response.get(0));
+            assertTrue(response.get(0).isResult());
+            assertNotNull(response.get(0).result());
+            assertTrue(response.get(0).result().hits().total().value() > 0);
+            assertInstanceOf(MultiSearchResponseItem.class, response.get(1));
+            assertTrue(response.get(1).isResult());
+            assertNotNull(response.get(1).result());
+            assertTrue(response.get(1).result().hits().total().value() > 0);
+        });
     }
 
     @Test
@@ -496,7 +494,6 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
         product.setName("Guinness book of records 2022");
         String indexId = template().requestBodyAndHeader("direct:index", product, OpensearchConstants.PARAM_INDEX_NAME,
                 "multi-search", String.class);
-        assertNotNull(indexId, "indexId should be set");
 
         MsearchRequest.Builder builder = new MsearchRequest.Builder().index("multi-search").searches(
                 new RequestItem.Builder().header(new MultisearchHeader.Builder().build())
@@ -505,26 +502,27 @@ class OpensearchGetSearchDeleteExistsUpdateIT extends OpensearchTestSupport {
                         .body(new MultisearchBody.Builder().query(b -> b.matchAll(x -> x)).build()).build());
 
         // Delay the execution, because the search is getting stale results
-        Thread.sleep(2000);
-
-        @SuppressWarnings("unchecked")
-        List<MultiSearchResponseItem<?>> response = template().requestBodyAndHeaders(
-                "direct:multiSearch", builder,
-                Map.of(
-                        OpensearchConstants.PARAM_INDEX_NAME, "multi-search",
-                        OpensearchConstants.PARAM_DOCUMENT_CLASS, Product.class),
-                List.class);
-
-        assertNotNull(response, "response should not be null");
-        assertEquals(2, response.size(), "response should be == 2");
-        assertInstanceOf(MultiSearchResponseItem.class, response.get(0));
-        assertTrue(response.get(0).isResult());
-        assertNotNull(response.get(0).result());
-        assertTrue(response.get(0).result().hits().total().value() > 0);
-        assertInstanceOf(MultiSearchResponseItem.class, response.get(1));
-        assertTrue(response.get(1).isResult());
-        assertNotNull(response.get(1).result());
-        assertTrue(response.get(1).result().hits().total().value() > 0);
+        Awaitility.await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
+
+            @SuppressWarnings("unchecked")
+            List<MultiSearchResponseItem<?>> response = template().requestBodyAndHeaders(
+                    "direct:multiSearch", builder,
+                    Map.of(
+                            OpensearchConstants.PARAM_INDEX_NAME, "multi-search",
+                            OpensearchConstants.PARAM_DOCUMENT_CLASS, Product.class),
+                    List.class);
+
+            assertNotNull(response, "response should not be null");
+            assertEquals(2, response.size(), "response should be == 2");
+            assertInstanceOf(MultiSearchResponseItem.class, response.get(0));
+            assertTrue(response.get(0).isResult());
+            assertNotNull(response.get(0).result());
+            assertTrue(response.get(0).result().hits().total().value() > 0);
+            assertInstanceOf(MultiSearchResponseItem.class, response.get(1));
+            assertTrue(response.get(1).isResult());
+            assertNotNull(response.get(1).result());
+            assertTrue(response.get(1).result().hits().total().value() > 0);
+        });
     }
 
     @Test
diff --git a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchSizeLimitIT.java b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchSizeLimitIT.java
index 4ca3b3d9bb8..298c54910f4 100644
--- a/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchSizeLimitIT.java
+++ b/components/camel-opensearch/src/test/java/org/apache/camel/component/opensearch/integration/OpensearchSizeLimitIT.java
@@ -18,12 +18,15 @@ package org.apache.camel.component.opensearch.integration;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.junit.jupiter.api.Test;
 import org.opensearch.client.opensearch.core.search.HitsMetadata;
+import org.testcontainers.shaded.org.awaitility.Awaitility;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 class OpensearchSizeLimitIT extends OpensearchTestSupport {
 
@@ -33,7 +36,7 @@ class OpensearchSizeLimitIT extends OpensearchTestSupport {
         template().requestBody("direct:index", getContent("content"), String.class);
         template().requestBody("direct:index", getContent("content1"), String.class);
         template().requestBody("direct:index", getContent("content2"), String.class);
-        template().requestBody("direct:index", getContent("content3"), String.class);
+        String response = template().requestBody("direct:index", getContent("content3"), String.class);
 
         String query = """
                 {
@@ -44,12 +47,12 @@ class OpensearchSizeLimitIT extends OpensearchTestSupport {
                 """;
 
         // Delay the execution, because the search is getting stale results
-        Thread.sleep(2000);
-
-        HitsMetadata<?> searchWithSizeTwo = template().requestBody("direct:searchWithSizeTwo", query, HitsMetadata.class);
-        HitsMetadata<?> searchFrom3 = template().requestBody("direct:searchFrom3", query, HitsMetadata.class);
-        assertEquals(2, searchWithSizeTwo.hits().size());
-        assertEquals(1, searchFrom3.hits().size());
+        Awaitility.await().pollDelay(2, TimeUnit.SECONDS).untilAsserted(() -> {
+            HitsMetadata<?> searchWithSizeTwo = template().requestBody("direct:searchWithSizeTwo", query, HitsMetadata.class);
+            HitsMetadata<?> searchFrom3 = template().requestBody("direct:searchFrom3", query, HitsMetadata.class);
+            assertEquals(2, searchWithSizeTwo.hits().size());
+            assertEquals(1, searchFrom3.hits().size());
+        });
     }
 
     @Override