“回声” 单元测试装置

发布于 2024-07-19 05:02:08 字数 681 浏览 7 评论 0原文

我目前正在为测试硬件通信端口的程序编写一些 CPPunit 测试(是的,我正在为测试器应用程序编写单元测试;-))。 我正在测试的类之一基本上是设备文件描述符的包装器; 我对文件描述符进行了 read() 和 write() 调用。 Linux 上是否有一个设备文件/驱动程序,如果您write() 到它,当您read() 时,您将读回您写入的内容(像 FIFO 队列设备)? 如果我有这个设备文件,那么将其替换为包装器中的实际设备文件将非常简单,并且可以轻松模拟可能发生的“环回”场景在现实世界的硬件上。


本质上我正在寻找的是一种假设的“/dev/echo”设备。

例如:设备的行为如下:

open("/dev/echo", O_RDRW);

write(fdEcho, 123, sizeof(int));
write(fdEcho, 456, sizeof(int));
write(fdEcho, 789, sizeof(int));

read(fdEcho, iData,  sizeof(int);  // returns 123
read(fdEcho, iData2, sizeof(int);  // returns 456
read(fdEcho, iData3, sizeof(int);  // returns 789

I'm currently writing up some CPPunit tests for a program that tests a hardware communication port (yes, I'm writing unit tests for a tester app ;-) ). One of the classes I'm testing is basically a wrapper around the device's file descriptor; I make read() and write() calls on the file descriptor. Is there a device file/driver on Linux where if you write() to it, when you read() from it you will read back what you wrote (like a FIFO queue device)? If I had this device file, it would be really simple to plop that in place of the actual device file in my wrapper and would make it easy to emulate "loopback" scenarios that might occur on real-world hardware.


Essentially what I'm looking for would be a sort of hypothetical "/dev/echo" device.

Ex: The device would behave as follows:

open("/dev/echo", O_RDRW);

write(fdEcho, 123, sizeof(int));
write(fdEcho, 456, sizeof(int));
write(fdEcho, 789, sizeof(int));

read(fdEcho, iData,  sizeof(int);  // returns 123
read(fdEcho, iData2, sizeof(int);  // returns 456
read(fdEcho, iData3, sizeof(int);  // returns 789

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

初心未许 2024-07-26 05:02:08

为什么不在文件系统中使用 UNIX 管道?

mkfifo /dev/test
echo test > /dev/test

在第二个终端上:

cat /dev/test

然后第一个终端将解锁,第二个终端将显示文本!

Why don't you use a UNIX pipe in the filesystem?

mkfifo /dev/test
echo test > /dev/test

on a second terminal:

cat /dev/test

Then the first will unblock and the second will show the text!

满栀 2024-07-26 05:02:08

您可以使用

mknod /dev/echo p

第一个参数是文件名(可以是任何文件名,不必在 /dev 中),第二个参数是 p 表示“pipe” 。

参考:http://www.unix.com/ unix-dummies-questions-answers/22205-unix-pipe.html

您还可以查看 pipe() C 函数:http://www.manpagez.com/man/2/pipe/

You can make one with

mknod /dev/echo p

First argument is the filename (it can be any filename, doesn't have to be in /dev), second argument is p for "pipe".

Reference: http://www.unix.com/unix-dummies-questions-answers/22205-unix-pipe.html

You could also look into the pipe() C function: http://www.manpagez.com/man/2/pipe/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文