From 7ed80d87b6d76993c9f1678e5e9c77b0f96a381c Mon Sep 17 00:00:00 2001
From: lorenz <stu203404@mail.uni-kiel.de>
Date: Thu, 15 Apr 2021 15:16:01 +0200
Subject: [PATCH] Enhance benchmark and execution dokumentation

---
 theodolite-quarkus/config/README.md | 92 +++++++++++++++++++++--------
 1 file changed, 68 insertions(+), 24 deletions(-)

diff --git a/theodolite-quarkus/config/README.md b/theodolite-quarkus/config/README.md
index f5748d655..6902309f6 100644
--- a/theodolite-quarkus/config/README.md
+++ b/theodolite-quarkus/config/README.md
@@ -33,11 +33,11 @@ kafkaConfig:
     ...
 ```
 
-The properties have the following meaning:
+The properties have the following definitions:
 
 * **name**: The name of the *benchmark*
-* **appResource**: A list of file names that reference Kubernetes resources and that are deployed on the cluster for the system under test (SUT).
-* **loadGenResources**: A list of file names that reference Kubernetes resources and that are deployed on the cluster for the load generator.
+* **appResource**: A list of file names that reference Kubernetes resources that are deployed on the cluster for the system under test (SUT).
+* **loadGenResources**: A list of file names that reference Kubernetes resources that are deployed on the cluster for the load generator.
 * **resourceTypes**: A list of resource types that can be scaled for this *benchmark*. For each resource type the concrete values are defined in the *execution* object. Each resource type has the following structure:
     * **typeName**: Name of the resource type.
     * **patchers**: List of patchers used to scale this resource type. Each patcher has the following structure:
@@ -49,9 +49,6 @@ The properties have the following meaning:
     * **patchers**: List of patchers used to scale * **resourceTypes**: A list of resource types that can be scaled for this *benchmark*. For each resource type the concrete values are defined in the *execution* resource object.Each resource type has the following structure:
     * **typeName**: Name of the resource type.
     * **patchers**: List of patchers used to scale this resource type. Each patcher has the following structure:
-        * **type**: Type of the Patcher. The concrete types can be looked up in the list of patchers. 
-        * **resources**: Specifies the Kubernetes resource to be patched.
-        * **Patcher Arguments**: (Optional) Patcher specific additional arguments.this load type. Each patcher has the following structure:
         * **type**: Type of the Patcher. The concrete types can be looked up in the list of patchers. 
         * **resources**: Specifies the Kubernetes resource to be patched.
         * **Patcher Arguments**: (Optional) Patcher specific additional arguments.
@@ -116,23 +113,70 @@ The properties have the following meaning:
   * **resourceValues**: List of resource values for the specified resource type.
 * **slos**: List of the Service Level Objective (SLO) for this *execution*. Each SLO has the following fields:
   * **sloType**: The type of the SLO. It must match 'lag trend'.
-  * **threshold**: 
-  * prometheusUrl: String
-  * externalSloUrl: String
-  * offset: SignedInt
-  * warmup: UnsignedInt
-executions:
-  strategy: "LinearSearch" or "BinarySearch"
-  duration: UnsignedInt
-  repetition: UnsignedInt
-  restrictions:
-    - "LowerBound"
-    ...
-configurationOverrides:
-  - patcher:
-      type: String
-      resource: String
-      <Patcher Arguments> ...
+  * **threshold**: The threshold the SUT should meet for a sucessful experiment.
+  * **prometheusUrl**: Connection string for promehteus.
+  * **externalSloUrl**: Connection string for a external slo analysis.
+  * **offset**: Hours by which the start and end timestamp will be shifted (for different timezones).
+  * **warmup**: Seconds of time that are ignored in the analysis.
+* **executions**: defines the overall parameter for the execution.
+  * **strategy**: defines the used straegy for the execution: either 'LinearSearch' or 'BinarySearch'
+  * **duration**: defines the duration of each experiment in seconds.
+  * **repetition**: Unused.
+  * **restrictions**: List of restriction strategys used to delimit the search space.
+    **- LowerBound**: currently only supported restriction strategy.
+* **configurationOverrides**: List of patchers that are used to override existing configurations.
+  * **patcher**: patcher used to patch a resource . Each patcher has the following structure:
+        * **type**: Type of the Patcher. The concrete types can be looked up in the list of patchers. 
+        * **resources**: Specifies the Kubernetes resource to be patched.
+        * **Patcher Arguments**: (Optional) Patcher specific additional arguments.
   ...
 
-## Patchers
\ No newline at end of file
+## Patchers
+
+* **ReplicaPatcher**: Allows to modify the number of Replicas for a kubernetes deployment.
+  * **type**: "ReplicaPatcher"
+  * **resource**: "uc1-kstreams-deployment.yaml"
+
+* **NumSensorsLoadGeneratorReplicaPatcher**: Allows to scale the nummer of load generators. Scales arcording to the following formular: (value + 15_000 - 1) / 15_000
+  * **type**: "NumSensorsLoadGeneratorReplicaPatcher"
+  * **resource**: "uc1-load-generator-deployment.yaml"
+
+* **NumNestedGroupsLoadGeneratorReplicaPatcher**: Allows to scale the nummer of load generators. Scales arcording to the following formular: (4^(value) + 15_000 -1) /15_000
+  * **type**: "NumNestedGroupsLoadGeneratorReplicaPatcher"
+  * **resource**: "uc1-load-generator-deployment.yaml"
+
+* **ReplicaPatcher**: Allows to modify the number of Replicas for a kubernetes deployment.
+  * **type**: "ReplicaPatcher"
+  * **resource**: "uc1-kstreams-deployment.yaml"
+
+* **EnvVarPatcher**: Allows to modify the value of an environment variable for a container in a kubernetes deployment. 
+  * **type**: "EnvVarPatcher"
+  * **resource**: "uc1-load-generator-deployment.yaml"
+  * **container**: "workload-generator"
+  * **variableName**: "NUM_SENSORS"
+
+* **NodeSelectorPatcher**: Changes the node selection field in kubernetes resources.
+  * **type**: "NodeSelectorPatcher"
+  * **resource**: "uc1-load-generator-deployment.yaml"
+  * **variableName**: "env"
+  * **value**: "prod"
+
+* **ResourceLimitPatcher**: Changes the resource limit for a kubernetes resource.
+  * **resource**: "uc1-kstreams-deployment.yaml"
+  * **container**: "uc-application"
+  * **variableName**: "cpu" or "memory"
+  * **value**:"1000m" or "2Gi"
+  
+* **SchedulerNamePatcher**: Changes the sheduler for kubernetes resources.
+  * **type**: "SchedulerNamePatcher"
+  * **resource**: "uc1-kstreams-deployment.yaml"
+  * **value**: "random-scheduler"
+
+* **ImagePatcher**: Changes the image of a kubernetes resource. Currently not fully implemented.
+  * **type**: "ImagePatcher"
+  * **resource**: "uc1-kstreams-deployment.yaml"
+  * **container**: "uc-application"
+  * **value**: "dockerhubrepo/imagename"
+
+
+
-- 
GitLab