From 8d116803a427f8566fd985a5434678f2a74ca9f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Vonheiden?= <bjoern.vonheiden@hotmail.de> Date: Fri, 25 Sep 2020 12:24:51 +0200 Subject: [PATCH] Add module for cli parsing --- execution/strategies/cli_parser.py | 69 ++++++++++++++++++++++++++++++ execution/theodolite.py | 55 +----------------------- 2 files changed, 71 insertions(+), 53 deletions(-) create mode 100644 execution/strategies/cli_parser.py diff --git a/execution/strategies/cli_parser.py b/execution/strategies/cli_parser.py new file mode 100644 index 000000000..fc9698c80 --- /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 a05d58cc7..2cb522ca9 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 -- GitLab