summaryrefslogtreecommitdiffstats
path: root/storperf/db/graphite_db.py
diff options
context:
space:
mode:
Diffstat (limited to 'storperf/db/graphite_db.py')
-rw-r--r--storperf/db/graphite_db.py44
1 files changed, 41 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