diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/TheodoliteBenchmarkExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/TheodoliteBenchmarkExecutor.kt index a56eeee1a89ae681d5e526bffd242a51a4a93fcf..cb4f0312cfcd49a2d1e14f213d55ef8617899ce1 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/TheodoliteBenchmarkExecutor.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/TheodoliteBenchmarkExecutor.kt @@ -2,58 +2,34 @@ package theodolite.benchmark import theodolite.execution.BenchmarkExecutor import theodolite.execution.BenchmarkExecutorImpl -import theodolite.strategies.restriction.LowerBoundRestriction -import theodolite.strategies.restriction.RestrictionStrategy -import theodolite.strategies.searchstrategy.BinarySearch +import theodolite.strategies.StrategiesManager import theodolite.strategies.searchstrategy.CompositeStrategy -import theodolite.strategies.searchstrategy.LinearSearch -import theodolite.strategies.searchstrategy.SearchStrategy import theodolite.util.Config import theodolite.util.LoadDimension import theodolite.util.Resource import theodolite.util.Results -import java.lang.IllegalArgumentException import java.time.Duration class TheodoliteBenchmarkExecutor( private val benchmarkContext: BenchmarkContext, private val kubernetesBenchmark: KubernetesBenchmark) { - private fun createSearchStrategy(executor: BenchmarkExecutor): SearchStrategy { - return when (this.benchmarkContext.execution.strategy) { - "LinearSearch" -> LinearSearch(executor) - "BinarySearch" -> BinarySearch(executor) - else -> throw IllegalArgumentException("Search Strategy ${this.benchmarkContext.execution.strategy} not found") - } - } - - private fun createRestrictionStrategy(results: Results): Set<RestrictionStrategy> { - var strategies = emptyList<RestrictionStrategy>() - strategies = this.benchmarkContext.execution.restrictions.map { restriction -> - when (restriction) { - "LowerBound" -> LowerBoundRestriction(results) - else -> throw IllegalArgumentException("Restriction Strategy ${this.benchmarkContext.execution.restrictions} not found") - } - } - return strategies.toSet() - } private fun buildConfig(): Config{ - val results = Results() - val executionDuration = Duration.ofSeconds(this.benchmarkContext.execution.duration) - val executor: BenchmarkExecutor = BenchmarkExecutorImpl(kubernetesBenchmark, results, executionDuration, this.benchmarkContext.configOverrides) + val results = Results() + val strategyManager = StrategiesManager() + + val executionDuration = Duration.ofSeconds(this.benchmarkContext.execution.duration) + val executor = BenchmarkExecutorImpl(kubernetesBenchmark, results, executionDuration, this.benchmarkContext.configOverrides) return Config( loads = benchmarkContext.loads.map { number -> LoadDimension(number) }, resources = benchmarkContext.resources.map { number -> Resource(number) }, compositeStrategy = CompositeStrategy( benchmarkExecutor = executor, - searchStrategy = createSearchStrategy(executor), - restrictionStrategies = createRestrictionStrategy(results) - ), - executionDuration = executionDuration - ) - + searchStrategy = strategyManager.createSearchStrategy(executor, this.benchmarkContext.execution.strategy), + restrictionStrategies = strategyManager.createRestrictionStrategy(results, this.benchmarkContext.execution.restrictions)), + executionDuration = executionDuration) } diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt b/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt index 9b5ac759cb2a670b38a16ead740b953b153caee5..776572d00f4f1b311e29eca974ac27fba6e09a04 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt @@ -5,6 +5,7 @@ import org.apache.kafka.clients.admin.AdminClient import org.apache.kafka.clients.admin.AdminClientConfig import org.apache.kafka.clients.admin.ListTopicsResult import org.apache.kafka.clients.admin.NewTopic +import java.util.* private val logger = KotlinLogging.logger {} diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/StrategiesManager.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/StrategiesManager.kt new file mode 100644 index 0000000000000000000000000000000000000000..947dc0040b6b8cbbe403c0117965c4c8d3b46882 --- /dev/null +++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/StrategiesManager.kt @@ -0,0 +1,31 @@ +package theodolite.strategies + +import theodolite.execution.BenchmarkExecutor +import theodolite.strategies.restriction.LowerBoundRestriction +import theodolite.strategies.restriction.RestrictionStrategy +import theodolite.strategies.searchstrategy.BinarySearch +import theodolite.strategies.searchstrategy.LinearSearch +import theodolite.strategies.searchstrategy.SearchStrategy +import theodolite.util.Results +import java.lang.IllegalArgumentException + +class StrategiesManager { + + fun createSearchStrategy(executor: BenchmarkExecutor, searchStrategyString: String): SearchStrategy { + return when (searchStrategyString) { + "LinearSearch" -> LinearSearch(executor) + "BinarySearch" -> BinarySearch(executor) + else -> throw IllegalArgumentException("Search Strategy $searchStrategyString not found") + } + } + + fun createRestrictionStrategy(results: Results, restrictionStrings: List<String>): Set<RestrictionStrategy> { + return restrictionStrings + .map { restriction -> + when (restriction) { + "LowerBound" -> LowerBoundRestriction(results) + else -> throw IllegalArgumentException("Restriction Strategy $restrictionStrings not found") + } + }.toSet() + } +} \ No newline at end of file