diff options
Diffstat (limited to 'storperf/db')
-rw-r--r-- | storperf/db/graphite_db.py | 111 | ||||
-rw-r--r-- | storperf/db/job_db.py | 5 |
2 files changed, 11 insertions, 105 deletions
diff --git a/storperf/db/graphite_db.py b/storperf/db/graphite_db.py index 8be91c8..c8a2d35 100644 --- a/storperf/db/graphite_db.py +++ b/storperf/db/graphite_db.py @@ -1,7 +1,14 @@ -import calendar +############################################################################## +# Copyright (c) 2016 EMC and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + import json import logging -import time import requests @@ -37,106 +44,6 @@ class GraphiteDB(object): return series - def fetch_averages(self, workload): - workload_executions = self._job_db.fetch_workloads(workload) - - # Create a map of job runs - workload_names = {} - for workload_execution in workload_executions: - name = '.'.join(workload_execution[0].split('.')[0:6]) - if name in workload_names: - workload_record = workload_names[name] - start = workload_record[0] - end = workload_record[1] - else: - start = None - end = None - - if start is None or workload_execution[1] < start: - start = workload_execution[1] - - if end is None or workload_execution[2] > end: - end = workload_execution[2] - - workload_names[name] = [start, end] - - averages = {} - - 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, 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): - averages[key + ".iops"] = \ - self._average_results(json.loads(response.content)) - - return averages - - def _average_results(self, results): - - for item in results: - datapoints = item['datapoints'] - - total = 0 - count = 0 - - for datapoint in datapoints: - if datapoint[0] is not None: - total += datapoint[0] - count += 1 - - if count > 0: - average = total / count - else: - average = total - - return average - def _series_results(self, results): series = [] diff --git a/storperf/db/job_db.py b/storperf/db/job_db.py index 05160ec..eabcb54 100644 --- a/storperf/db/job_db.py +++ b/storperf/db/job_db.py @@ -58,9 +58,9 @@ class JobDB(object): cursor.execute('''CREATE TABLE job_summary (job_id text, summary text)''') - self.logger.debug("Created job table") + self.logger.debug("Created job summary table") except OperationalError: - self.logger.debug("Job table exists") + self.logger.debug("Job summary table exists") cursor.execute('SELECT * FROM jobs') cursor.execute('SELECT * FROM job_params') @@ -250,6 +250,5 @@ class JobDB(object): if (row is None): break params[row[0]] = row[1] - db.close() return params |