summaryrefslogtreecommitdiff
path: root/gr-blocks/python
diff options
context:
space:
mode:
Diffstat (limited to 'gr-blocks/python')
-rw-r--r--gr-blocks/python/blocks/qa_moving_average.py65
-rwxr-xr-xgr-blocks/python/blocks/qa_socket_pdu.py28
2 files changed, 93 insertions, 0 deletions
diff --git a/gr-blocks/python/blocks/qa_moving_average.py b/gr-blocks/python/blocks/qa_moving_average.py
index 2c58805925..53b240fe7f 100644
--- a/gr-blocks/python/blocks/qa_moving_average.py
+++ b/gr-blocks/python/blocks/qa_moving_average.py
@@ -45,6 +45,10 @@ class test_moving_average(gr_unittest.TestCase):
def tearDown(self):
self.tb = None
+ # These tests will always pass and are therefore useless. 100 random numbers [-1,1) are
+ # getting summed up and scaled with 0.001. Then, an assertion verifies a result near 0,
+ # which is the case even if the block is malfunctioning.
+
def test_01(self):
tb = self.tb
@@ -87,5 +91,66 @@ class test_moving_average(gr_unittest.TestCase):
# make sure result is close to zero
self.assertComplexTuplesAlmostEqual(expected_result, dst_data, 1)
+ # This tests implement own moving average to verify correct behaviour of the block
+
+ def test_03(self):
+ tb = self.tb
+
+ N = 10000 # number of samples
+ history = 100 # num of samples to average
+ data = make_random_float_tuple(N, 1) # generate random data
+
+ # pythonic MA filter
+ data_padded = (history-1)*[0.0]+list(data) # history
+ expected_result = []
+ moving_sum = sum(data_padded[:history-1])
+ for i in range(N):
+ moving_sum += data_padded[i+history-1]
+ expected_result.append(moving_sum)
+ moving_sum -= data_padded[i]
+
+ src = blocks.vector_source_f(data, False)
+ op = blocks.moving_average_ff(history, 1)
+ dst = blocks.vector_sink_f()
+
+ tb.connect(src, op)
+ tb.connect(op, dst)
+ tb.run()
+
+ dst_data = dst.data()
+
+ # make sure result is close to zero
+ self.assertFloatTuplesAlmostEqual(expected_result, dst_data, 4)
+
+ def test_04(self):
+ tb = self.tb
+
+ N = 10000 # number of samples
+ history = 100 # num of samples to average
+ data = make_random_complex_tuple(N, 1) # generate random data
+
+ # pythonic MA filter
+ data_padded = (history-1)*[0.0+1j*0.0]+list(data) # history
+ expected_result = []
+ moving_sum = sum(data_padded[:history-1])
+ for i in range(N):
+ moving_sum += data_padded[i+history-1]
+ expected_result.append(moving_sum)
+ moving_sum -= data_padded[i]
+
+ src = blocks.vector_source_c(data, False)
+ op = blocks.moving_average_cc(history, 1)
+ dst = blocks.vector_sink_c()
+
+ tb.connect(src, op)
+ tb.connect(op, dst)
+ tb.run()
+
+ dst_data = dst.data()
+
+ # make sure result is close to zero
+ self.assertComplexTuplesAlmostEqual(expected_result, dst_data, 4)
+
+
if __name__ == '__main__':
gr_unittest.run(test_moving_average, "test_moving_average.xml")
diff --git a/gr-blocks/python/blocks/qa_socket_pdu.py b/gr-blocks/python/blocks/qa_socket_pdu.py
index db9f53c71e..5285585340 100755
--- a/gr-blocks/python/blocks/qa_socket_pdu.py
+++ b/gr-blocks/python/blocks/qa_socket_pdu.py
@@ -100,6 +100,34 @@ class qa_socket_pdu (gr_unittest.TestCase):
#self.tb.connect(pdu_to_ts, head, sink)
self.tb.run()
+ def test_004 (self):
+ # Test that the TCP server can stream PDUs <= the MTU size.
+ port = str(random.Random().randint(0, 30000) + 10000)
+ mtu = 10000
+ srcdata = tuple([x % 256 for x in xrange(mtu)])
+ data = pmt.init_u8vector(srcdata.__len__(), srcdata)
+ pdu_msg = pmt.cons(pmt.PMT_NIL, data)
+
+ self.pdu_source = blocks.message_strobe(pdu_msg, 500)
+ self.pdu_send = blocks.socket_pdu("TCP_SERVER", "localhost", port, mtu)
+ self.pdu_recv = blocks.socket_pdu("TCP_CLIENT", "localhost", port, mtu)
+ self.pdu_sink = blocks.message_debug()
+
+ self.tb.msg_connect(self.pdu_source, "strobe", self.pdu_send, "pdus")
+ self.tb.msg_connect(self.pdu_recv, "pdus", self.pdu_sink, "store")
+
+ self.tb.start()
+ time.sleep(1)
+ self.tb.stop()
+ self.tb.wait()
+
+ received = self.pdu_sink.get_message(0)
+ received_data = pmt.cdr(received)
+ msg_data = []
+ for i in xrange(mtu):
+ msg_data.append(pmt.u8vector_ref(received_data, i))
+ self.assertEqual(srcdata, tuple(msg_data))
+
if __name__ == '__main__':
gr_unittest.run(qa_socket_pdu, "qa_socket_pdu.xml")