3

文件大小的测试在这里有意义吗?我试图在下载时切断连接,但似乎从未达到大小测试。

#!/usr/bin/env perl
use warnings; 
use strict;
use 5.012;
use LWP::Simple;

my $url = 'http://www.kernel.org/pub/linux/kernel/v2.6/next/patch-v2.6.34-rc5-next-20100428.bz2';
my $file = 'next_kernel.bz';
my $file_size = '3462166';

my $response = getstore( $url, $file );
if ( is_success $response ) {
    if ( $file_size == -s $file ) {
        say "OK";
    }
    else {
        say "Not OK";
    }
}
4

3 回答 3

2

如果您只是想练习测试代码,请输入错误的文件大小并断言您的下载不是“OK”。如果您想测试中断连接会发生什么,您需要一个更大的文件——2342 字节的下载应该只需要几分之一秒。

于 2010-04-28T15:02:15.227 回答
1

这很奇怪,我得到了和你一样的结果。我没有解决方案,但我在这里报告了一些围绕您的问题的黑客行为。

发生的事情是保存的文件比预期的大,并且没有连接中断。尝试 bunzip2 它会出错,即使在将生成的文件截断为所需大小之后也是如此。

通过将 LWP::UserAgent 与 :content_file 参数用于 get() 方法可以实现完全相同的结果。再次将 response_data 处理程序添加到 $ua 对象。

但是下面的命令给了我很好的结果:

获取http://www.kernel.org/pub/linux/kernel/v2.6/next/patch-v2.6.34-rc5-next-20100428.bz2 > next_kernel.bz

而且由于 GET 是基于 LWP 的 lwp-request 脚本,如果您愿意深入挖掘,可以通过检查其代码找到答案。

希望这对您有所帮助。

于 2010-04-28T17:15:36.757 回答
0

我想它不会受到伤害,但我相当肯定is_success如果连接被中止,它不会返回 true。

于 2010-04-28T15:24:35.993 回答