REDHAWK SDR组件的首选单元测试

时间:2016-01-02 14:29:44

标签: redhawksdr

我正在寻找REDHAWK组件的单元测试示例。特别是,我想测试一下我可以向输入端口提供数据包并验证是否从输出端口推送了正确的数据包。 REDHAWK是否有首选方法?我很难找到文档或示例。

2 个答案:

答案 0 :(得分:2)

以下是HardLimit组件使用的示例:

https://github.com/RedhawkSDR/HardLimit/blob/develop-1.0/tests/test_HardLimit.py

基本上,在setUp方法中,创建来自REDHAWK Sandbox(sb)模块的DataSource和DataSink,与Component一起启动,然后以适当的顺序连接。

接下来,任何以' test'开头的方法由单元测试套件运行。通常,这些方法将向DataSource提供一组数据,这些数据将数据格式化为BULKIO格式并推送到Component。假设组件正常工作,它会将数据推送到DataSink,可以定期检查新数据。收到数据后,可以在调用tearDown方法之前对其进行适当验证。

最后,tearDown方法停止并释放Component并清理源和接收器。

这是测试组件的基本方法。有更多选项可用于获取和下载数据,可以通过在python解释器中运行以下命令找到:

from ossie.utils import sb
help(sb)

这还将提供绘制数据和音频播放以及其他各种实用程序的方法。

答案 1 :(得分:-1)

RedHawk很容易添加几个新组件:一个用于向正在测试的组件发送数据包,另一个用于接收输出数据包。我使用sender.cpp中的serviceFunction()创建发送者或源数据包,如果每次调用返回NORMAL,则定期调用,如果要控制速率,则添加usleep()。它应该发送一个有效的数据包到它的这个> PortName-> MethodName()。如果你想测试被测组件如何处理它们,它也可以随机发送坏包。您甚至可以添加组件属性来设置速率(使用usleep中的值)。

接收器或接收器组件可以在MethodName()中的port_impl.cpp中接收数据包,并执行您想要测试其有效性的任何测试,并记录测试结果或使用cout<