Externalize soak parameters to a json file 27/4627/3
authorJerry Flood <jf9860@att.com>
Fri, 2 Jun 2017 20:43:02 +0000 (16:43 -0400)
committerJerry Flood <jf9860@att.com>
Mon, 5 Jun 2017 15:27:41 +0000 (11:27 -0400)
Issue: TEST-38
Change-Id: I90ae5ebaf7cdfed770dfe99c9ae600bb425abadf
Signed-off-by: Jerry Flood <jf9860@att.com>
loadtest/TestConfig.py
loadtest/TestController.py
loadtest/TestMain.py

index c22e875..b9b8112 100644 (file)
@@ -3,6 +3,8 @@ Created on Apr 7, 2017
 
 @author: jf9860
 '''
+import json
+
 class TestConfig(object):
     '''
     The profile defines a cycle of tests. Each entry is defined as
@@ -10,31 +12,37 @@ class TestConfig(object):
     '''
     profile =    [
         [0, ["health"]],
-        [5, ["instantiate", "distribute"]],
-        [300, ["distribute"]],
-        [300, ["distribute"]],
-        [300, ["distribute"]],
-        [300, ["distribute"]],
-        [300, ["distribute"]],
     ]
 
     duration=10
     cyclelength=60
 
-    def __init__(self, duration=10, cyclelength=1800, json=None):
+    def __init__(self, duration=None, cyclelength=None, json=None):
         '''
         Constructor
         '''
-        self.duration = duration
-        self.cyclelength = cyclelength
+        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 < cyclelength):
-            last = cyclelength - running_time
+        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)
index 751b13a..3ba0083 100644 (file)
@@ -23,7 +23,7 @@ class TestController(object):
         '''
         Constructor
         '''
-        self.config = TestConfig(duration=options.duration)
+        self.config = TestConfig(duration=options.duration, cyclelength=options.cyclelength, json=options.profile)
         logging.info(self.config.to_string())
 
     def execute(self):
index a9b57db..81c635f 100644 (file)
@@ -54,7 +54,9 @@ def main(argv=None):
         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.set_defaults(duration="60", logfile="")
+        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 != ""):