diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/Shutdown.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/Shutdown.kt new file mode 100644 index 0000000000000000000000000000000000000000..7adeae679750d7cc53c749ca41300a415c6b75f8 --- /dev/null +++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/Shutdown.kt @@ -0,0 +1,29 @@ +package theodolite.execution + +import mu.KotlinLogging +import theodolite.benchmark.BenchmarkExecution +import theodolite.benchmark.KubernetesBenchmark +import theodolite.util.LoadDimension +import theodolite.util.Resource + +private val logger = KotlinLogging.logger {} + +class Shutdown(private val benchmarkExecution: BenchmarkExecution, private val benchmark: KubernetesBenchmark) : + Thread() { + + override fun run() { + // Build Configuration to teardown + logger.info { "Received shutdown signal -> Shutting down" } + val deployment = + benchmark.buildDeployment( + load = LoadDimension(0, "shutdown"), + res = Resource(0, "shutdown"), + configurationOverrides = benchmarkExecution.configOverrides + ) + logger.info { "Teardown the everything deployed" } + deployment.teardown() + logger.info { "Teardown completed" } + + // TODO Clear/Reset the kafka lag exporter ? + } +} diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteYamlExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteYamlExecutor.kt index f6c109dac52ea4a4faeb30b8041329bc86812552..d5f73338718af26c49ff86d63c16a4fa5a903646 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteYamlExecutor.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteYamlExecutor.kt @@ -22,6 +22,8 @@ object TheodoliteYamlExecutor { val benchmark = parser.parse("./../../../resources/main/yaml/BenchmarkType.yaml", KubernetesBenchmark::class.java)!! + Runtime.getRuntime().addShutdownHook(Shutdown(benchmarkExecution, benchmark)) + val executor = TheodoliteExecutor(benchmarkExecution, benchmark) executor.run() logger.info { "Theodolite finished" }