#!perl -T use strict; use Test::More; use Net::Pcap; use lib 't'; use Utils; my @sizes = (128, 512, 1024, 2048, 4096, 8192, int(10000*rand), int(10000*rand), int(10000*rand), int(10000*rand)); # snapshot sizes plan skip_all => "must be run as root" unless is_allowed_to_use_pcap(); plan skip_all => "no network device available" unless find_network_device(); plan tests => @sizes * 2 + 2; my $has_test_exception = eval "use Test::Exception; 1"; my($dev,$pcap,$snapshot,$err) = ('','','',''); # Testing error messages SKIP: { skip "Test::Exception not available", 2 unless $has_test_exception; # snapshot() errors throws_ok(sub { Net::Pcap::snapshot() }, '/^Usage: Net::Pcap::snapshot\(p\)/', "calling snapshot() with no argument"); throws_ok(sub { Net::Pcap::snapshot(0) }, '/^p is not of type pcap_tPtr/', "calling snapshot() with incorrect argument type"); } # Find a device $dev = find_network_device(); for my $size (@sizes) { # Open the device $pcap = Net::Pcap::open_live($dev, $size, 1, 0, \$err); # Testing snapshot() $snapshot = 0; eval { $snapshot = Net::Pcap::snapshot($pcap) }; is( $@, '', "snapshot()" ); is( $snapshot, $size, " - snapshot has the expected size" ); Net::Pcap::close($pcap); }