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

gnodet 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 1645929104c3 CAMEL-23926: Fix flaky Elasticsearch ITs by using unique 
index names
1645929104c3 is described below

commit 1645929104c3a8874286ea9c30f06c098cedf23b
Author: Guillaume Nodet <[email protected]>
AuthorDate: Tue Jul 7 10:11:01 2026 +0200

    CAMEL-23926: Fix flaky Elasticsearch ITs by using unique index names
    
    All Elasticsearch IT classes shared a hardcoded 'twitter' index name.
    ElasticsearchIndexIT deletes this index during its tests, causing
    interference when tests run in parallel or in certain orders, resulting
    in a 48% flaky rate for ElasticsearchBulkIT.
    
    Each test class now uses its own unique index name to eliminate
    cross-class interference.
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
---
 .../es/integration/ElasticsearchBulkIT.java        | 12 ++++----
 .../integration/ElasticsearchClusterIndexIT.java   |  8 ++---
 ...ElasticsearchGetSearchDeleteExistsUpdateIT.java | 36 +++++++++++-----------
 .../es/integration/ElasticsearchIndexIT.java       | 14 ++++-----
 4 files changed, 35 insertions(+), 35 deletions(-)

diff --git 
a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchBulkIT.java
 
b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchBulkIT.java
index ffb2b9116416..f13068251266 100644
--- 
a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchBulkIT.java
+++ 
b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchBulkIT.java
@@ -180,7 +180,7 @@ class ElasticsearchBulkIT extends ElasticsearchTestSupport {
         String indexId = template.requestBody("direct:index", map, 
String.class);
         assertNotNull(indexId, "indexId should be set");
 
-        DeleteOperation.Builder builder = new 
DeleteOperation.Builder().index("twitter").id(indexId);
+        DeleteOperation.Builder builder = new 
DeleteOperation.Builder().index("bulk").id(indexId);
         // when
         @SuppressWarnings("unchecked")
         List<BulkResponseItem> response = template.requestBody("direct:bulk", 
List.of(builder), List.class);
@@ -199,7 +199,7 @@ class ElasticsearchBulkIT extends ElasticsearchTestSupport {
         String prefix = createPrefix();
 
         CreateOperation.Builder<?> builder
-                = new 
CreateOperation.Builder<>().index("twitter").document(Map.of(prefix + 
"content", prefix + "hello"));
+                = new 
CreateOperation.Builder<>().index("bulk").document(Map.of(prefix + "content", 
prefix + "hello"));
         // when
         @SuppressWarnings("unchecked")
         List<BulkResponseItem> response = template.requestBody("direct:bulk", 
List.of(builder), List.class);
@@ -218,7 +218,7 @@ class ElasticsearchBulkIT extends ElasticsearchTestSupport {
         assertNotNull(indexId, "indexId should be set");
 
         UpdateOperation.Builder<?, ?> builder = new UpdateOperation.Builder<>()
-                .index("twitter").id(indexId)
+                .index("bulk").id(indexId)
                 .action(
                         new UpdateAction.Builder<>()
                                 .doc(JsonData.from(
@@ -245,11 +245,11 @@ class ElasticsearchBulkIT extends 
ElasticsearchTestSupport {
             @Override
             public void configure() {
                 from("direct:index")
-                        
.to("elasticsearch://elasticsearch?operation=Index&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=Index&indexName=bulk");
                 from("direct:get")
-                        
.to("elasticsearch://elasticsearch?operation=GetById&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=GetById&indexName=bulk");
                 from("direct:bulk")
-                        
.to("elasticsearch://elasticsearch?operation=Bulk&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=Bulk&indexName=bulk");
             }
         };
     }
diff --git 
a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchClusterIndexIT.java
 
b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchClusterIndexIT.java
index 58f6d4fb4f27..e8fdf8de12cf 100644
--- 
a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchClusterIndexIT.java
+++ 
b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchClusterIndexIT.java
@@ -38,7 +38,7 @@ class ElasticsearchClusterIndexIT extends 
ElasticsearchTestSupport {
         Map<String, String> map = createIndexedData();
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Index);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "cluster");
         headers.put(ElasticsearchConstants.PARAM_INDEX_ID, "1");
 
         String indexId = 
template.requestBodyAndHeaders("direct:indexWithIpAndPort", map, headers, 
String.class);
@@ -47,7 +47,7 @@ class ElasticsearchClusterIndexIT extends 
ElasticsearchTestSupport {
         indexId = template.requestBodyAndHeaders("direct:indexWithIpAndPort", 
map, headers, String.class);
         assertNotNull(indexId, "indexId should be set");
 
-        assertTrue(client.get(new 
GetRequest.Builder().index("twitter").id("1").build(), 
ObjectNode.class).found(),
+        assertTrue(client.get(new 
GetRequest.Builder().index("cluster").id("1").build(), 
ObjectNode.class).found(),
                 "Index id 1 must exists");
     }
 
@@ -77,9 +77,9 @@ class ElasticsearchClusterIndexIT extends 
ElasticsearchTestSupport {
             @Override
             public void configure() {
                 from("direct:indexWithIpAndPort")
-                        .to("elasticsearch://" + clusterName + 
"?operation=Index&indexName=twitter");
+                        .to("elasticsearch://" + clusterName + 
"?operation=Index&indexName=cluster");
                 from("direct:indexWithSniffer")
-                        .to("elasticsearch://" + clusterName + 
"?operation=Index&indexName=twitter&enableSniffer=true");
+                        .to("elasticsearch://" + clusterName + 
"?operation=Index&indexName=cluster&enableSniffer=true");
             }
         };
     }
diff --git 
a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchGetSearchDeleteExistsUpdateIT.java
 
b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchGetSearchDeleteExistsUpdateIT.java
index b2ef48006247..c2cbbadfbe75 100644
--- 
a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchGetSearchDeleteExistsUpdateIT.java
+++ 
b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchGetSearchDeleteExistsUpdateIT.java
@@ -276,7 +276,7 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         Map<String, String> map2 = Map.of("testSearchWithMapQuery2", "bar");
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Bulk);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
         template.requestBodyAndHeaders("direct:start", List.of(map1, map2), 
headers, String.class);
 
         // No match
@@ -315,7 +315,7 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         Map<String, String> map2 = Map.of("testSearchWithStringQuery2", "bar");
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Bulk);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
         template.requestBodyAndHeaders("direct:start", List.of(map1, map2), 
headers, String.class);
 
         // No match
@@ -358,7 +358,7 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         Map<String, String> map2 = Map.of("testSearchWithBuilder2", "bar");
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Bulk);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
         template.requestBodyAndHeaders("direct:start", List.of(map1, map2), 
headers,
                 String.class);
 
@@ -409,7 +409,7 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         product2.setName("Guinness book of records 2010");
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Bulk);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
         template.requestBodyAndHeaders("direct:start", List.of(product1, 
product2), headers, String.class);
 
         // No match
@@ -450,7 +450,7 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         // the result may see stale data so use Awaitility
         Awaitility.await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
             //now, verify GET succeeded
-            MsearchRequest.Builder builder = new 
MsearchRequest.Builder().index("twitter").searches(
+            MsearchRequest.Builder builder = new 
MsearchRequest.Builder().index("get-search").searches(
                     new RequestItem.Builder().header(new 
MultisearchHeader.Builder().build())
                             .body(new SearchRequestBody.Builder().query(b -> 
b.matchAll(x -> x)).build()).build(),
                     new RequestItem.Builder().header(new 
MultisearchHeader.Builder().build())
@@ -562,7 +562,7 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         Map<String, String> map = createIndexedData();
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Index);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
 
         String indexId = template.requestBodyAndHeaders("direct:start", map, 
headers, String.class);
 
@@ -579,13 +579,13 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         Map<String, String> map = createIndexedData();
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Index);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
 
         template.requestBodyAndHeaders("direct:start", map, headers, 
String.class);
 
         //now, verify GET
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Exists);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
         Boolean exists = template.requestBodyAndHeaders("direct:exists", "", 
headers, Boolean.class);
         assertNotNull(exists, "response should not be null");
         assertTrue(exists, "Index should exists");
@@ -607,7 +607,7 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         Map<String, String> map = createIndexedData();
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Index);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
 
         String indexId = template.requestBodyAndHeaders("direct:start", map, 
headers, String.class);
 
@@ -635,7 +635,7 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         Map<String, String> map = createIndexedData();
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Index);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
         headers.put(ElasticsearchConstants.PARAM_INDEX_ID, "123");
 
         String indexId = template.requestBodyAndHeaders("direct:start", map, 
headers, String.class);
@@ -654,7 +654,7 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
         Map<String, String> map = createIndexedData();
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Index);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "get-search");
         headers.put(ElasticsearchConstants.PARAM_INDEX_ID, "123");
 
         String indexId = template.requestBodyAndHeaders("direct:start", map, 
headers, String.class);
@@ -937,24 +937,24 @@ class ElasticsearchGetSearchDeleteExistsUpdateIT extends 
ElasticsearchTestSuppor
                 from("direct:start")
                         .to("elasticsearch://elasticsearch?operation=Index");
                 from("direct:index")
-                        
.to("elasticsearch://elasticsearch?operation=Index&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=Index&indexName=get-search");
                 from("direct:index-product")
-                        
.toF("elasticsearch://elasticsearch?operation=Index&indexName=twitter&documentClass=%s",
+                        
.toF("elasticsearch://elasticsearch?operation=Index&indexName=get-search&documentClass=%s",
                                 Product.class.getName());
                 from("direct:get")
-                        
.to("elasticsearch://elasticsearch?operation=GetById&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=GetById&indexName=get-search");
                 from("direct:multiget")
-                        
.to("elasticsearch://elasticsearch?operation=MultiGet&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=MultiGet&indexName=get-search");
                 from("direct:delete")
-                        
.to("elasticsearch://elasticsearch?operation=Delete&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=Delete&indexName=get-search");
                 from("direct:search")
-                        
.to("elasticsearch://elasticsearch?operation=Search&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=Search&indexName=get-search");
                 from("direct:search-1")
                         .to("elasticsearch://elasticsearch?operation=Search");
                 from("direct:multiSearch")
                         
.to("elasticsearch://elasticsearch?operation=MultiSearch");
                 from("direct:update")
-                        
.to("elasticsearch://elasticsearch?operation=Update&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=Update&indexName=get-search");
                 from("direct:exists")
                         .to("elasticsearch://elasticsearch?operation=Exists");
             }
diff --git 
a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchIndexIT.java
 
b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchIndexIT.java
index f21e22a1f064..58d9b800fb9a 100644
--- 
a/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchIndexIT.java
+++ 
b/components/camel-elasticsearch/src/test/java/org/apache/camel/component/es/integration/ElasticsearchIndexIT.java
@@ -48,7 +48,7 @@ class ElasticsearchIndexIT extends ElasticsearchTestSupport {
         boolean exists = template.requestBody("direct:exists", null, 
Boolean.class);
         assertTrue(exists, "index should be present");
 
-        DeleteIndexRequest.Builder builder = new 
DeleteIndexRequest.Builder().index("twitter");
+        DeleteIndexRequest.Builder builder = new 
DeleteIndexRequest.Builder().index("idx");
         Boolean status = template.requestBody("direct:deleteIndex", builder, 
Boolean.class);
         assertEquals(true, status, "status should be 200");
 
@@ -65,7 +65,7 @@ class ElasticsearchIndexIT extends ElasticsearchTestSupport {
         boolean exists = template.requestBody("direct:exists", null, 
Boolean.class);
         assertTrue(exists, "index should be present");
 
-        Boolean status = template.requestBody("direct:deleteIndex", "twitter", 
Boolean.class);
+        Boolean status = template.requestBody("direct:deleteIndex", "idx", 
Boolean.class);
         assertEquals(true, status, "status should be 200");
 
         exists = template.requestBody("direct:exists", null, Boolean.class);
@@ -77,7 +77,7 @@ class ElasticsearchIndexIT extends ElasticsearchTestSupport {
         Map<String, String> map = createIndexedData();
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Index);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "idx");
 
         String indexId = template.requestBodyAndHeaders("direct:start", map, 
headers, String.class);
         assertNotNull(indexId, "indexId should be set");
@@ -88,7 +88,7 @@ class ElasticsearchIndexIT extends ElasticsearchTestSupport {
         Map<String, String> map = createIndexedData();
         Map<String, Object> headers = new HashMap<>();
         headers.put(ElasticsearchConstants.PARAM_OPERATION, 
ElasticsearchOperation.Index);
-        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "twitter");
+        headers.put(ElasticsearchConstants.PARAM_INDEX_NAME, "idx");
         headers.put(ElasticsearchConstants.PARAM_INDEX_ID, "123");
 
         String indexId = template.requestBodyAndHeaders("direct:start", map, 
headers, String.class);
@@ -118,11 +118,11 @@ class ElasticsearchIndexIT extends 
ElasticsearchTestSupport {
                 from("direct:start")
                         .to("elasticsearch://elasticsearch");
                 from("direct:index")
-                        
.to("elasticsearch://elasticsearch?operation=Index&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=Index&indexName=idx");
                 from("direct:exists")
-                        
.to("elasticsearch://elasticsearch?operation=Exists&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=Exists&indexName=idx");
                 from("direct:deleteIndex")
-                        
.to("elasticsearch://elasticsearch?operation=DeleteIndex&indexName=twitter");
+                        
.to("elasticsearch://elasticsearch?operation=DeleteIndex&indexName=idx");
             }
         };
     }

Reply via email to