summaryrefslogtreecommitdiffstats
path: root/storperf/db/graphite_db.py
diff options
context:
space:
mode:
authorMark Beierl <mark.beierl@dell.com>2016-12-02 22:25:48 -0500
committermbeierl <mark.beierl@dell.com>2016-12-05 13:11:08 -0500
commit9f5b776c1b5a54d2ca5942424111f3ff55d5737c (patch)
tree56bff326b62256d1c3108453dc3ef2d33dd7ea12 /storperf/db/graphite_db.py
parentf56d13f2aac136b3b8762e06ca15688dd88ff502 (diff)
Steady state detection
Detection of steady state after 10+ samples of data Change-Id: I29368b06188c6370d17b3d567fece6486d171235 JIRA: STORPERF-72 STORPERF-73 Signed-off-by: Mark Beierl <mark.beierl@dell.com>
Diffstat (limited to 'storperf/db/graphite_db.py')
-rw-r--r--storperf/db/graphite_db.py36
1 files changed, 35 insertions, 1 deletions
diff --git a/storperf/db/graphite_db.py b/storperf/db/graphite_db.py
index c44d2aa..8be91c8 100644
--- a/storperf/db/graphite_db.py
+++ b/storperf/db/graphite_db.py
@@ -1,4 +1,3 @@
-from storperf.db.job_db import JobDB
import calendar
import json
import logging
@@ -6,6 +5,8 @@ import time
import requests
+from storperf.db.job_db import JobDB
+
class GraphiteDB(object):
@@ -15,6 +16,27 @@ class GraphiteDB(object):
self._job_db = JobDB()
self.logger = logging.getLogger(__name__)
+ def fetch_series(self, workload, metric, io_type, time, duration):
+
+ series = []
+ end = time
+ start = end - duration
+
+ request = ("http://127.0.0.1:8000/render/?target="
+ "averageSeries(%s.*.jobs.1.%s.%s)"
+ "&format=json"
+ "&from=%s"
+ "&until=%s" %
+ (workload, io_type, metric,
+ start, end))
+ self.logger.debug("Calling %s" % (request))
+
+ response = requests.get(request)
+ if (response.status_code == 200):
+ series = self._series_results(json.loads(response.content))
+
+ return series
+
def fetch_averages(self, workload):
workload_executions = self._job_db.fetch_workloads(workload)
@@ -115,6 +137,18 @@ class GraphiteDB(object):
return average
+ def _series_results(self, results):
+
+ series = []
+
+ for item in results:
+ datapoints = item['datapoints']
+ for datapoint in datapoints:
+ if datapoint[0] is not None:
+ series.append([datapoint[1], datapoint[0]])
+
+ return series
+
def make_fullname_pattern(self, workload):
parts = workload.split('.')
wildcards_needed = 7 - len(parts)