summaryrefslogtreecommitdiffstats
path: root/storperf
diff options
context:
space:
mode:
authorMark Beierl <mark.beierl@emc.com>2016-05-04 22:53:07 -0400
committerMark Beierl <mark.beierl@emc.com>2016-05-06 14:13:52 -0400
commitda56b4dac702713045aaeeedbab9234e1825ffe0 (patch)
treeae5594911e25458bada74916f01e82520b2f423c /storperf
parent05e863781ce6746fabec176d1fc5f7454f2cdd73 (diff)
Add Stats report and Swagger UI
Add Swagger web ui at /swagger Add ability to fetch read/write latency status via ReST ui Can now delete where stack was removed from OpenStack but not from the storperf DB Change to use Floating IPs instead of private IP Fix delete bug where there was no dependency on resources in the resource group. JIRA: STORPERF-19 JIRA: STORPERF-20 Change-Id: I1d9627d81f3c309b178a9b68cc306a4101c1a231 Signed-off-by: Mark Beierl <mark.beierl@emc.com>
Diffstat (limited to 'storperf')
-rw-r--r--storperf/db/graphite_db.py44
-rw-r--r--storperf/test_executor.py3
2 files changed, 44 insertions, 3 deletions
diff --git a/storperf/db/graphite_db.py b/storperf/db/graphite_db.py
index c62340c..8fef071 100644
--- a/storperf/db/graphite_db.py
+++ b/storperf/db/graphite_db.py
@@ -1,6 +1,8 @@
from storperf.db.job_db import JobDB
+import calendar
import json
import logging
+import time
import requests
@@ -41,18 +43,54 @@ class GraphiteDB(object):
for io_type in ['read', 'write']:
for workload_name, times in workload_names.iteritems():
workload_pattern = self.make_fullname_pattern(workload_name)
+ short_name = '.'.join(workload_name.split('.')[1:6])
+ start = times[0]
+ end = times[1]
+
+ if end is None:
+ end = str(calendar.timegm(time.gmtime()))
+ averages[short_name + ".duration"] = \
+ (int(end) - int(start))
+
+ key = short_name + "." + io_type
+
request = ("http://127.0.0.1:8000/render/?target="
"averageSeries(%s.jobs.1.%s.lat.mean)"
"&format=json"
"&from=%s"
"&until=%s" %
- (workload_pattern, io_type, times[0], times[1]))
+ (workload_pattern, io_type, start, end))
+ self.logger.debug("Calling %s" % (request))
+
+ response = requests.get(request)
+ if (response.status_code == 200):
+ averages[key + ".latency"] = \
+ self._average_results(json.loads(response.content))
+
+ request = ("http://127.0.0.1:8000/render/?target="
+ "averageSeries(%s.jobs.1.%s.bw)"
+ "&format=json"
+ "&from=%s"
+ "&until=%s" %
+ (workload_pattern, io_type, start, end))
+ self.logger.debug("Calling %s" % (request))
+
+ response = requests.get(request)
+ if (response.status_code == 200):
+ averages[key + ".throughput"] = \
+ self._average_results(json.loads(response.content))
+
+ request = ("http://127.0.0.1:8000/render/?target="
+ "averageSeries(%s.jobs.1.%s.iops)"
+ "&format=json"
+ "&from=%s"
+ "&until=%s" %
+ (workload_pattern, io_type, start, end))
self.logger.debug("Calling %s" % (request))
response = requests.get(request)
if (response.status_code == 200):
- short_name = '.'.join(workload_name.split('.')[1:6])
- averages[short_name + "." + io_type] = \
+ averages[key + ".iops"] = \
self._average_results(json.loads(response.content))
return averages
diff --git a/storperf/test_executor.py b/storperf/test_executor.py
index c0ea295..309fbcb 100644
--- a/storperf/test_executor.py
+++ b/storperf/test_executor.py
@@ -122,8 +122,11 @@ class TestExecutor(object):
def terminate(self):
self._terminated = True
+ terminated_hosts = []
for workload in self._workload_executors:
workload.terminate()
+ terminated_hosts.append(workload.remote_host)
+ return terminated_hosts
def execute_workloads(self):
self._terminated = False