summaryrefslogtreecommitdiffstats
path: root/robotframework-onap/loadtest
diff options
context:
space:
mode:
Diffstat (limited to 'robotframework-onap/loadtest')
-rw-r--r--robotframework-onap/loadtest/RunEte.py39
-rw-r--r--robotframework-onap/loadtest/TestConfig.py59
-rw-r--r--robotframework-onap/loadtest/TestController.py80
-rw-r--r--robotframework-onap/loadtest/TestMain.py93
-rw-r--r--robotframework-onap/loadtest/__init__.py0
5 files changed, 0 insertions, 271 deletions
diff --git a/robotframework-onap/loadtest/RunEte.py b/robotframework-onap/loadtest/RunEte.py
deleted file mode 100644
index 0d5df84..0000000
--- a/robotframework-onap/loadtest/RunEte.py
+++ /dev/null
@@ -1,39 +0,0 @@
-'''
-Created on Apr 7, 2017
-
-@author: jf9860
-'''
-from threading import Thread
-import subprocess
-import os
-from datetime import datetime
-import logging
-
-class RunEte(Thread):
- '''
- classdocs
- '''
- robot_test = ""
- robot_command = "runEteTag.sh"
- soaksubfolder = ""
- test_number =0
-
- def __init__(self, test_name, soaksubfolder, test_number):
- '''
- Constructor
- '''
- super(RunEte, self).__init__()
- self.robot_test = test_name
- self.soaksubfolder = soaksubfolder
- self.test_number = test_number
-
- def run(self):
- logging.info("{} ({}) started - {}".format(self.getName(), self.robot_test, str(datetime.now())))
- try:
- ''' Add the '/' here so that the shell doesn't require a subfolder... '''
- env = dict(os.environ, SOAKSUBFOLDER=self.soaksubfolder + "/")
- output = subprocess.check_output(["bash", self.robot_command, self.robot_test, self.test_number], shell=False, env=env)
- logging.info("{} ({}) {}".format(self.getName(), self.robot_test, output))
- except Exception as e:
- logging.error("{} ({}) Unexpected error {}".format(self.getName(), self.robot_test, repr(e)))
- logging.info("{} ({}) ended - {}".format(self.getName(), self.robot_test, str(datetime.now())))
diff --git a/robotframework-onap/loadtest/TestConfig.py b/robotframework-onap/loadtest/TestConfig.py
deleted file mode 100644
index b9b8112..0000000
--- a/robotframework-onap/loadtest/TestConfig.py
+++ /dev/null
@@ -1,59 +0,0 @@
-'''
-Created on Apr 7, 2017
-
-@author: jf9860
-'''
-import json
-
-class TestConfig(object):
- '''
- The profile defines a cycle of tests. Each entry is defined as
- [<seconds to wait>, [<list of ete tags to run after the wait]],
- '''
- profile = [
- [0, ["health"]],
- ]
-
- duration=10
- cyclelength=60
-
- def __init__(self, duration=None, cyclelength=None, json=None):
- '''
- Constructor
- '''
- if (json != None):
- self.parseConfig(json)
- if (duration != None):
- self.duration = duration
- if (cyclelength != None):
- self.cyclelength = cyclelength
- running_time = 0
- for p in self.profile:
- secs = p[0]
- running_time = running_time + secs
- if (running_time < self.cyclelength):
- last = self.cyclelength - running_time
- self.profile.append([last, []])
-
- def parseConfig(self, fileName):
- with open(fileName) as data_file:
- config = json.load(data_file)
- self.profile = config["profile"]
- self.cyclelength = config["cyclelength"]
- self.duration = config["duration"]
-
-
- def to_string(self):
- pstring = 'Cycle length is {} seconds'.format(self.cyclelength)
- pstring = '{}\nDuration is {} seconds'.format(pstring, self.duration)
- running_time = 0
- for p in self.profile:
- secs = p[0]
- running_time = running_time + secs
- for ete in p[1]:
- pstring = "{0}\n{1:08d} : {2:08d} : {3}".format(pstring, secs, running_time, ete)
- if (len(p[1]) == 0):
- pstring = "{0}\n{1:08d} : {2:08d} : {3}".format(pstring, secs, running_time, "")
- return pstring
-
-
diff --git a/robotframework-onap/loadtest/TestController.py b/robotframework-onap/loadtest/TestController.py
deleted file mode 100644
index 3ba0083..0000000
--- a/robotframework-onap/loadtest/TestController.py
+++ /dev/null
@@ -1,80 +0,0 @@
-'''
-Created on Apr 7, 2017
-
-@author: jf9860
-'''
-import time
-import os
-from loadtest.RunEte import RunEte
-from loadtest.TestConfig import TestConfig
-import logging
-
-class TestController(object):
- '''
- classdocs
- '''
-
- threads = {}
- threadid = 0
- soaksubfolder = 'soak_' + str(os.getpid())
- test_number = 0
-
- def __init__(self, options):
- '''
- Constructor
- '''
- self.config = TestConfig(duration=options.duration, cyclelength=options.cyclelength, json=options.profile)
- logging.info(self.config.to_string())
-
- def execute(self):
- starttime = time.time()
- endtime = starttime + self.config.duration
- profileindex = 0
- currenttime = time.time()
- logging.info("{}:{}:{}".format(starttime, endtime, currenttime))
- while currenttime < endtime:
- if (profileindex >= len(self.config.profile)):
- profileindex = 0
- profile = self.config.profile[profileindex]
- sleeptime = profile[0]
- currenttime = time.time()
- if ((currenttime + sleeptime) < endtime):
- time.sleep(sleeptime)
- self.schedule(profile)
- profileindex = profileindex + 1
- currenttime = time.time()
- else:
- currenttime = endtime
-
- for threadname in self.threads:
- logging.info("TestController waiting on " + threadname)
- t = self.threads[threadname]
- t.join()
- logging.info("Soak test completed")
-
- def schedule(self, profile):
- self.remove_completed_threads()
- tests = profile[1]
- for test in tests:
- self.schedule_one(test)
-
- def schedule_one(self, test):
- self.test_number = self.test_number + 1
- self.threadid = self.threadid + 1
- threadname = "RunEte_" + str(self.threadid)
- ''' test for max threads '''
- t = RunEte(test, self.soaksubfolder, str(self.test_number))
- t.setName(threadname)
- t.start()
- self.threads[threadname] = t
-
-
- def remove_completed_threads(self):
- toremove = []
- for threadname in self.threads:
- t = self.threads[threadname]
- if (t.isAlive() == False):
- toremove.append(threadname)
- for threadname in toremove:
- logging.info("Removing " + threadname)
- del(self.threads[threadname]) \ No newline at end of file
diff --git a/robotframework-onap/loadtest/TestMain.py b/robotframework-onap/loadtest/TestMain.py
deleted file mode 100644
index 3e8eb72..0000000
--- a/robotframework-onap/loadtest/TestMain.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/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()) \ No newline at end of file
diff --git a/robotframework-onap/loadtest/__init__.py b/robotframework-onap/loadtest/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/robotframework-onap/loadtest/__init__.py
+++ /dev/null