diff --git a/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/ConfigurationKeys.java b/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/ConfigurationKeys.java index 3ffa7a647a308d9a8fde210ff54f32b177604c36..efb7db61cc4c81ec2d1ffd49141d6d70a23dacaa 100644 --- a/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/ConfigurationKeys.java +++ b/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/ConfigurationKeys.java @@ -41,6 +41,8 @@ public final class ConfigurationKeys { public static final String HTTP_URL = "HTTP_URL"; + public static final String HTTP_ASYNC = "HTTP_ASYNC"; + public static final String PUBSUB_INPUT_TOPIC = "PUBSUB_INPUT_TOPIC"; public static final String PUBSUB_PROJECT = "PUBSUB_PROJECT"; diff --git a/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/EnvVarLoadGeneratorFactory.java b/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/EnvVarLoadGeneratorFactory.java index 445ccc6ed9f8a7e7ad8834aeb98b18206286e9d4..d3883dfe7d58048bdc1a3fa36032cde42b56121b 100644 --- a/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/EnvVarLoadGeneratorFactory.java +++ b/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/EnvVarLoadGeneratorFactory.java @@ -119,7 +119,10 @@ class EnvVarLoadGeneratorFactory { Objects.requireNonNullElse( System.getenv(ConfigurationKeys.HTTP_URL), LoadGenerator.HTTP_URI_DEFAULT)); - recordSender = new HttpRecordSender<>(url); + final boolean async = Boolean.parseBoolean(Objects.requireNonNullElse( + System.getenv(ConfigurationKeys.HTTP_ASYNC), + Boolean.toString(LoadGenerator.HTTP_ASYNC_DEFAULT))); + recordSender = new HttpRecordSender<>(url, async); LOGGER.info("Use HTTP server as target with url '{}'.", url); } else if (target == LoadGeneratorTarget.PUBSUB) { final String project = System.getenv(ConfigurationKeys.PUBSUB_PROJECT); diff --git a/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/HttpRecordSender.java b/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/HttpRecordSender.java index fbfbd526c95153153ca9354e7b7c8aa913fa566e..124f11a979f3afad5507db86c68e9eeb42c64eb6 100644 --- a/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/HttpRecordSender.java +++ b/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/HttpRecordSender.java @@ -44,7 +44,17 @@ public class HttpRecordSender<T extends SpecificRecord> implements RecordSender< * @param uri the {@link URI} records should be sent to */ public HttpRecordSender(final URI uri) { - this(uri, true, List.of(HTTP_OK)); + this(uri, false, List.of(HTTP_OK)); + } + + /** + * Create a new {@link HttpRecordSender}. + * + * @param uri the {@link URI} records should be sent to + * @param async whether HTTP requests should be sent asynchronous + */ + public HttpRecordSender(final URI uri, final boolean async) { + this(uri, async, List.of(HTTP_OK)); } /** diff --git a/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/LoadGenerator.java b/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/LoadGenerator.java index 6866b39e51570299d05795557b66997dc934c035..d7ddf36e88297e93bcecb1de8b8145097aa96ca7 100644 --- a/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/LoadGenerator.java +++ b/theodolite-benchmarks/load-generator-commons/src/main/java/rocks/theodolite/benchmarks/loadgenerator/LoadGenerator.java @@ -17,6 +17,7 @@ public final class LoadGenerator { public static final LoadGeneratorTarget TARGET_DEFAULT = LoadGeneratorTarget.KAFKA; // Target: HTTP public static final String HTTP_URI_DEFAULT = "http://localhost:8080"; + public static final boolean HTTP_ASYNC_DEFAULT = false; // Target: Kafka public static final String SCHEMA_REGISTRY_URL_DEFAULT = "http://localhost:8081"; public static final String KAFKA_TOPIC_DEFAULT = "input"; // NOCS