diff --git a/theodolite-quarkus/build.gradle b/theodolite-quarkus/build.gradle index 1ceb0937776299e6fc9a3c0ec470c9e320e6790f..7f32c0c5bab25b1d62b6cd9aa6f5db5eb6d78e47 100644 --- a/theodolite-quarkus/build.gradle +++ b/theodolite-quarkus/build.gradle @@ -25,6 +25,7 @@ dependencies { implementation 'org.slf4j:slf4j-simple:1.7.29' implementation 'io.github.microutils:kotlin-logging:1.12.0' implementation 'io.fabric8:kubernetes-client:5.0.0-alpha-2' + implementation 'io.quarkus:quarkus-kubernetes-client' implementation 'org.apache.kafka:kafka-clients:2.7.0' implementation 'khttp:khttp:1.0.0' } diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt index 342ceebb89a2ccd04a84ba40fb49a1e4872fa24d..d8656bc3c215906d36d42d1a0ffffe142248e1b9 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/KubernetesBenchmarkDeployment.kt @@ -2,10 +2,12 @@ package theodolite.benchmark import io.fabric8.kubernetes.api.model.KubernetesResource import io.fabric8.kubernetes.client.DefaultKubernetesClient +import io.quarkus.runtime.annotations.RegisterForReflection import org.apache.kafka.clients.admin.NewTopic import theodolite.k8s.K8sManager import theodolite.k8s.TopicManager +@RegisterForReflection class KubernetesBenchmarkDeployment( val namespace: String, val resources: List<KubernetesResource>, diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt index 19a0cb61c7bc24a00b1c769e77f4174d2f09d2d9..da7d2328bfa6cd2705386fca4b8e621dfe65e578 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt @@ -1,5 +1,6 @@ package theodolite.execution +import io.quarkus.runtime.annotations.RegisterForReflection import mu.KotlinLogging import theodolite.benchmark.Benchmark import theodolite.benchmark.BenchmarkExecution @@ -13,6 +14,7 @@ import java.time.Instant private val logger = KotlinLogging.logger {} +@RegisterForReflection class BenchmarkExecutorImpl( benchmark: Benchmark, results: Results, diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt index b2e09a0cc2ce03bb735a00994c7f7f109527a56b..75c7e86b57e3b3afb0121eab628f2872458efe74 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/restriction/RestrictionStrategy.kt @@ -1,5 +1,6 @@ package theodolite.strategies.restriction +import io.quarkus.runtime.annotations.RegisterForReflection import theodolite.util.LoadDimension import theodolite.util.Resource import theodolite.util.Results @@ -8,6 +9,7 @@ import theodolite.util.Results * A "Restriction Strategy" restricts a list of resources based on the current * results of all previously performed benchmarks. */ +@RegisterForReflection abstract class RestrictionStrategy(val results: Results) { /** * Next Restrict the given resource list for the given load based on the result object. diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt index 8ffca54fa8b6e1359f60dbfe9394b348ef5e71c4..01d841c91b2de6fb70208ef4f8da12ab75361818 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/CompositeStrategy.kt @@ -1,10 +1,12 @@ package theodolite.strategies.searchstrategy +import io.quarkus.runtime.annotations.RegisterForReflection import theodolite.execution.BenchmarkExecutor import theodolite.strategies.restriction.RestrictionStrategy import theodolite.util.LoadDimension import theodolite.util.Resource +@RegisterForReflection class CompositeStrategy( benchmarkExecutor: BenchmarkExecutor, private val searchStrategy: SearchStrategy, diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt index d57246ca4337290ab3502192e3b3b0dc275c6596..888a58585b08cd02b116ee1d2e275138f5f690e8 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/strategies/searchstrategy/SearchStrategy.kt @@ -1,9 +1,11 @@ package theodolite.strategies.searchstrategy +import io.quarkus.runtime.annotations.RegisterForReflection import theodolite.execution.BenchmarkExecutor import theodolite.util.LoadDimension import theodolite.util.Resource +@RegisterForReflection abstract class SearchStrategy(val benchmarkExecutor: BenchmarkExecutor) { /** * Find smallest suitable resource from the specified resource list for the given load. diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt index a6120564c8a69f50461acdc857b02ac2198cafc8..15defa6c7127bc82d6ea2b13abe51076e44bd5a9 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Config.kt @@ -1,7 +1,9 @@ package theodolite.util +import io.quarkus.runtime.annotations.RegisterForReflection import theodolite.strategies.searchstrategy.CompositeStrategy +@RegisterForReflection data class Config( val loads: List<LoadDimension>, val resources: List<Resource>, diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt index d21e8c77f87ed82e65b3fad6876cd361c0358d38..46960ccdb1aedad1c104f6f5ec2082077f55e4de 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/KafkaConfig.kt @@ -13,6 +13,7 @@ class KafkaConfig { return topics.map { topic -> NewTopic(topic.name, topic.numPartitions, topic.replicationFactor) } } + @RegisterForReflection class TopicWrapper { lateinit var name: String var numPartitions by Delegates.notNull<Int>() diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt index 29d47460bc49ec44e9a46a129e3dab3246f305b6..654c4d0cc52f4a2e3246211773d83aea589ced81 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/LoadDimension.kt @@ -1,5 +1,8 @@ package theodolite.util +import io.quarkus.runtime.annotations.RegisterForReflection + +@RegisterForReflection data class LoadDimension(private val number: Int, private val type: String) { fun get(): Int { return this.number diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt index cb172e0b8de4cff5fc08828a177f3dd9d58bbb53..c62f785a4ecadc4caa55bfa38872f4ff4f8cdd09 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Resource.kt @@ -1,5 +1,8 @@ package theodolite.util +import io.quarkus.runtime.annotations.RegisterForReflection + +@RegisterForReflection data class Resource(private val number: Int, private val type: String) { fun get(): Int { return this.number diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt index 91bde71792fdca383fc9511658bab39aa58d12ce..2f746a17a0fd7ec0eb26a12426c41a6c1669aa54 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/Results.kt @@ -1,5 +1,8 @@ package theodolite.util +import io.quarkus.runtime.annotations.RegisterForReflection + +@RegisterForReflection class Results { private val results: MutableMap<Pair<LoadDimension, Resource>, Boolean> = mutableMapOf()