diff --git a/execution/theodolite.py b/execution/theodolite.py index b6e6246134e28771056ac498520aea3512a17b10..a7e2d708ca88643e24a5115b2574ecaddf567a04 100755 --- a/execution/theodolite.py +++ b/execution/theodolite.py @@ -1,7 +1,8 @@ #!/usr/bin/env python -import sys +import logging # logging import os +import sys from strategies.config import ExperimentConfig import strategies.strategies.domain_restriction.lower_bound_strategy as lower_bound_strategy import strategies.strategies.domain_restriction.no_lower_bound_strategy as no_lower_bound_strategy @@ -12,133 +13,144 @@ from strategies.experiment_execution import ExperimentExecutor import strategies.subexperiment_execution.subexperiment_executor as subexperiment_executor import strategies.subexperiment_evaluation.subexperiment_evaluator as subexperiment_evaluator -uc=sys.argv[1] -dim_values=sys.argv[2].split(',') -replicas=sys.argv[3].split(',') -partitions=sys.argv[4] if len(sys.argv) >= 5 and sys.argv[4] else 40 -cpu_limit=sys.argv[5] if len(sys.argv) >= 6 and sys.argv[5] else "1000m" -memory_limit=sys.argv[6] if len(sys.argv) >= 7 and sys.argv[6] else "4Gi" -kafka_streams_commit_interval_ms=sys.argv[7] if len(sys.argv) >= 8 and sys.argv[7] else 100 -execution_minutes=sys.argv[8] if len(sys.argv) >= 9 and sys.argv[8] else 5 -domain_restriction=bool(sys.argv[9]) if len(sys.argv) >= 10 and sys.argv[9] == "restrict-domain" else False -search_strategy=sys.argv[10] if len(sys.argv) >= 11 and (sys.argv[10] == "linear-search" or sys.argv[10] == "binary-search") else "default" -print(f"Domain restriction of search space activated: {domain_restriction}") -print(f"Chosen search strategy: {search_strategy}") +def main(): + uc = sys.argv[1] + dim_values = sys.argv[2].split(',') + replicas = sys.argv[3].split(',') + partitions = sys.argv[4] if len(sys.argv) >= 5 and sys.argv[4] else 40 + cpu_limit = sys.argv[5] if len(sys.argv) >= 6 and sys.argv[5] else "1000m" + memory_limit = sys.argv[6] if len(sys.argv) >= 7 and sys.argv[6] else "4Gi" + kafka_streams_commit_interval_ms = sys.argv[7] if len( + sys.argv) >= 8 and sys.argv[7] else 100 + execution_minutes = sys.argv[8] if len( + sys.argv) >= 9 and sys.argv[8] else 5 + domain_restriction = bool(sys.argv[9]) if len( + sys.argv) >= 10 and sys.argv[9] == "restrict-domain" else False + search_strategy = sys.argv[10] if len(sys.argv) >= 11 and ( + sys.argv[10] == "linear-search" or sys.argv[10] == "binary-search") else "default" -if os.path.exists("exp_counter.txt"): - with open("exp_counter.txt", mode="r") as read_stream: - exp_id = int(read_stream.read()) -else: - exp_id = 0 + print(f"Domain restriction of search space activated: {domain_restriction}") + print(f"Chosen search strategy: {search_strategy}") -with open("exp_counter.txt", mode="w") as write_stream: - write_stream.write(str(exp_id+1)) - -# domain restriction -if domain_restriction: - # domain restriction + linear-search - if search_strategy == "linear-search": - print(f"Going to execute at most {len(dim_values)+len(replicas)-1} subexperiments in total..") - experiment_config = ExperimentConfig( - use_case=uc, - exp_id=exp_id, - dim_values=dim_values, - replicass=replicas, - partitions=partitions, - cpu_limit=cpu_limit, - memory_limit=memory_limit, - kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, - execution_minutes=execution_minutes, - 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=dim_values, - replicass=replicas, - partitions=partitions, - cpu_limit=cpu_limit, - memory_limit=memory_limit, - kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, - execution_minutes=execution_minutes, - domain_restriction_strategy=lower_bound_strategy, - search_strategy=binary_search_strategy, - subexperiment_executor=subexperiment_executor, - subexperiment_evaluator=subexperiment_evaluator) - # domain restriction + check_all + if os.path.exists("exp_counter.txt"): + with open("exp_counter.txt", mode="r") as read_stream: + exp_id = int(read_stream.read()) else: - print(f"Going to execute {len(dim_values)*len(replicas)} subexperiments in total..") - experiment_config = ExperimentConfig( - use_case=uc, - exp_id=exp_id, - dim_values=dim_values, - replicass=replicas, - partitions=partitions, - cpu_limit=cpu_limit, - memory_limit=memory_limit, - kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, - execution_minutes=execution_minutes, - domain_restriction_strategy=lower_bound_strategy, - search_strategy=check_all_strategy, - subexperiment_executor=subexperiment_executor, - subexperiment_evaluator=subexperiment_evaluator) -# no domain restriction -else: - # no domain restriction + linear-search - if search_strategy == "linear-search": - print(f"Going to execute at most {len(dim_values)*len(replicas)} subexperiments in total..") - experiment_config = ExperimentConfig( - use_case=uc, - exp_id=exp_id, - dim_values=dim_values, - replicass=replicas, - partitions=partitions, - cpu_limit=cpu_limit, - memory_limit=memory_limit, - kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, - execution_minutes=execution_minutes, - 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=dim_values, - replicass=replicas, - partitions=partitions, - cpu_limit=cpu_limit, - memory_limit=memory_limit, - kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, - execution_minutes=execution_minutes, - 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 + exp_id = 0 + + with open("exp_counter.txt", mode="w") as write_stream: + write_stream.write(str(exp_id + 1)) + + # domain restriction + if domain_restriction: + # domain restriction + linear-search + if search_strategy == "linear-search": + print(f"Going to execute at most {len(dim_values)+len(replicas)-1} subexperiments in total..") + experiment_config = ExperimentConfig( + use_case=uc, + exp_id=exp_id, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + 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=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + 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(dim_values)*len(replicas)} subexperiments in total..") + experiment_config = ExperimentConfig( + use_case=uc, + exp_id=exp_id, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + domain_restriction_strategy=lower_bound_strategy, + search_strategy=check_all_strategy, + subexperiment_executor=subexperiment_executor, + subexperiment_evaluator=subexperiment_evaluator) + # no domain restriction else: - print(f"Going to execute {len(dim_values)*len(replicas)} subexperiments in total..") - experiment_config = ExperimentConfig( - use_case=uc, - exp_id=exp_id, - dim_values=dim_values, - replicass=replicas, - partitions=partitions, - cpu_limit=cpu_limit, - memory_limit=memory_limit, - kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, - execution_minutes=execution_minutes, - domain_restriction_strategy=no_lower_bound_strategy, - search_strategy=check_all_strategy, - subexperiment_executor=subexperiment_executor, - subexperiment_evaluator=subexperiment_evaluator) + # no domain restriction + linear-search + if search_strategy == "linear-search": + print(f"Going to execute at most {len(dim_values)*len(replicas)} subexperiments in total..") + experiment_config = ExperimentConfig( + use_case=uc, + exp_id=exp_id, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + 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=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + 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(dim_values)*len(replicas)} subexperiments in total..") + experiment_config = ExperimentConfig( + use_case=uc, + exp_id=exp_id, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + domain_restriction_strategy=no_lower_bound_strategy, + search_strategy=check_all_strategy, + subexperiment_executor=subexperiment_executor, + subexperiment_evaluator=subexperiment_evaluator) + + executor = ExperimentExecutor(experiment_config) + executor.execute() + -executor = ExperimentExecutor(experiment_config) -executor.execute() \ No newline at end of file +if __name__ == '__main__': + logging.basicConfig(level=logging.INFO) + main()