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

davsclaus 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 aec8b3f2980 Flaky (#11069)
aec8b3f2980 is described below

commit aec8b3f29809354ba0ade2c6a3b74583c8c5eb2a
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Aug 10 17:42:22 2023 +0200

    Flaky (#11069)
    
    * CAMEL-19684: A little potential fix but lets enable it for CI to keep an 
eye again
    
    * CAMEL-19684: Attempt to fix some flaky test
    
    * CAMEL-19684: Attempt to fix some flaky test
---
 .../camel/impl/engine/PooledExchangeFactory.java   | 12 -------
 .../component/file/FileRecursiveNoopTest.java      | 11 +++---
 .../management/ManagedPooledExchangeTest.java      | 41 ++++++++++++----------
 3 files changed, 29 insertions(+), 35 deletions(-)

diff --git 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java
 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java
index 7573dacd18a..7468e4f9c58 100644
--- 
a/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java
+++ 
b/core/camel-base-engine/src/main/java/org/apache/camel/impl/engine/PooledExchangeFactory.java
@@ -41,18 +41,6 @@ public final class PooledExchangeFactory extends 
PrototypeExchangeFactory {
         super(consumer);
     }
 
-    @Override
-    protected void doBuild() throws Exception {
-        super.doBuild();
-        // force creating and load the class during build time so the JVM does 
not
-        // load the class on first exchange to be created
-        DefaultPooledExchange dummy = new DefaultPooledExchange(camelContext);
-        // force message init to load classes
-        dummy.getIn();
-        dummy.getIn().getHeaders();
-        LOG.trace("Warming up PooledExchangeFactory loaded class: {}", 
dummy.getClass().getName());
-    }
-
     @Override
     public ExchangeFactory newExchangeFactory(Consumer consumer) {
         PooledExchangeFactory answer = new PooledExchangeFactory(consumer);
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/component/file/FileRecursiveNoopTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/component/file/FileRecursiveNoopTest.java
index e93f05c7b2d..8e5a109ac12 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/component/file/FileRecursiveNoopTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/component/file/FileRecursiveNoopTest.java
@@ -24,12 +24,13 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 public class FileRecursiveNoopTest extends ContextTestSupport {
-    private final String fileUri = fileUri();
 
     @BeforeEach
     void sendMessages() {
-        template.sendBodyAndHeader(fileUri, "a", Exchange.FILE_NAME, "a.txt");
-        template.sendBodyAndHeader(fileUri, "b", Exchange.FILE_NAME, "b.txt");
+        testDirectory(true);
+
+        template.sendBodyAndHeader(fileUri(), "a", Exchange.FILE_NAME, 
"a.txt");
+        template.sendBodyAndHeader(fileUri(), "b", Exchange.FILE_NAME, 
"b.txt");
         template.sendBodyAndHeader(fileUri("foo"), "a2", Exchange.FILE_NAME, 
"a.txt");
         template.sendBodyAndHeader(fileUri("bar"), "c", Exchange.FILE_NAME, 
"c.txt");
         template.sendBodyAndHeader(fileUri("bar"), "b2", Exchange.FILE_NAME, 
"b.txt");
@@ -37,6 +38,8 @@ public class FileRecursiveNoopTest extends ContextTestSupport 
{
 
     @Test
     public void testRecursiveNoop() throws Exception {
+        context.getRouteController().startAllRoutes();
+
         MockEndpoint mock = getMockEndpoint("mock:result");
         mock.expectedBodiesReceivedInAnyOrder("a", "b", "a2", "c", "b2");
 
@@ -56,7 +59,7 @@ public class FileRecursiveNoopTest extends ContextTestSupport 
{
         return new RouteBuilder() {
             @Override
             public void configure() throws Exception {
-                
from(fileUri("?initialDelay=0&delay=10&recursive=true&noop=true")).convertBodyTo(String.class)
+                
from(fileUri("?initialDelay=0&delay=10&recursive=true&noop=true")).convertBodyTo(String.class).noAutoStartup()
                         .to("mock:result");
             }
         };
diff --git 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedPooledExchangeTest.java
 
b/core/camel-management/src/test/java/org/apache/camel/management/ManagedPooledExchangeTest.java
index 89453a793b8..ee47b4b5737 100644
--- 
a/core/camel-management/src/test/java/org/apache/camel/management/ManagedPooledExchangeTest.java
+++ 
b/core/camel-management/src/test/java/org/apache/camel/management/ManagedPooledExchangeTest.java
@@ -29,8 +29,8 @@ import org.apache.camel.ServiceStatus;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.impl.engine.PooledExchangeFactory;
+import org.awaitility.Awaitility;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.condition.DisabledIfSystemProperty;
 import org.junit.jupiter.api.condition.DisabledOnOs;
 import org.junit.jupiter.api.condition.OS;
 
@@ -39,7 +39,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertSame;
 
 @DisabledOnOs(OS.AIX)
-@DisabledIfSystemProperty(named = "ci.env.name", matches = "github.com", 
disabledReason = "Flaky on Github CI")
 public class ManagedPooledExchangeTest extends ManagementTestSupport {
 
     private final AtomicInteger counter = new AtomicInteger();
@@ -87,21 +86,23 @@ public class ManagedPooledExchangeTest extends 
ManagementTestSupport {
         Integer cap = (Integer) mbeanServer.getAttribute(on, "Capacity");
         assertEquals(123, cap.intValue());
 
-        // also only 1 exchange pooled
-        con = (Integer) mbeanServer.getAttribute(on, "TotalPooled");
-        assertEquals(1, con.intValue());
+        Awaitility.await().untilAsserted(() -> {
+            Long num = (Long) mbeanServer.getAttribute(on, "TotalCreated");
+            assertEquals(1, num.intValue());
+
+            num = (Long) mbeanServer.getAttribute(on, "TotalAcquired");
+            assertEquals(2, num.intValue());
 
-        Long num = (Long) mbeanServer.getAttribute(on, "TotalCreated");
-        assertEquals(1, num.intValue());
+            num = (Long) mbeanServer.getAttribute(on, "TotalReleased");
+            assertEquals(3, num.intValue());
 
-        num = (Long) mbeanServer.getAttribute(on, "TotalAcquired");
-        assertEquals(2, num.intValue());
+            num = (Long) mbeanServer.getAttribute(on, "TotalDiscarded");
+            assertEquals(0, num.intValue());
 
-        num = (Long) mbeanServer.getAttribute(on, "TotalReleased");
-        assertEquals(3, num.intValue());
+            Integer num2 = (Integer) mbeanServer.getAttribute(on, 
"TotalPooled");
+            assertEquals(1, num2.intValue());
+        });
 
-        num = (Long) mbeanServer.getAttribute(on, "TotalDiscarded");
-        assertEquals(0, num.intValue());
     }
 
     @Override
@@ -116,12 +117,14 @@ public class ManagedPooledExchangeTest extends 
ManagementTestSupport {
                             @Override
                             public void process(Exchange exchange) throws 
Exception {
                                 // should be same exchange instance as its 
pooled
-                                Exchange old = ref.get();
-                                if (old == null) {
-                                    ref.set(exchange);
-                                    exchange.getMessage().setHeader("first", 
true);
-                                } else {
-                                    assertSame(old, exchange);
+                                synchronized (this) {
+                                    Exchange old = ref.get();
+                                    if (old == null) {
+                                        ref.set(exchange);
+                                        
exchange.getMessage().setHeader("first", true);
+                                    } else {
+                                        assertSame(old, exchange);
+                                    }
                                 }
                             }
                         })

Reply via email to