support/testing/tests/package/test_gnuradio.py: new runtime test
Signed-off-by: Julien Olivain <ju.o@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
committed by
Thomas Petazzoni
parent
e22b450692
commit
ca3c4d0007
@@ -0,0 +1,68 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
from gnuradio import blocks
|
||||
from gnuradio import gr
|
||||
|
||||
INPUT_LENGTH = 100
|
||||
MUL_CONST = 3
|
||||
ADD_CONST = 5
|
||||
|
||||
|
||||
def compute_expected_data(input_data):
|
||||
# demux input
|
||||
even = input_data[::2]
|
||||
odd = input_data[1::2]
|
||||
|
||||
# multiply "even" list by MUL_CONST
|
||||
even = [x * MUL_CONST for x in even]
|
||||
|
||||
# add 5 to all "odd" elements
|
||||
odd = [y + ADD_CONST for y in odd]
|
||||
|
||||
# mux the two lists
|
||||
mux = [v for t in zip(even, odd) for v in t]
|
||||
|
||||
return mux
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
gr.log.info("Starting Buildroot Test for GNU Radio " + gr.version())
|
||||
|
||||
input_data = list(range(INPUT_LENGTH))
|
||||
|
||||
tb = gr.top_block()
|
||||
|
||||
# Create Gnuradio Blocks
|
||||
src = blocks.vector_source_i(input_data)
|
||||
demux = blocks.deinterleave(gr.sizeof_int)
|
||||
mul = blocks.multiply_const_ii(MUL_CONST)
|
||||
add = blocks.add_const_ii(ADD_CONST)
|
||||
mux = blocks.interleave(gr.sizeof_int)
|
||||
sink = blocks.vector_sink_i()
|
||||
|
||||
# Create connection in top block
|
||||
tb.connect(src, demux)
|
||||
tb.connect((demux, 0), mul)
|
||||
tb.connect((demux, 1), add)
|
||||
tb.connect(mul, (mux, 0))
|
||||
tb.connect(add, (mux, 1))
|
||||
tb.connect(mux, sink)
|
||||
|
||||
tb.run()
|
||||
|
||||
gnuradio_data = sink.data()
|
||||
expected_data = compute_expected_data(input_data)
|
||||
|
||||
# For easy debugging
|
||||
if gnuradio_data != expected_data:
|
||||
print("Gnuradio output:", gnuradio_data)
|
||||
print("Expected output:", expected_data)
|
||||
|
||||
assert gnuradio_data == expected_data
|
||||
|
||||
gr.log.info("Test PASSED")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user