summaryrefslogtreecommitdiffstats
path: root/storperf/fio
diff options
context:
space:
mode:
authormbeierl <mark.beierl@emc.com>2015-12-11 15:31:17 -0500
committermbeierl <mark.beierl@emc.com>2015-12-11 15:31:17 -0500
commitf099c8aaa7aeae805f7534382bfef789894abffb (patch)
treef0f1faf3def935d9a6fe6f0f2a1e26ddb3815dd2 /storperf/fio
parent5108c90fa276adb761d294c963d0903395950864 (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')
-rw-r--r--storperf/fio/fio_invoker.py46
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()