1

我有一个代码库,我一直在使用 CppUnit 进行单元测试。我现在正在向项目中添加一些 MPI 代码,并且我想对我在 MPI 之上构建的一些抽象进行单元测试。例如,我编写了一些代码来管理单生产者/多消费者关系,其中消费者请求工作,生产者序列化下一部分工作以发送给消费者,我想测试这种交互通过在生产者中生成一些虚假工作项的测试,将它们分发给消费者,然后消费者将某种校验和发送回消费者,以确保所有内容都已分发并且没有死锁等。

有没有人有什么在这里最有效的经验?我一直在思考的一些事情:

  1. 让所有进程执行测试运行程序以便它们都以相同的顺序执行测试功能是否合理?还是只让主运行测试运行程序并让它向从属设备发送广播以告诉他们接下来要做什么更好(可能使用某种查找表将命令映射到测试功能)?
  2. 在从属设备中使用 CPPUNIT_ASSERT 是否合理,或者是否应该将所有信息发送回主设备以进行断言?如果 slaves 可以断言,应该如何组合所有结果以获得单个输出日志?
  3. 应该如何处理测试失败,以便一个进程中抛出的异常不会导致同步问题,例如另一个进程正在等待匹配的 MPI_Send 现在永远不会发生的 MPI_Recv?
4

0 回答 0