我正在寻找一种更简单的方法来测试我的应用程序,以防止在读取某些块时产生i/o读取错误的错误块设备.尝试使用已知坏块的物理硬盘很痛苦,我想找到一个软件解决方案(如果存在的话).
我确实找到了Linux磁盘故障模拟驱动程序,它允许创建一个接口,可以配置为在读取某些范围的块时生成错误,但它适用于2.4 Linux内核并且尚未针对2.6进行更新.
什么是完美的将是一个losetup和循环驱动程序,它还允许您配置它以在尝试从给定的一组块读取时返回读取错误.
我有一个C应用程序.这会在启动时创建与文件的连接,并且会持续运行很多天.
我只连接一次.而不是在代码中重新连接它.只检查是否
if(NULL == file)
Run Code Online (Sandbox Code Playgroud)
是否可能存在我的应用程序丢失该文件处理程序的I/O连接的情况?
如是.有办法,我该如何为它创建测试用例?
我在Linux上有一个Python和C应用程序,它应该在从磁盘读取文件时正确处理IO错误.应用程序的大部分是用Python编写的,带有C扩展,用于执行IO.在此扩展中,检测到IO错误.
有两种情况可能会出现错误.
stat)比使用时读取的文件大fread.我可以很容易地测试和处理1号案例.但是,我还想为案例2编写单元测试.但是,我不知道如何为测试触发"假的"IO错误.这甚至可能吗?有没有更好的方法来测试这种错误?
我有一个沼泽标准的Perl文件编写代码,具有(希望)适当的错误处理,其类型为:
open(my $fh, ">", "$filename") or die "Could not open file $filname for writing: $!\n";
# Some code to get data to write
print $fh $data or die "Could not write to file $filname: $!\n";
close $fh or die "Could not close file $filname afterwriting: $!\n";
# No I can't use File::Slurp, sorry.
Run Code Online (Sandbox Code Playgroud)
(我只是从内存中编写此代码,请原谅任何错别字或错误)
在第一个“ die”行中测试错误处理有些容易(例如,创建一个与您打算编写的名称相同的不可写文件)。
我知道在关闭时引起错误的唯一方法是在写入时文件系统上的空间不足,这很难作为测试。
我更喜欢集成测试类型解决方案,而不是单元测试类型(这将涉及在Perl中模拟IO方法)。