diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/K8sManager.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/K8sManager.kt index 66bfb2572bfcb5cb53d579a8af1c94c2b39bb532..1da763a35019816ebc8bdfaf3cb723798c57e3a4 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/K8sManager.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/K8sManager.kt @@ -27,22 +27,24 @@ class K8sManager(private val client: NamespacedKubernetesClient) { * Removes different k8s resources using the client. * @throws IllegalArgumentException if KubernetesResource not supported. */ - fun remove(resource: HasMetadata) { + fun remove(resource: HasMetadata, blockUntilDeleted: Boolean = true) { client.resource(resource).delete() - when (resource) { - is Deployment -> { - ResourceByLabelHandler(client = client) - .blockUntilPodsDeleted( - matchLabels = resource.spec.selector.matchLabels - ) - logger.info { "Deployment '${resource.metadata.name}' deleted." } - } - is StatefulSet -> { - ResourceByLabelHandler(client = client) - .blockUntilPodsDeleted( - matchLabels = resource.spec.selector.matchLabels - ) - logger.info { "StatefulSet '$resource.metadata.name' deleted." } + if(blockUntilDeleted) { + when (resource) { + is Deployment -> { + ResourceByLabelHandler(client = client) + .blockUntilPodsDeleted( + matchLabels = resource.spec.selector.matchLabels + ) + logger.info { "Deployment '${resource.metadata.name}' deleted." } + } + is StatefulSet -> { + ResourceByLabelHandler(client = client) + .blockUntilPodsDeleted( + matchLabels = resource.spec.selector.matchLabels + ) + logger.info { "StatefulSet '$resource.metadata.name' deleted." } + } } } } diff --git a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/KubernetesBenchmarkDeployment.kt b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/KubernetesBenchmarkDeployment.kt index be567ccd8ec969a4964886e20f141fa4fad17b88..28ac651a043134d061123956cea0cfc6d9535ce6 100644 --- a/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/KubernetesBenchmarkDeployment.kt +++ b/theodolite/src/main/kotlin/rocks/theodolite/kubernetes/KubernetesBenchmarkDeployment.kt @@ -2,6 +2,8 @@ package rocks.theodolite.kubernetes import io.fabric8.kubernetes.api.model.HasMetadata import io.fabric8.kubernetes.api.model.KubernetesResource +import io.fabric8.kubernetes.api.model.apps.Deployment +import io.fabric8.kubernetes.api.model.apps.StatefulSet import io.fabric8.kubernetes.client.NamespacedKubernetesClient import io.quarkus.runtime.annotations.RegisterForReflection import mu.KotlinLogging @@ -72,14 +74,25 @@ class KubernetesBenchmarkDeployment( * - Remove the [KubernetesResource]s. */ override fun teardown() { - loadGenResources.forEach { kubernetesManager.remove(it) } + val podCleaner = ResourceByLabelHandler(client) + loadGenResources.forEach { kubernetesManager.remove(it, false) } loadGenAfterActions.forEach { it.exec(client = client) } - appResources.forEach { kubernetesManager.remove(it) } + appResources.forEach { kubernetesManager.remove(it,false) } sutAfterActions.forEach { it.exec(client = client) } if (this.topics.isNotEmpty()) { kafkaController.removeTopics(this.topics.map { topic -> topic.name }) } - ResourceByLabelHandler(client).removePods( + + listOf(loadGenResources, appResources) + .forEach { + if (it is Deployment) { + podCleaner.blockUntilPodsDeleted(it.spec.selector.matchLabels) + } else if (it is StatefulSet) { + podCleaner.blockUntilPodsDeleted(it.spec.selector.matchLabels) + } + } + + podCleaner.removePods( labelName = LAG_EXPORTER_POD_LABEL_NAME, labelValue = LAG_EXPORTER_POD_LABEL_VALUE )