fix MOL-177: Fix logging
diff --git a/io_scenario/io.py b/io_scenario/io.py
index 4f7cbcf..b9f3b6f 100644
--- a/io_scenario/io.py
+++ b/io_scenario/io.py
@@ -4,9 +4,11 @@
import stat
import time
import json
+import Queue
import os.path
import argparse
import warnings
+import threading
import subprocess
@@ -492,9 +494,23 @@
"--prepare-only", default=False, dest='prepare_only',
action="store_true")
parser.add_argument("--concurrency", default=1, type=int)
+
+ parser.add_argument("--with-sensors", default="",
+ dest="with_sensors")
+
return parser.parse_args(argv)
+def sensor_thread(sensor_list, cmd_q, data_q):
+ while True:
+ try:
+ cmd_q.get(timeout=0.5)
+ data_q.put([])
+ return
+ except Queue.Empty:
+ pass
+
+
def main(argv):
argv_obj = parse_args(argv)
argv_obj.blocksize = ssize_to_kb(argv_obj.blocksize)
@@ -542,17 +558,33 @@
if dt > 0:
time.sleep(dt)
+ if argv_obj.with_sensors != "":
+ oq = Queue.Queue()
+ iq = Queue.Queue()
+ argv = (argv_obj.with_sensors, oq, iq)
+ th = threading.Thread(None, sensor_thread, None, argv)
+ th.daemon = True
+ th.start()
+
res, cmd = run_benchmark(argv_obj.type,
benchmark,
binary_path,
test_file_name,
argv_obj.prepare_only,
argv_obj.timeout)
+ if argv_obj.with_sensors != "":
+ iq.put(None)
+ stats = oq.get()
+ else:
+ stats = None
if not argv_obj.prepare_only:
res['__meta__'] = benchmark.__dict__.copy()
res['__meta__']['cmdline'] = cmd
+ if stats is not None:
+ res['__meta__']['sensor_data'] = stats
+
sys.stdout.write(json.dumps(res))
if not argv_obj.prepare_only: