Skip to content
Snippets Groups Projects
Commit f11b95b3 authored by Lorenz Boguhn's avatar Lorenz Boguhn
Browse files

Add @RegisterForReflection

parent d0dc36a8
No related branches found
No related tags found
4 merge requests!159Re-implementation of Theodolite with Kotlin/Quarkus,!157Update Graal Image in CI pipeline,!108Feature/185 Make Paths Configurable,!83WIP: Re-implementation of Theodolite with Kotlin/Quarkus
Showing
with 23 additions and 0 deletions
...@@ -25,6 +25,7 @@ dependencies { ...@@ -25,6 +25,7 @@ dependencies {
implementation 'org.slf4j:slf4j-simple:1.7.29' implementation 'org.slf4j:slf4j-simple:1.7.29'
implementation 'io.github.microutils:kotlin-logging:1.12.0' implementation 'io.github.microutils:kotlin-logging:1.12.0'
implementation 'io.fabric8:kubernetes-client:5.0.0-alpha-2' 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 'org.apache.kafka:kafka-clients:2.7.0'
implementation 'khttp:khttp:1.0.0' implementation 'khttp:khttp:1.0.0'
} }
......
...@@ -2,10 +2,12 @@ package theodolite.benchmark ...@@ -2,10 +2,12 @@ package theodolite.benchmark
import io.fabric8.kubernetes.api.model.KubernetesResource import io.fabric8.kubernetes.api.model.KubernetesResource
import io.fabric8.kubernetes.client.DefaultKubernetesClient import io.fabric8.kubernetes.client.DefaultKubernetesClient
import io.quarkus.runtime.annotations.RegisterForReflection
import org.apache.kafka.clients.admin.NewTopic import org.apache.kafka.clients.admin.NewTopic
import theodolite.k8s.K8sManager import theodolite.k8s.K8sManager
import theodolite.k8s.TopicManager import theodolite.k8s.TopicManager
@RegisterForReflection
class KubernetesBenchmarkDeployment( class KubernetesBenchmarkDeployment(
val namespace: String, val namespace: String,
val resources: List<KubernetesResource>, val resources: List<KubernetesResource>,
......
package theodolite.execution package theodolite.execution
import io.quarkus.runtime.annotations.RegisterForReflection
import mu.KotlinLogging import mu.KotlinLogging
import theodolite.benchmark.Benchmark import theodolite.benchmark.Benchmark
import theodolite.benchmark.BenchmarkExecution import theodolite.benchmark.BenchmarkExecution
...@@ -13,6 +14,7 @@ import java.time.Instant ...@@ -13,6 +14,7 @@ import java.time.Instant
private val logger = KotlinLogging.logger {} private val logger = KotlinLogging.logger {}
@RegisterForReflection
class BenchmarkExecutorImpl( class BenchmarkExecutorImpl(
benchmark: Benchmark, benchmark: Benchmark,
results: Results, results: Results,
......
package theodolite.strategies.restriction package theodolite.strategies.restriction
import io.quarkus.runtime.annotations.RegisterForReflection
import theodolite.util.LoadDimension import theodolite.util.LoadDimension
import theodolite.util.Resource import theodolite.util.Resource
import theodolite.util.Results import theodolite.util.Results
...@@ -8,6 +9,7 @@ import theodolite.util.Results ...@@ -8,6 +9,7 @@ import theodolite.util.Results
* A "Restriction Strategy" restricts a list of resources based on the current * A "Restriction Strategy" restricts a list of resources based on the current
* results of all previously performed benchmarks. * results of all previously performed benchmarks.
*/ */
@RegisterForReflection
abstract class RestrictionStrategy(val results: Results) { abstract class RestrictionStrategy(val results: Results) {
/** /**
* Next Restrict the given resource list for the given load based on the result object. * Next Restrict the given resource list for the given load based on the result object.
......
package theodolite.strategies.searchstrategy package theodolite.strategies.searchstrategy
import io.quarkus.runtime.annotations.RegisterForReflection
import theodolite.execution.BenchmarkExecutor import theodolite.execution.BenchmarkExecutor
import theodolite.strategies.restriction.RestrictionStrategy import theodolite.strategies.restriction.RestrictionStrategy
import theodolite.util.LoadDimension import theodolite.util.LoadDimension
import theodolite.util.Resource import theodolite.util.Resource
@RegisterForReflection
class CompositeStrategy( class CompositeStrategy(
benchmarkExecutor: BenchmarkExecutor, benchmarkExecutor: BenchmarkExecutor,
private val searchStrategy: SearchStrategy, private val searchStrategy: SearchStrategy,
......
package theodolite.strategies.searchstrategy package theodolite.strategies.searchstrategy
import io.quarkus.runtime.annotations.RegisterForReflection
import theodolite.execution.BenchmarkExecutor import theodolite.execution.BenchmarkExecutor
import theodolite.util.LoadDimension import theodolite.util.LoadDimension
import theodolite.util.Resource import theodolite.util.Resource
@RegisterForReflection
abstract class SearchStrategy(val benchmarkExecutor: BenchmarkExecutor) { abstract class SearchStrategy(val benchmarkExecutor: BenchmarkExecutor) {
/** /**
* Find smallest suitable resource from the specified resource list for the given load. * Find smallest suitable resource from the specified resource list for the given load.
......
package theodolite.util package theodolite.util
import io.quarkus.runtime.annotations.RegisterForReflection
import theodolite.strategies.searchstrategy.CompositeStrategy import theodolite.strategies.searchstrategy.CompositeStrategy
@RegisterForReflection
data class Config( data class Config(
val loads: List<LoadDimension>, val loads: List<LoadDimension>,
val resources: List<Resource>, val resources: List<Resource>,
......
...@@ -13,6 +13,7 @@ class KafkaConfig { ...@@ -13,6 +13,7 @@ class KafkaConfig {
return topics.map { topic -> NewTopic(topic.name, topic.numPartitions, topic.replicationFactor) } return topics.map { topic -> NewTopic(topic.name, topic.numPartitions, topic.replicationFactor) }
} }
@RegisterForReflection
class TopicWrapper { class TopicWrapper {
lateinit var name: String lateinit var name: String
var numPartitions by Delegates.notNull<Int>() var numPartitions by Delegates.notNull<Int>()
......
package theodolite.util package theodolite.util
import io.quarkus.runtime.annotations.RegisterForReflection
@RegisterForReflection
data class LoadDimension(private val number: Int, private val type: String) { data class LoadDimension(private val number: Int, private val type: String) {
fun get(): Int { fun get(): Int {
return this.number return this.number
......
package theodolite.util package theodolite.util
import io.quarkus.runtime.annotations.RegisterForReflection
@RegisterForReflection
data class Resource(private val number: Int, private val type: String) { data class Resource(private val number: Int, private val type: String) {
fun get(): Int { fun get(): Int {
return this.number return this.number
......
package theodolite.util package theodolite.util
import io.quarkus.runtime.annotations.RegisterForReflection
@RegisterForReflection
class Results { class Results {
private val results: MutableMap<Pair<LoadDimension, Resource>, Boolean> = mutableMapOf() private val results: MutableMap<Pair<LoadDimension, Resource>, Boolean> = mutableMapOf()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment