diff --git a/execution/strategies/cli_parser.py b/execution/strategies/cli_parser.py new file mode 100644 index 0000000000000000000000000000000000000000..fc9698c807889fcbdbc3cff8912ff299720489a4 --- /dev/null +++ b/execution/strategies/cli_parser.py @@ -0,0 +1,69 @@ +import argparse + +def default_parser(description): + """ + Returns the default parser that can be used for thodolite and run uc py + :param description: The description the argument parser should show. + """ + parser = argparse.ArgumentParser(description=description) + parser.add_argument('uc', + metavar='<uc>', + help='use case number, one of 1, 2, 3 or 4') + parser.add_argument('--partitions', '-p', + default=40, + type=int, + metavar='<partitions>', + help='Number of partitions for Kafka topics') + parser.add_argument('--cpu-limit', '-cpu', + default='1000m', + metavar='<CPU limit>', + help='Kubernetes CPU limit') + parser.add_argument('--memory-limit', '-mem', + default='4Gi', + metavar='<memory limit>', + help='Kubernetes memory limit') + parser.add_argument('--commit-ms', + default=100, + type=int, + metavar='<commit ms>', + help='Kafka Streams commit interval in milliseconds') + parser.add_argument('--duration', '-d', + default=5, + type=int, + metavar='<duration>', + help='Duration in minutes subexperiments should be \ + executed for') + parser.add_argument('--reset', + action="store_true", + help='Resets the environment before execution') + parser.add_argument('--reset-only', + action="store_true", + help='Only resets the environment. Ignores all other parameters') + return parser + +def benchmark_parser(description): + """ + Parser for the overall benchmark execution + """ + parser = default_parser(description) + + parser.add_argument('loads', + type=int, + metavar='<load>', + nargs='+', + help='Loads that should be executed') + parser.add_argument('--instances', '-i', + dest='instances_list', + default=[1], + type=int, + metavar='<instance>', + nargs='+', + help='List of instances used in benchmarks') + parser.add_argument('--domain-restriction', + action="store_true", + help='To use domain restriction. For details see README') + parser.add_argument('--search-strategy', + default='default', + metavar='<strategy>', + help='The benchmarking search strategy. Can be set to default, linear-search or binary-search') + return parser diff --git a/execution/theodolite.py b/execution/theodolite.py index a05d58cc764b1aa44aac9044320746a6c6ab9bf6..2cb522ca9e9bf3194a07f46483ce85d80f7ec38d 100755 --- a/execution/theodolite.py +++ b/execution/theodolite.py @@ -5,6 +5,7 @@ import logging # logging import os import sys from strategies.config import ExperimentConfig +import strategies.cli_parser as cli_parser 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 import strategies.strategies.search.check_all_strategy as check_all_strategy @@ -18,59 +19,7 @@ import strategies.subexperiment_evaluation.subexperiment_evaluator as subexperim def load_variables(): """Load the CLI variables given at the command line""" print('Load CLI variables') - parser = argparse.ArgumentParser(description='Run use case Programm') - parser.add_argument('uc', - metavar='<uc>', - help='use case number, one of 1, 2, 3 or 4') - parser.add_argument('loads', - type=int, - metavar='<load>', - nargs='+', - help='Loads that should be executed') - parser.add_argument('--instances', '-i', - dest='instances_list', - default=[1], - type=int, - metavar='<instance>', - nargs='+', - help='List of instances used in benchmarks') - parser.add_argument('--partitions', '-p', - default=40, - type=int, - metavar='<partitions>', - help='Number of partitions for Kafka topics') - parser.add_argument('--cpu-limit', '-cpu', - default='1000m', - metavar='<CPU limit>', - help='Kubernetes CPU limit') - parser.add_argument('--memory-limit', '-mem', - default='4Gi', - metavar='<memory limit>', - help='Kubernetes memory limit') - parser.add_argument('--commit-ms', - default=100, - type=int, - metavar='<commit ms>', - help='Kafka Streams commit interval in milliseconds') - parser.add_argument('--duration', '-d', - default=5, - type=int, - metavar='<duration>', - help='Duration in minutes subexperiments should be \ - executed for') - parser.add_argument('--domain-restriction', - action="store_true", - help='To use domain restriction. For details see README') - parser.add_argument('--search-strategy', - default='default', - metavar='<strategy>', - help='The benchmarking search strategy. Can be set to default, linear-search or binary-search') - parser.add_argument('--reset', - action="store_true", - help='Resets the environment before execution') - parser.add_argument('--reset-only', - action="store_true", - help='Only resets the environment. Ignores all other parameters') + parser = cli_parser.benchmark_parser("Run theodolite benchmarking") args = parser.parse_args() print(args) return args