Skip to content
Snippets Groups Projects
Commit d7805178 authored by Sören Henning's avatar Sören Henning
Browse files

Merge branch 'osp-bench' into 'master'

Add a Patcher to handle ospbench data volume settings

See merge request !174
parents c3821898 ffea42bb
No related branches found
No related tags found
1 merge request!174Add a Patcher to handle ospbench data volume settings
Pipeline #4594 failed
package theodolite.patcher
import io.fabric8.kubernetes.api.model.KubernetesResource
/**
* The DataVolumeLoadGeneratorReplicaPatcher takes the total load that should be generated
* and computes the number of instances needed for this load based on the `maxVolume`
* ((load + maxVolume - 1) / maxVolume) and calculates the load per instance
* (loadPerInstance = load / instances).
* The number of instances are set for the load generator and the given variable is set to the
* load per instance.
*
* @property k8sResource Kubernetes resource to be patched.
* @property maxVolume per load generator instance
* @property container Container to be patched.
* @property variableName Name of the environment variable to be patched.
*/
class DataVolumeLoadGeneratorReplicaPatcher(
k8sResource: KubernetesResource,
private val maxVolume: Int,
container: String,
variableName: String
) : AbstractPatcher(k8sResource) {
private val replicaPatcher = ReplicaPatcher(k8sResource)
private val envVarPatcher = EnvVarPatcher(k8sResource, container, variableName)
override fun <T> patch(value: T) {
// calculate number of load generator instances and load per instance
val load = Integer.parseInt(value.toString())
val loadGenInstances = (load + maxVolume - 1) / maxVolume
val loadPerInstance = load / loadGenInstances
// Patch instance values and load value of generators
replicaPatcher.patch(loadGenInstances.toString())
envVarPatcher.patch(loadPerInstance.toString())
}
}
......@@ -48,6 +48,12 @@ class PatcherFactory {
k8sResource = resource,
loadGenMaxRecords = patcherDefinition.properties["loadGenMaxRecords"]!!
)
"DataVolumeLoadGeneratorReplicaPatcher" -> DataVolumeLoadGeneratorReplicaPatcher(
k8sResource = resource,
maxVolume = patcherDefinition.properties["maxVolume"]!!.toInt(),
container = patcherDefinition.properties["container"]!!,
variableName = patcherDefinition.properties["variableName"]!!
)
"EnvVarPatcher" -> EnvVarPatcher(
k8sResource = resource,
container = patcherDefinition.properties["container"]!!,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment