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/03/01 10:21:21 UTC

[camel-performance-tests] 06/06: Use pre-created endpoints to avoid the extra cost associated with resolving them

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-performance-tests.git

commit f3da9c9bc95ccf7c4b29e14b0e21e19c5c6e177b
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Wed Mar 1 10:13:01 2023 +0100

    Use pre-created endpoints to avoid the extra cost associated with resolving them
---
 .../itest/jmh/BlockingProducerToSedaTest.java      | 16 ++++++++-----
 .../camel/itest/jmh/DirectConcurrentTest.java      | 15 ++++++++-----
 .../apache/camel/itest/jmh/SedaRoundTripTest.java  | 26 +++++++++++++---------
 3 files changed, 36 insertions(+), 21 deletions(-)

diff --git a/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/BlockingProducerToSedaTest.java b/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/BlockingProducerToSedaTest.java
index 59b9a64..58586f3 100644
--- a/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/BlockingProducerToSedaTest.java
+++ b/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/BlockingProducerToSedaTest.java
@@ -4,6 +4,7 @@ import java.io.File;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
@@ -48,6 +49,8 @@ public class BlockingProducerToSedaTest {
 
         CamelContext context;
         ProducerTemplate producerTemplate;
+        Endpoint endpoint;
+
         File sampleFile = new File("some-file");
         Integer someInt = Integer.valueOf(1);
         Long someLong = Long.valueOf(2);
@@ -57,6 +60,7 @@ public class BlockingProducerToSedaTest {
             context = new DefaultCamelContext();
 
             producerTemplate = context.createProducerTemplate();
+            endpoint = context.getEndpoint("seda:test?blockWhenFull=true&offerTimeout=1000");
 
             context.addRoutes(new RouteBuilder() {
                 @Override
@@ -64,7 +68,7 @@ public class BlockingProducerToSedaTest {
                     onException(IllegalStateException.class)
                             .process(e -> System.out.println("The SEDA queue is likely full and the system may be unable to catch to the load. Fix the test parameters"));
 
-                    fromF("seda:test").to("log: ${body}");
+                    fromF("seda:test").to("log:?level=OFF");
 
                 }
             });
@@ -77,7 +81,7 @@ public class BlockingProducerToSedaTest {
     @BenchmarkMode({Mode.Throughput, Mode.AverageTime, Mode.SingleShotTime})
     @Benchmark
     public void sendBlocking(BlockingProducerToSedaTest.BenchmarkState state, Blackhole bh) {
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", "test");
+        state.producerTemplate.sendBody(state.endpoint, "test");
     }
 
 
@@ -85,10 +89,10 @@ public class BlockingProducerToSedaTest {
     @BenchmarkMode({Mode.Throughput, Mode.AverageTime, Mode.SingleShotTime})
     @Benchmark
     public void sendBlockingWithMultipleTypes(BlockingProducerToSedaTest.BenchmarkState state, Blackhole bh) {
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", "test");
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", state.someInt);
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", state.someLong);
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", state.sampleFile);
+        state.producerTemplate.sendBody(state.endpoint, "test");
+        state.producerTemplate.sendBody(state.endpoint, state.someInt);
+        state.producerTemplate.sendBody(state.endpoint, state.someLong);
+        state.producerTemplate.sendBody(state.endpoint, state.sampleFile);
     }
 
 
diff --git a/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/DirectConcurrentTest.java b/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/DirectConcurrentTest.java
index b5632bb..09d8b51 100644
--- a/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/DirectConcurrentTest.java
+++ b/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/DirectConcurrentTest.java
@@ -22,6 +22,7 @@ import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
@@ -72,6 +73,8 @@ public class DirectConcurrentTest {
     public static class BenchmarkState {
         CamelContext camel;
         ProducerTemplate producer;
+        Endpoint endpoint;
+
         String someString = "test1";
         File sampleFile = new File("some-file");
         Integer someInt = Integer.valueOf(1);
@@ -80,6 +83,8 @@ public class DirectConcurrentTest {
         @Setup(Level.Trial)
         public void initialize() {
             camel = new DefaultCamelContext();
+            endpoint = camel.getEndpoint("direct:start");
+
             try {
                 camel.addRoutes(new RouteBuilder() {
                     @Override
@@ -121,15 +126,15 @@ public class DirectConcurrentTest {
 
     @Benchmark
     public void directConcurrentTest(BenchmarkState state, Blackhole bh) {
-        state.producer.sendBody("direct:start", state.someString);
+        state.producer.sendBody(state.endpoint, state.someString);
     }
 
     @Benchmark
     public void directConcurrentTestWithMultipleTypes(BenchmarkState state, Blackhole bh) {
-        state.producer.sendBody("direct:start", state.someString);
-        state.producer.sendBody("direct:start", state.someInt);
-        state.producer.sendBody("direct:start", state.someLong);
-        state.producer.sendBody("direct:start", state.sampleFile);
+        state.producer.sendBody(state.endpoint, state.someString);
+        state.producer.sendBody(state.endpoint, state.someInt);
+        state.producer.sendBody(state.endpoint, state.someLong);
+        state.producer.sendBody(state.endpoint, state.sampleFile);
 
     }
 
diff --git a/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/SedaRoundTripTest.java b/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/SedaRoundTripTest.java
index 3503e6e..a6f6479 100644
--- a/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/SedaRoundTripTest.java
+++ b/tests/camel-jmh/src/test/java/org/apache/camel/itest/jmh/SedaRoundTripTest.java
@@ -5,6 +5,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.Endpoint;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.impl.DefaultCamelContext;
@@ -50,6 +51,8 @@ public class SedaRoundTripTest {
         CamelContext context;
         ProducerTemplate producerTemplate;
         ConsumerTemplate consumerTemplate;
+        Endpoint producerEndpoint;
+        Endpoint consumerEndpoint;
 
         String someString = "test1";
         File sampleFile = new File("some-file");
@@ -63,6 +66,9 @@ public class SedaRoundTripTest {
             producerTemplate = context.createProducerTemplate();
             consumerTemplate = context.createConsumerTemplate();
 
+            producerEndpoint = context.getEndpoint("seda:test?blockWhenFull=true&offerTimeout=1000");
+            consumerEndpoint = context.getEndpoint("seda:test");
+
             context.start();
         }
     }
@@ -71,8 +77,8 @@ public class SedaRoundTripTest {
     @BenchmarkMode({Mode.Throughput, Mode.AverageTime, Mode.SingleShotTime})
     @Benchmark
     public void sendBlocking(SedaRoundTripTest.BenchmarkState state, Blackhole bh) {
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", state.someString);
-        bh.consume(state.consumerTemplate.receive("seda:test"));
+        state.producerTemplate.sendBody(state.producerEndpoint, state.someString);
+        bh.consume(state.consumerTemplate.receive(state.consumerEndpoint));
     }
 
 
@@ -80,17 +86,17 @@ public class SedaRoundTripTest {
     @BenchmarkMode({Mode.Throughput, Mode.AverageTime, Mode.SingleShotTime})
     @Benchmark
     public void sendBlockingWithMultipleTypes(SedaRoundTripTest.BenchmarkState state, Blackhole bh) {
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", state.someString);
-        bh.consume(state.consumerTemplate.receive("seda:test"));
+        state.producerTemplate.sendBody(state.producerEndpoint, state.someString);
+        bh.consume(state.consumerTemplate.receive(state.consumerEndpoint));
 
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", state.someLong);
-        bh.consume(state.consumerTemplate.receive("seda:test"));
+        state.producerTemplate.sendBody(state.producerEndpoint, state.someLong);
+        bh.consume(state.consumerTemplate.receive(state.consumerEndpoint));
 
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", state.someInt);
-        bh.consume(state.consumerTemplate.receive("seda:test"));
+        state.producerTemplate.sendBody(state.producerEndpoint, state.someInt);
+        bh.consume(state.consumerTemplate.receive(state.consumerEndpoint));
 
-        state.producerTemplate.sendBody("seda:test?blockWhenFull=true&offerTimeout=1000", state.sampleFile);
-        bh.consume(state.consumerTemplate.receive("seda:test"));
+        state.producerTemplate.sendBody(state.producerEndpoint, state.sampleFile);
+        bh.consume(state.consumerTemplate.receive(state.consumerEndpoint));
     }