[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 01/01: gr-zeromq: resolve race condition in
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 01/01: gr-zeromq: resolve race condition in qa tests |
Date: |
Fri, 7 Apr 2017 04:32:54 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
jcorgan pushed a commit to branch maint
in repository gnuradio.
commit b163c7e26a61245202e07aa6e5881763ed6acaaf
Author: Andrej Rode <address@hidden>
Date: Sun Apr 2 20:52:20 2017 -0700
gr-zeromq: resolve race condition in qa tests
---
gr-zeromq/python/zeromq/probe_manager.py | 2 +-
gr-zeromq/python/zeromq/qa_zeromq_pub.py | 6 +++++-
gr-zeromq/python/zeromq/qa_zeromq_pubsub.py | 20 +++++++++++++-------
gr-zeromq/python/zeromq/qa_zeromq_pushpull.py | 20 +++++++++++++-------
gr-zeromq/python/zeromq/qa_zeromq_reqrep.py | 20 +++++++++++++-------
5 files changed, 45 insertions(+), 23 deletions(-)
diff --git a/gr-zeromq/python/zeromq/probe_manager.py
b/gr-zeromq/python/zeromq/probe_manager.py
index c30e6ea..9facb33 100644
--- a/gr-zeromq/python/zeromq/probe_manager.py
+++ b/gr-zeromq/python/zeromq/probe_manager.py
@@ -38,7 +38,7 @@ class probe_manager():
self.poller.register(socket, zmq.POLLIN)
def watcher(self):
- poll = dict(self.poller.poll(0))
+ poll = dict(self.poller.poll(None))
for i in self.interfaces:
# i = (socket, data_type, callback_func)
if poll.get(i[0]) == zmq.POLLIN:
diff --git a/gr-zeromq/python/zeromq/qa_zeromq_pub.py
b/gr-zeromq/python/zeromq/qa_zeromq_pub.py
index 6f08aa5..cc856d5 100755
--- a/gr-zeromq/python/zeromq/qa_zeromq_pub.py
+++ b/gr-zeromq/python/zeromq/qa_zeromq_pub.py
@@ -24,6 +24,7 @@
from gnuradio import gr, gr_unittest
from gnuradio import blocks, zeromq
from gnuradio import eng_notation
+import threading
class qa_zeromq_pub (gr_unittest.TestCase):
@@ -42,8 +43,11 @@ class qa_zeromq_pub (gr_unittest.TestCase):
self.tb.connect(src, zeromq_pub_sink)
self.probe_manager = zeromq.probe_manager()
self.probe_manager.add_socket("tcp://127.0.0.1:5555", 'float32',
self.recv_data)
+ zmq_pull_t = threading.Thread(target=self.probe_manager.watcher)
+ zmq_pull_t.daemon = True
+ zmq_pull_t.start()
self.tb.run()
- self.probe_manager.watcher()
+ zmq_pull_t.join()
self.assertFloatTuplesAlmostEqual(self.rx_data, src_data)
def recv_data (self, data):
diff --git a/gr-zeromq/python/zeromq/qa_zeromq_pubsub.py
b/gr-zeromq/python/zeromq/qa_zeromq_pubsub.py
index 2902f9e..bb853d8 100755
--- a/gr-zeromq/python/zeromq/qa_zeromq_pubsub.py
+++ b/gr-zeromq/python/zeromq/qa_zeromq_pubsub.py
@@ -28,10 +28,12 @@ import time
class qa_zeromq_pubsub (gr_unittest.TestCase):
def setUp (self):
- self.tb = gr.top_block ()
+ self.send_tb = gr.top_block()
+ self.recv_tb = gr.top_block()
def tearDown (self):
- self.tb = None
+ self.send_tb = None
+ self.recv_tb = None
def test_001 (self):
vlen = 10
@@ -40,12 +42,16 @@ class qa_zeromq_pubsub (gr_unittest.TestCase):
zeromq_pub_sink = zeromq.pub_sink(gr.sizeof_float, vlen,
"tcp://127.0.0.1:5556", 0)
zeromq_sub_source = zeromq.sub_source(gr.sizeof_float, vlen,
"tcp://127.0.0.1:5556", 0)
sink = blocks.vector_sink_f(vlen)
- self.tb.connect(src, zeromq_pub_sink)
- self.tb.connect(zeromq_sub_source, sink)
- self.tb.start()
+ self.send_tb.connect(src, zeromq_pub_sink)
+ self.recv_tb.connect(zeromq_sub_source, sink)
+ self.recv_tb.start()
time.sleep(0.25)
- self.tb.stop()
- self.tb.wait()
+ self.send_tb.start()
+ time.sleep(0.25)
+ self.recv_tb.stop()
+ self.send_tb.stop()
+ self.recv_tb.wait()
+ self.send_tb.wait()
self.assertFloatTuplesAlmostEqual(sink.data(), src_data)
if __name__ == '__main__':
diff --git a/gr-zeromq/python/zeromq/qa_zeromq_pushpull.py
b/gr-zeromq/python/zeromq/qa_zeromq_pushpull.py
index d09b92c..388f7ff 100755
--- a/gr-zeromq/python/zeromq/qa_zeromq_pushpull.py
+++ b/gr-zeromq/python/zeromq/qa_zeromq_pushpull.py
@@ -26,10 +26,12 @@ import time
class qa_zeromq_pushpull (gr_unittest.TestCase):
def setUp (self):
- self.tb = gr.top_block ()
+ self.send_tb = gr.top_block()
+ self.recv_tb = gr.top_block()
def tearDown (self):
- self.tb = None
+ self.send_tb = None
+ self.recv_tb = None
def test_001 (self):
vlen = 10
@@ -38,12 +40,16 @@ class qa_zeromq_pushpull (gr_unittest.TestCase):
zeromq_push_sink = zeromq.push_sink(gr.sizeof_float, vlen,
"tcp://127.0.0.1:5557")
zeromq_pull_source = zeromq.pull_source(gr.sizeof_float, vlen,
"tcp://127.0.0.1:5557", 0)
sink = blocks.vector_sink_f(vlen)
- self.tb.connect(src, zeromq_push_sink)
- self.tb.connect(zeromq_pull_source, sink)
- self.tb.start()
+ self.send_tb.connect(src, zeromq_push_sink)
+ self.recv_tb.connect(zeromq_pull_source, sink)
+ self.recv_tb.start()
time.sleep(0.25)
- self.tb.stop()
- self.tb.wait()
+ self.send_tb.start()
+ time.sleep(0.25)
+ self.recv_tb.stop()
+ self.send_tb.stop()
+ self.recv_tb.wait()
+ self.send_tb.wait()
self.assertFloatTuplesAlmostEqual(sink.data(), src_data)
if __name__ == '__main__':
diff --git a/gr-zeromq/python/zeromq/qa_zeromq_reqrep.py
b/gr-zeromq/python/zeromq/qa_zeromq_reqrep.py
index a50e684..a5a3d33 100755
--- a/gr-zeromq/python/zeromq/qa_zeromq_reqrep.py
+++ b/gr-zeromq/python/zeromq/qa_zeromq_reqrep.py
@@ -29,10 +29,12 @@ import time
class qa_zeromq_reqrep (gr_unittest.TestCase):
def setUp (self):
- self.tb = gr.top_block ()
+ self.send_tb = gr.top_block()
+ self.recv_tb = gr.top_block()
def tearDown (self):
- self.tb = None
+ self.send_tb = None
+ self.recv_tb = None
def test_001 (self):
vlen = 10
@@ -41,12 +43,16 @@ class qa_zeromq_reqrep (gr_unittest.TestCase):
zeromq_rep_sink = zeromq.rep_sink(gr.sizeof_float, vlen,
"tcp://127.0.0.1:5558", 0)
zeromq_req_source = zeromq.req_source(gr.sizeof_float, vlen,
"tcp://127.0.0.1:5558", 0)
sink = blocks.vector_sink_f(vlen)
- self.tb.connect(src, zeromq_rep_sink)
- self.tb.connect(zeromq_req_source, sink)
- self.tb.start()
+ self.send_tb.connect(src, zeromq_rep_sink)
+ self.recv_tb.connect(zeromq_req_source, sink)
+ self.recv_tb.start()
time.sleep(0.25)
- self.tb.stop()
- self.tb.wait()
+ self.send_tb.start()
+ time.sleep(0.25)
+ self.recv_tb.stop()
+ self.send_tb.stop()
+ self.recv_tb.wait()
+ self.send_tb.wait()
self.assertFloatTuplesAlmostEqual(sink.data(), src_data)
if __name__ == '__main__':