#!/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, 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())