summaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2017-03-13[OS-144] Removed prop markingsJimmy Forsyth1-0/+0
Change-Id: I6e03b4fef46a109f2b6332c0029fc180a5857847 Signed-off-by: Jimmy Forsyth <jf2512@att.com>
2017-02-07Initial OpenECOMP VID ASDC Client commitDR695H32-0/+5356
Change-Id: I7ce3f07829106a386240325a67ab533f85332d42 Signed-off-by: DR695H <dr695h@att.com>
n28' href='#n28'>28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
#!/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())