perl - 如何在perl中等待异步文件

标签 perl unit-testing aio-write

我正在尝试测试一个异步写入文件的日志记录模块...单元测试尝试读取日志以确保写入的消息符合预期。但是,我发现模块的异步写入直到单元测试完成后才到达文件,即使我睡着等待文件任意长度的时间也是如此。我通过在 aio_close 旁边添加打印语句来验证文件直到最后才关闭。我该怎么做才能对此进行测试?

        #approximately the way this works:
        aio_open($pathname,
             $flags,
             $mode,
             sub
             {
                 my $fh = shift;
                 aio_write($fh,
                             0,
                             length($log),
                             $log,
                             0,
                             sub
                             {
                                 print "here";
                                 aio_close($fh, sub {});
                             });
             });

最佳答案

好吧,仔细研究了一下,我发现我可以调用...

IO::AIO::flush;

这会导致所有异步缓冲区在执行我的测试之前刷新。

关于perl - 如何在perl中等待异步文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247800/

相关文章:

c - 用零归档文件

perl - 为什么 Perl 使用空字符串来表示 boolean false 值?

html - 我如何让 perl 从我的 html 表单中读取值作为 unicode?

通用 Perl 模块的 Python 等价物?

mysql - 带有 DBI 占位符的 Dynamic Multi Insert 用于多组 VALUES

javascript - 访问占位符文本以使用 jest 进行验证

python - 如何测试这段代码

ios - tableView.cellForRow(at :) and tableView. dataSource?tableView(tableView:cellForRowAt:) 之间的区别