diff options
author | Andriy Gelman <andriy.gelman@gmail.com> | 2020-01-12 01:54:44 -0500 |
---|---|---|
committer | mormj <34754695+mormj@users.noreply.github.com> | 2020-03-02 18:15:24 -0500 |
commit | 1b362a2336f6f9b0db57021e280ff65e32409905 (patch) | |
tree | c8fcaef950c4661a652b90862e34a9629bdc42ae /gr-zeromq/python/zeromq/qa_zeromq_sub.py | |
parent | 5f18a419e2cec9f46d67147cae957d304d7a0195 (diff) |
gr-zeromq: Add optional key filtering
Fixes #2236
Allows to filter a multi-part message by key/topic on a sub source and
insert key/topic on a pub sink.
Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
Diffstat (limited to 'gr-zeromq/python/zeromq/qa_zeromq_sub.py')
-rwxr-xr-x | gr-zeromq/python/zeromq/qa_zeromq_sub.py | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/gr-zeromq/python/zeromq/qa_zeromq_sub.py b/gr-zeromq/python/zeromq/qa_zeromq_sub.py index 63d8a978ef..9e82420c24 100755 --- a/gr-zeromq/python/zeromq/qa_zeromq_sub.py +++ b/gr-zeromq/python/zeromq/qa_zeromq_sub.py @@ -48,7 +48,6 @@ class qa_zeromq_sub (gr_unittest.TestCase): def test_002 (self): vlen = 10 - # Construct multipart source data to publish raw_data = [numpy.array(range(vlen), 'float32')*100, numpy.array(range(vlen, 2*vlen), 'float32')*100] src_data = [a.tostring() for a in raw_data] @@ -67,6 +66,50 @@ class qa_zeromq_sub (gr_unittest.TestCase): expected_data = numpy.concatenate(raw_data) self.assertFloatTuplesAlmostEqual(sink.data(), expected_data) + def test_003 (self): + # Check that message is received when correct key is used + # Construct multipart source data to publish + vlen = 10 + raw_data = [numpy.array(range(vlen), 'float32')*100, numpy.array(range(vlen, 2*vlen), 'float32')*100] + src_data = [a.tostring() for a in raw_data] + + src_data = [b"filter_key"] + src_data + + zeromq_sub_source = zeromq.sub_source(gr.sizeof_float, vlen, self._address, key="filter_key") + sink = blocks.vector_sink_f(vlen) + self.tb.connect(zeromq_sub_source, sink) + + self.tb.start() + time.sleep(0.05) + self.pub_socket.send_multipart(src_data) + time.sleep(0.5) + self.tb.stop() + self.tb.wait() + + # Source block will concatenate everything together + expected_data = numpy.concatenate(raw_data) + self.assertFloatTuplesAlmostEqual(sink.data(), expected_data) + + def test_004 (self): + # Test that no message is received when wrong key is used + vlen = 10 + raw_data = [numpy.array(range(vlen), 'float32')*100, numpy.array(range(vlen, 2*vlen), 'float32')*100] + src_data = [a.tostring() for a in raw_data] + + src_data = [b"filter_key"] + src_data + + zeromq_sub_source = zeromq.sub_source(gr.sizeof_float, vlen, self._address, key="wrong_filter_key") + sink = blocks.vector_sink_f(vlen) + self.tb.connect(zeromq_sub_source, sink) + + self.tb.start() + time.sleep(0.05) + self.pub_socket.send_multipart(src_data) + time.sleep(0.5) + self.tb.stop() + self.tb.wait() + + assert( len(sink.data()) == 0 ) if __name__ == '__main__': gr_unittest.run(qa_zeromq_sub) |