diff options
author | mbeierl <mark.beierl@emc.com> | 2015-11-23 08:23:47 -0800 |
---|---|---|
committer | mbeierl <mark.beierl@emc.com> | 2015-11-23 20:15:59 -0800 |
commit | 002920e29d7fa4a28abec96773b470c90bafe55d (patch) | |
tree | 893f45209a84f197ef6ec3848ed83fc9df3eab8f /storperf/main.py | |
parent | d480e8746512caf8821c42582e7ab75d25b3127b (diff) |
Adding workload modules
Adding the ablity to define workloads in modules which can be
referenced from the API. Breaking out the test execution into
its own class so it will be easier to support ReST or other
interfaces.
Added flake8 and code coverage reports where possible to
merge and verify jobs
Change-Id: Ieb51e4e7e1e989288a6f81f4757709669914a196
JIRA: STORPERF-21
Signed-off-by: mbeierl <mark.beierl@emc.com>
Diffstat (limited to 'storperf/main.py')
-rw-r--r-- | storperf/main.py | 75 |
1 files changed, 45 insertions, 30 deletions
diff --git a/storperf/main.py b/storperf/main.py index a40d656..2423b99 100644 --- a/storperf/main.py +++ b/storperf/main.py @@ -8,32 +8,24 @@ ############################################################################## import getopt import json -import logging import logging.config import os -import socket import sys -from fio.fio_invoker import FIOInvoker -from carbon.emitter import CarbonMetricTransmitter -from carbon.converter import JSONToCarbon +from test_executor import TestExecutor, UnknownWorkload """ """ + class Usage(Exception): + def __init__(self, msg): self.msg = msg -def event(metric): - metrics_converter = JSONToCarbon() - metrics_emitter = CarbonMetricTransmitter() - prefix = socket.getfqdn() - carbon_metrics = metrics_converter.convert_to_dictionary(metric, prefix) - metrics_emitter.transmit_metrics(carbon_metrics) def setup_logging( - default_path='logging.json', + default_path='storperf/logging.json', default_level=logging.INFO, env_key='LOG_CFG' ): @@ -51,39 +43,62 @@ def setup_logging( else: logging.basicConfig(level=default_level) -def main(argv=None): +def event(event_string): + logging.getLogger(__name__).info(event_string) + + +def main(argv=None): setup_logging() + test_executor = TestExecutor() + verbose = False + workloads = None if argv is None: argv = sys.argv try: try: - opts = getopt.getopt(argv[1:], "h", ["help"]) + opts, args = getopt.getopt(argv[1:], "t:w:scvh", + ["target=", + "workload=", + "nossd", + "nowarm", + "verbose", + "help", + ]) except getopt.error, msg: raise Usage(msg) + for o, a in opts: + if o in ("-h", "--help"): + print __doc__ + return 0 + elif o in ("-t", "--target"): + test_executor.filename = a + elif o in ("-v", "--verbose"): + verbose = True + elif o in ("-s", "--nossd"): + test_executor.precondition = False + elif o in ("-c", "--nowarm"): + test_executor.warm = False + elif o in ("-w", "--workload"): + workloads = a.split(",") + + test_executor.register_workloads(workloads) + except Usage, err: print >> sys.stderr, err.msg print >> sys.stderr, "for help use --help" return 2 + except UnknownWorkload, err: + print >> sys.stderr, err.msg + print >> sys.stderr, "for help use --help" + return 2 + + if (verbose): + test_executor.register(event) - for o in opts: - if o in ("-h", "--help"): - print __doc__ - return 0 - - simple_args = ['--rw=randread', '--size=32m', - '--directory=.', - '--iodepth=2', - '--direct=1', '--invalidate=1', '--numjobs=4', - '--name=random-read', '--output-format=json', - '--status-interval=60', - '--time_based', '--runtime=6000'] - - invoker = FIOInvoker() - invoker.register(event) - invoker.execute(simple_args) + test_executor.execute() if __name__ == "__main__": sys.exit(main()) |