From 8c49b983b256ea5db875a0eace4455ab1c9a08bf Mon Sep 17 00:00:00 2001 From: Simon Ehrenstein <simon.ehrenstein@gmail.com> Date: Sun, 14 Jun 2020 17:51:02 +0200 Subject: [PATCH] Replace custom Period by java.time.Duration --- .../uc1/workloadgenerator/LoadGenerator.java | 4 +-- .../uc2/workloadgenerator/LoadGenerator.java | 4 +-- .../uc3/workloadgenerator/LoadGenerator.java | 4 +-- .../uc4/workloadgenerator/LoadGenerator.java | 4 +-- .../workloadgeneration/dimensions/Period.java | 34 ------------------- .../generators/AbstractWorkloadGenerator.java | 9 +++-- .../generators/KafkaWorkloadGenerator.java | 3 +- .../KafkaWorkloadGeneratorBuilder.java | 5 ++- 8 files changed, 11 insertions(+), 56 deletions(-) delete mode 100644 workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/dimensions/Period.java diff --git a/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java b/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java index d9bbbe47d..e352d8d59 100644 --- a/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java +++ b/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java @@ -5,13 +5,11 @@ import java.time.Duration; import java.time.temporal.ChronoUnit; import java.util.Objects; import java.util.Properties; -import java.util.concurrent.TimeUnit; import org.apache.kafka.clients.producer.ProducerConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import theodolite.commons.workloadgeneration.communication.kafka.KafkaRecordSender; import theodolite.commons.workloadgeneration.dimensions.KeySpace; -import theodolite.commons.workloadgeneration.dimensions.Period; import theodolite.commons.workloadgeneration.generators.KafkaWorkloadGenerator; import theodolite.commons.workloadgeneration.generators.KafkaWorkloadGeneratorBuilder; import theodolite.commons.workloadgeneration.misc.ZooKeeper; @@ -69,7 +67,7 @@ public final class LoadGenerator { KafkaWorkloadGeneratorBuilder.<ActivePowerRecord>builder() .setKeySpace(new KeySpace("s_", numSensors)) .setThreads(threads) - .setPeriod(new Period(periodMs, TimeUnit.MILLISECONDS)) + .setPeriod(Duration.of(periodMs, ChronoUnit.MILLIS)) .setDuration(Duration.of(MAX_DURATION_IN_DAYS, ChronoUnit.DAYS)) .setGeneratorFunction( sensor -> new ActivePowerRecord(sensor, System.currentTimeMillis(), value)) diff --git a/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java b/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java index 60f20518f..cdcc01f21 100644 --- a/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java +++ b/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java @@ -5,13 +5,11 @@ import java.time.Duration; import java.time.temporal.ChronoUnit; import java.util.Objects; import java.util.Properties; -import java.util.concurrent.TimeUnit; import org.apache.kafka.clients.producer.ProducerConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import theodolite.commons.workloadgeneration.communication.kafka.KafkaRecordSender; import theodolite.commons.workloadgeneration.dimensions.KeySpace; -import theodolite.commons.workloadgeneration.dimensions.Period; import theodolite.commons.workloadgeneration.generators.KafkaWorkloadGenerator; import theodolite.commons.workloadgeneration.generators.KafkaWorkloadGeneratorBuilder; import theodolite.commons.workloadgeneration.misc.ZooKeeper; @@ -73,7 +71,7 @@ public class LoadGenerator { KafkaWorkloadGeneratorBuilder.<ActivePowerRecord>builder() .setKeySpace(new KeySpace("s_", numSensors)) .setThreads(threads) - .setPeriod(new Period(periodMs, TimeUnit.MILLISECONDS)) + .setPeriod(Duration.of(periodMs, ChronoUnit.MILLIS)) .setDuration(Duration.of(MAX_DURATION_IN_DAYS, ChronoUnit.DAYS)) .setBeforeAction(() -> { if (sendRegistry) { diff --git a/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java b/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java index 6e8e2d897..3a64e55db 100644 --- a/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java +++ b/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java @@ -5,13 +5,11 @@ import java.time.Duration; import java.time.temporal.ChronoUnit; import java.util.Objects; import java.util.Properties; -import java.util.concurrent.TimeUnit; import org.apache.kafka.clients.producer.ProducerConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import theodolite.commons.workloadgeneration.communication.kafka.KafkaRecordSender; import theodolite.commons.workloadgeneration.dimensions.KeySpace; -import theodolite.commons.workloadgeneration.dimensions.Period; import theodolite.commons.workloadgeneration.generators.KafkaWorkloadGenerator; import theodolite.commons.workloadgeneration.generators.KafkaWorkloadGeneratorBuilder; import theodolite.commons.workloadgeneration.misc.ZooKeeper; @@ -61,7 +59,7 @@ public class LoadGenerator { KafkaWorkloadGeneratorBuilder.<ActivePowerRecord>builder() .setKeySpace(new KeySpace("s_", numSensors)) .setThreads(threads) - .setPeriod(new Period(periodMs, TimeUnit.MILLISECONDS)) + .setPeriod(Duration.of(periodMs, ChronoUnit.MILLIS)) .setDuration(Duration.of(MAX_DURATION_IN_DAYS, ChronoUnit.DAYS)) .setGeneratorFunction( sensor -> new ActivePowerRecord(sensor, System.currentTimeMillis(), value)) diff --git a/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java b/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java index 89a3db55a..3ad36e21a 100644 --- a/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java +++ b/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java @@ -5,13 +5,11 @@ import java.time.Duration; import java.time.temporal.ChronoUnit; import java.util.Objects; import java.util.Properties; -import java.util.concurrent.TimeUnit; import org.apache.kafka.clients.producer.ProducerConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import theodolite.commons.workloadgeneration.communication.kafka.KafkaRecordSender; import theodolite.commons.workloadgeneration.dimensions.KeySpace; -import theodolite.commons.workloadgeneration.dimensions.Period; import theodolite.commons.workloadgeneration.generators.KafkaWorkloadGenerator; import theodolite.commons.workloadgeneration.generators.KafkaWorkloadGeneratorBuilder; import theodolite.commons.workloadgeneration.misc.ZooKeeper; @@ -61,7 +59,7 @@ public class LoadGenerator { KafkaWorkloadGeneratorBuilder.<ActivePowerRecord>builder() .setKeySpace(new KeySpace("s_", numSensors)) .setThreads(threads) - .setPeriod(new Period(periodMs, TimeUnit.MILLISECONDS)) + .setPeriod(Duration.of(periodMs, ChronoUnit.MILLIS)) .setDuration(Duration.of(MAX_DURATION_IN_DAYS, ChronoUnit.DAYS)) .setGeneratorFunction( sensor -> new ActivePowerRecord(sensor, System.currentTimeMillis(), value)) diff --git a/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/dimensions/Period.java b/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/dimensions/Period.java deleted file mode 100644 index 62d3a216c..000000000 --- a/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/dimensions/Period.java +++ /dev/null @@ -1,34 +0,0 @@ -package theodolite.commons.workloadgeneration.dimensions; - -import java.util.concurrent.TimeUnit; -import theodolite.commons.workloadgeneration.generators.AbstractWorkloadGenerator; - -/** - * Wrapper class for the definition of period to use for the {@link AbstractWorkloadGenerator}. - */ -public class Period { - - private final int period; - private final TimeUnit timeUnit; - - /** - * Define a new period. - * - * @param period the period - * @param timeUnit the time unit that applies to the specified {@code period} - */ - public Period(final int period, final TimeUnit timeUnit) { - super(); - this.period = period; - this.timeUnit = timeUnit; - } - - public int getPeriod() { - return this.period; - } - - public TimeUnit getTimeUnit() { - return this.timeUnit; - } - -} diff --git a/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/AbstractWorkloadGenerator.java b/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/AbstractWorkloadGenerator.java index a53717dc2..244fdc555 100644 --- a/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/AbstractWorkloadGenerator.java +++ b/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/AbstractWorkloadGenerator.java @@ -14,7 +14,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import theodolite.commons.workloadgeneration.communication.zookeeper.WorkloadDistributor; import theodolite.commons.workloadgeneration.dimensions.KeySpace; -import theodolite.commons.workloadgeneration.dimensions.Period; import theodolite.commons.workloadgeneration.functions.BeforeAction; import theodolite.commons.workloadgeneration.functions.MessageGenerator; import theodolite.commons.workloadgeneration.functions.Transport; @@ -34,7 +33,7 @@ public abstract class AbstractWorkloadGenerator<T extends IMonitoringRecord> private final int threads; - private final Period period; + private final Duration period; private final Duration duration; @@ -68,7 +67,7 @@ public abstract class AbstractWorkloadGenerator<T extends IMonitoringRecord> final ZooKeeper zooKeeper, final KeySpace keySpace, final int threads, - final Period period, + final Duration period, final Duration duration, final BeforeAction beforeAction, final MessageGenerator<T> generatorFunction, @@ -97,7 +96,7 @@ public abstract class AbstractWorkloadGenerator<T extends IMonitoringRecord> this.executor = Executors.newScheduledThreadPool(threads); final Random random = new Random(); - final int periodMs = period.getPeriod(); + final int periodMs = period.getNano() / 1_000_000; final BiConsumer<WorkloadDefinition, Worker> workerAction = (declaration, worker) -> { @@ -110,7 +109,7 @@ public abstract class AbstractWorkloadGenerator<T extends IMonitoringRecord> final T message = entity.generateMessage(); final long initialDelay = random.nextInt(periodMs); this.executor.scheduleAtFixedRate(() -> this.transport.transport(message), initialDelay, - periodMs, period.getTimeUnit()); + periodMs, TimeUnit.MILLISECONDS); }); diff --git a/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/KafkaWorkloadGenerator.java b/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/KafkaWorkloadGenerator.java index 3e1675574..010ce837a 100644 --- a/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/KafkaWorkloadGenerator.java +++ b/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/KafkaWorkloadGenerator.java @@ -4,7 +4,6 @@ import java.time.Duration; import kieker.common.record.IMonitoringRecord; import theodolite.commons.workloadgeneration.communication.kafka.KafkaRecordSender; import theodolite.commons.workloadgeneration.dimensions.KeySpace; -import theodolite.commons.workloadgeneration.dimensions.Period; import theodolite.commons.workloadgeneration.functions.BeforeAction; import theodolite.commons.workloadgeneration.functions.MessageGenerator; import theodolite.commons.workloadgeneration.misc.ZooKeeper; @@ -36,7 +35,7 @@ public class KafkaWorkloadGenerator<T extends IMonitoringRecord> final ZooKeeper zooKeeper, final KeySpace keySpace, final int threads, - final Period period, + final Duration period, final Duration duration, final BeforeAction beforeAction, final MessageGenerator<T> generatorFunction, diff --git a/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/KafkaWorkloadGeneratorBuilder.java b/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/KafkaWorkloadGeneratorBuilder.java index 1cd71b5bb..1609808a3 100644 --- a/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/KafkaWorkloadGeneratorBuilder.java +++ b/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/generators/KafkaWorkloadGeneratorBuilder.java @@ -5,7 +5,6 @@ import java.util.Objects; import kieker.common.record.IMonitoringRecord; import theodolite.commons.workloadgeneration.communication.kafka.KafkaRecordSender; import theodolite.commons.workloadgeneration.dimensions.KeySpace; -import theodolite.commons.workloadgeneration.dimensions.Period; import theodolite.commons.workloadgeneration.functions.BeforeAction; import theodolite.commons.workloadgeneration.functions.MessageGenerator; import theodolite.commons.workloadgeneration.misc.ZooKeeper; @@ -18,7 +17,7 @@ public class KafkaWorkloadGeneratorBuilder<T extends IMonitoringRecord> { private int threads; - private Period period; + private Duration period; private Duration duration; @@ -91,7 +90,7 @@ public class KafkaWorkloadGeneratorBuilder<T extends IMonitoringRecord> { * @param period the {@link Period} * @return the builder. */ - public KafkaWorkloadGeneratorBuilder<T> setPeriod(final Period period) { + public KafkaWorkloadGeneratorBuilder<T> setPeriod(final Duration period) { this.period = period; return this; } -- GitLab