From a8221a4bbaea651fa71cb7a3693cc10a488da5cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Vonheiden?= <bjoern.vonheiden@hotmail.de>
Date: Fri, 20 Nov 2020 11:25:03 +0100
Subject: [PATCH] Remove redundancies in theodolite script to execute
 experiments

Apply the DRY principle and remove redundancies.
Only the domain restriction and search strategies varies and
can therefore only set.
---
 execution/theodolite.py | 135 ++++++++++------------------------------
 1 file changed, 33 insertions(+), 102 deletions(-)

diff --git a/execution/theodolite.py b/execution/theodolite.py
index 530b5fa89..56fdc8b52 100755
--- a/execution/theodolite.py
+++ b/execution/theodolite.py
@@ -66,110 +66,41 @@ def main(uc, loads, instances_list, partitions, cpu_limit, memory_limit,
     with open(counter_path, mode="w") as write_stream:
         write_stream.write(str(exp_id + 1))
 
-    # domain restriction
+    domain_restriction_strategy = None
+    search_strategy = None
+
+    # Select domain restriction
     if domain_restriction:
-        # domain restriction + linear-search
-        if search_strategy == "linear-search":
-            print(f"Going to execute at most {len(loads)+len(instances_list)-1} subexperiments in total..")
-            experiment_config = ExperimentConfig(
-                use_case=uc,
-                exp_id=exp_id,
-                dim_values=loads,
-                replicass=instances_list,
-                partitions=partitions,
-                cpu_limit=cpu_limit,
-                memory_limit=memory_limit,
-                kafka_streams_commit_interval_ms=commit_ms,
-                execution_minutes=duration,
-                domain_restriction_strategy=lower_bound_strategy,
-                search_strategy=linear_search_strategy,
-                subexperiment_executor=subexperiment_executor,
-                subexperiment_evaluator=subexperiment_evaluator)
-        # domain restriction + binary-search
-        elif search_strategy == "binary-search":
-            experiment_config = ExperimentConfig(
-                use_case=uc,
-                exp_id=exp_id,
-                dim_values=loads,
-                replicass=instances_list,
-                partitions=partitions,
-                cpu_limit=cpu_limit,
-                memory_limit=memory_limit,
-                kafka_streams_commit_interval_ms=commit_ms,
-                execution_minutes=duration,
-                domain_restriction_strategy=lower_bound_strategy,
-                search_strategy=binary_search_strategy,
-                subexperiment_executor=subexperiment_executor,
-                subexperiment_evaluator=subexperiment_evaluator)
-        # domain restriction + check_all
-        else:
-            print(f"Going to execute {len(loads)*len(instances_list)} subexperiments in total..")
-            experiment_config = ExperimentConfig(
-                use_case=uc,
-                exp_id=exp_id,
-                dim_values=loads,
-                replicass=instances_list,
-                partitions=partitions,
-                cpu_limit=cpu_limit,
-                memory_limit=memory_limit,
-                kafka_streams_commit_interval_ms=commit_ms,
-                execution_minutes=duration,
-                domain_restriction_strategy=lower_bound_strategy,
-                search_strategy=check_all_strategy,
-                subexperiment_executor=subexperiment_executor,
-                subexperiment_evaluator=subexperiment_evaluator)
-    # no domain restriction
+        # domain restriction
+        domain_restriction_strategy = lower_bound_strategy
+    else:
+        # no domain restriction
+        domain_restriction_strategy = no_lower_bound_strategy
+
+    # select search strategy
+    if search_strategy == "linear-search":
+        print(f"Going to execute at most {len(loads)+len(instances_list)-1} subexperiments in total..")
+        search_strategy = linear_search_strategy
+    elif search_strategy == "binary-search":
+        search_strategy = binary_search_strategy
     else:
-        # no domain restriction + linear-search
-        if search_strategy == "linear-search":
-            print(f"Going to execute at most {len(loads)*len(instances_list)} subexperiments in total..")
-            experiment_config = ExperimentConfig(
-                use_case=uc,
-                exp_id=exp_id,
-                dim_values=loads,
-                replicass=instances_list,
-                partitions=partitions,
-                cpu_limit=cpu_limit,
-                memory_limit=memory_limit,
-                kafka_streams_commit_interval_ms=commit_ms,
-                execution_minutes=duration,
-                domain_restriction_strategy=no_lower_bound_strategy,
-                search_strategy=linear_search_strategy,
-                subexperiment_executor=subexperiment_executor,
-                subexperiment_evaluator=subexperiment_evaluator)
-        # no domain restriction + binary-search
-        elif search_strategy == "binary-search":
-            experiment_config = ExperimentConfig(
-                use_case=uc,
-                exp_id=exp_id,
-                dim_values=loads,
-                replicass=instances_list,
-                partitions=partitions,
-                cpu_limit=cpu_limit,
-                memory_limit=memory_limit,
-                kafka_streams_commit_interval_ms=commit_ms,
-                execution_minutes=duration,
-                domain_restriction_strategy=no_lower_bound_strategy,
-                search_strategy=binary_search_strategy,
-                subexperiment_executor=subexperiment_executor,
-                subexperiment_evaluator=subexperiment_evaluator)
-        # no domain restriction + check_all
-        else:
-            print(f"Going to execute {len(loads)*len(instances_list)} subexperiments in total..")
-            experiment_config = ExperimentConfig(
-                use_case=uc,
-                exp_id=exp_id,
-                dim_values=loads,
-                replicass=instances_list,
-                partitions=partitions,
-                cpu_limit=cpu_limit,
-                memory_limit=memory_limit,
-                kafka_streams_commit_interval_ms=commit_ms,
-                execution_minutes=duration,
-                domain_restriction_strategy=no_lower_bound_strategy,
-                search_strategy=check_all_strategy,
-                subexperiment_executor=subexperiment_executor,
-                subexperiment_evaluator=subexperiment_evaluator)
+        print(f"Going to execute {len(loads)*len(instances_list)} subexperiments in total..")
+        search_strategy = check_all_strategy
+
+    experiment_config = ExperimentConfig(
+        use_case=uc,
+        exp_id=exp_id,
+        dim_values=loads,
+        replicass=instances_list,
+        partitions=partitions,
+        cpu_limit=cpu_limit,
+        memory_limit=memory_limit,
+        kafka_streams_commit_interval_ms=commit_ms,
+        execution_minutes=duration,
+        domain_restriction_strategy=domain_restriction_strategy,
+        search_strategy=search_strategy,
+        subexperiment_executor=subexperiment_executor,
+        subexperiment_evaluator=subexperiment_evaluator)
 
     executor = ExperimentExecutor(experiment_config)
     executor.execute()
-- 
GitLab