summaryrefslogtreecommitdiffstats
path: root/storperf/fio/fio_invoker.py
diff options
context:
space:
mode:
Diffstat (limited to 'storperf/fio/fio_invoker.py')
-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()