diff options
author | mbeierl <mark.beierl@emc.com> | 2015-12-11 15:31:17 -0500 |
---|---|---|
committer | mbeierl <mark.beierl@emc.com> | 2015-12-11 15:31:17 -0500 |
commit | f099c8aaa7aeae805f7534382bfef789894abffb (patch) | |
tree | f0f1faf3def935d9a6fe6f0f2a1e26ddb3815dd2 /storperf/fio/fio_invoker.py | |
parent | 5108c90fa276adb761d294c963d0903395950864 (diff) |
Workload reporting
Use a local db to track start/end times of runs so we
can go back to the carbon db and summarize values
at reporting time based off the raw data.
Change-Id: Ie62afd339fd1c15d82bc56c93c7cba5bd4f90fe2
JIRA: STORPERF-29
Signed-off-by: mbeierl <mark.beierl@emc.com>
Diffstat (limited to 'storperf/fio/fio_invoker.py')
-rw-r--r-- | storperf/fio/fio_invoker.py | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/storperf/fio/fio_invoker.py b/storperf/fio/fio_invoker.py index be1b37c..0b13349 100644 --- a/storperf/fio/fio_invoker.py +++ b/storperf/fio/fio_invoker.py @@ -7,11 +7,10 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -import subprocess import json -from threading import Thread - import logging +import subprocess +from threading import Thread class FIOInvoker(object): @@ -28,30 +27,33 @@ class FIOInvoker(object): def stdout_handler(self): self.json_body = "" - for line in iter(self.fio_process.stdout.readline, b''): - if line.startswith("fio"): - line = "" - continue - self.json_body += line - try: - if line == "}\n": - self.logger.debug( - "Have a json snippet: %s", self.json_body) - json_metric = json.loads(self.json_body) - self.json_body = "" - - for event_listener in self.event_listeners: - event_listener(json_metric) - - except Exception, e: - self.logger.error("Error parsing JSON: %s", e) - pass + try: + for line in iter(self.fio_process.stdout.readline, b''): + if line.startswith("fio"): + line = "" + continue + self.json_body += line + try: + if line == "}\n": + self.logger.debug( + "Have a json snippet: %s", self.json_body) + json_metric = json.loads(self.json_body) + self.json_body = "" + + for event_listener in self.event_listeners: + event_listener(json_metric) + + except Exception, e: + self.logger.error("Error parsing JSON: %s", e) + pass + except ValueError: + pass # We might have read from the closed socket, ignore it self.fio_process.stdout.close() def stderr_handler(self): for line in iter(self.fio_process.stderr.readline, b''): - print line + self.logger.error("FIO Error: %s", line) self.fio_process.stderr.close() |