From 7f69f4cb64be117bd2140b79891a59587074e453 Mon Sep 17 00:00:00 2001 From: lorenz <stu203404@mail.uni-kiel.de> Date: Sun, 14 Mar 2021 18:28:37 +0100 Subject: [PATCH] Add shutdown hook --- .../kotlin/theodolite/execution/Shutdown.kt | 29 +++++++++++++++++++ .../execution/TheodoliteYamlExecutor.kt | 2 ++ 2 files changed, 31 insertions(+) create mode 100644 theodolite-quarkus/src/main/kotlin/theodolite/execution/Shutdown.kt 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 000000000..7adeae679 --- /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 f6c109dac..d5f733387 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" } -- GitLab