| #!/usr/bin/env python |
| # encoding: utf-8 |
| ''' |
| loadtest.TestMain -- shortdesc |
| |
| loadtest.TestMain is a description |
| |
| It defines classes_and_methods |
| |
| @author: user_name |
| |
| @copyright: 2017 organization_name. All rights reserved. |
| |
| @license: license |
| |
| @contact: user_email |
| @deffield updated: Updated |
| ''' |
| |
| import sys |
| import os |
| |
| from optparse import OptionParser, Values |
| |
| from loadtest.TestController import TestController |
| |
| __all__ = [] |
| __version__ = 0.1 |
| __date__ = '2017-04-07' |
| __updated__ = '2017-04-07' |
| |
| DEBUG = 1 |
| TESTRUN = 0 |
| PROFILE = 0 |
| import time |
| import logging |
| |
| def main(argv=None): |
| '''Command line options.''' |
| program_name = os.path.basename(sys.argv[0]) |
| program_version = "v0.1" |
| program_build_date = "%s" % __updated__ |
| |
| program_version_string = '%%prog %s (%s)' % (program_version, program_build_date) |
| #program_usage = '''usage: spam two eggs''' # optional - will be autogenerated by optparse |
| program_longdesc = '''''' # optional - give further explanation about what the program does |
| program_license = "Copyright 2017 user_name (organization_name) \ |
| Licensed under the Apache License 2.0\nhttp://www.apache.org/licenses/LICENSE-2.0" |
| |
| if argv is None: |
| argv = sys.argv[1:] |
| try: |
| # setup option parser |
| parser = OptionParser(version=program_version_string, epilog=program_longdesc, description=program_license) |
| parser.add_option("-d", "--duration", dest="duration", help="duration of soak test in seconds [default: %default]", type=int) |
| parser.add_option("-l", "--logfile", dest="logfile", help="Full path soak log file name") |
| parser.add_option("-c", "--cyclelength", dest="cyclelength", help="Length of a single cycle through the config.\nMust be longer than a single iteration", type=int) |
| parser.add_option("-p", "--profile", dest="profile", help="Filename of json profile file") |
| parser.set_defaults(logfile="") |
| (opts, args) = parser.parse_args(argv) |
| |
| if (opts.logfile != ""): |
| logging.basicConfig(filename=opts.logfile, level=logging.DEBUG) |
| else: |
| logging.basicConfig(level=logging.DEBUG) |
| controller = TestController(opts) |
| controller.execute() |
| |
| except Exception as e: |
| indent = len(program_name) * " " |
| sys.stderr.write(program_name + ": " + repr(e) + "\n") |
| sys.stderr.write(indent + " for help use --help") |
| return 2 |
| |
| |
| if __name__ == "__main__": |
| if DEBUG: |
| print("debug") |
| if TESTRUN: |
| import doctest |
| doctest.testmod() |
| if PROFILE: |
| import cProfile |
| import pstats |
| profile_filename = 'loadtest.TestMain_profile.txt' |
| cProfile.run('main()', profile_filename) |
| statsfile = open("profile_stats.txt", "wb") |
| p = pstats.Stats(profile_filename, stream=statsfile) |
| stats = p.strip_dirs().sort_stats('cumulative') |
| stats.print_stats() |
| statsfile.close() |
| sys.exit(0) |
| sys.exit(main()) |