REDHAWK SDR 组件的首选单元测试

Preferred Unit Test for REDHAWK SDR Component

我正在寻找 REDHAWK 组件的单元测试示例。特别是,我想要一个测试,我可以向输入端口提供数据包并验证从输出端口推送正确的数据包。使用 REDHAWK 有更好的方法吗?我正在努力寻找文档或示例。

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

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

这是 HardLimit 组件使用的示例:

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

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

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

最后,tearDown 方法停止并释放Component 并清理source 和sink。

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

from ossie.utils import sb
help(sb)

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