diff options
author | Mark Beierl <mark.beierl@dell.com> | 2016-12-02 22:25:48 -0500 |
---|---|---|
committer | mbeierl <mark.beierl@dell.com> | 2016-12-05 13:11:08 -0500 |
commit | 9f5b776c1b5a54d2ca5942424111f3ff55d5737c (patch) | |
tree | 56bff326b62256d1c3108453dc3ef2d33dd7ea12 /storperf/db/graphite_db.py | |
parent | f56d13f2aac136b3b8762e06ca15688dd88ff502 (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.py | 36 |
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) |