Search code examples
pythontestinggnuradio

QA_test for multiple outputs on gnuradio with different types


I have written a gnuradio block with 1 input and 2 outputs. Now I'm writing the qa_test in python. the code below is to test a block with 1 input and 1 output. How can I adapt the code to test two outputs of different types (complex and float)

src_data = (0, 1, -2, 5.5, -0.5)
expected_result = (0, 2, -4, 11, -1)
src = blocks.vector_source_f (src_data)
mult = multiply_py_ff (2)
snk = blocks.vector_sink_f ()
self.tb.connect (src, mult)
self.tb.connect (mult, snk)
self.tb.run ()
result_data = snk.data ()
self.assertFloatTuplesAlmostEqual (expected_result, result_data, 6)

Solution

  • How can I adapt the code to test two outputs of different types (complex and float)

    Try creating two sink blocks - one vector_sink_f and one vector_sink_c and then connecting the corresponding outputs of the block under test to them using the connect function by specifying src_port and dst_port. See https://www.gnuradio.org/doc/doxygen/classgr_1_1hier__block2.html#a915d1d5b4b6d8a9db4211d9a4507c955

    It should be something like this

    tb.connect((block,0), (snk1,0))
    tb.connect((block,1), (snk2,0))
    

    An example from pfb_channelizer tests