File: 02callback.t

package info (click to toggle)
pbnj 2.04-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 640 kB
  • ctags: 309
  • sloc: perl: 4,838; xml: 748; sh: 109; makefile: 37
file content (51 lines) | stat: -rwxr-xr-x 1,464 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/perl
use strict;
use File::Spec;
use Cwd;
use Test::More tests => 15;
use Nmap::Parser;

use constant TEST_FILE =>'nmap_results.xml';
use constant HOST1 => '127.0.0.1';
use constant HOST2 => '127.0.0.2';
use constant HOST3 => '127.0.0.3';
use constant HOST4 => '127.0.0.4';

use constant TOTAL_ADDRS => 4;
use vars qw($FH $TOTAL @UP_HOSTS @DOWN_HOSTS);

$FH = File::Spec->catfile(cwd(),'t',TEST_FILE);
$FH = File::Spec->catfile(cwd(),    TEST_FILE)  unless(-e $FH);

my $np = new Nmap::Parser;
isa_ok($np, 'Nmap::Parser');

ok($np->callback(\&my_callback),'Registering callback function');
is($np->callback(),0,'Unregistering callback function');
ok($np->callback(\&my_callback),'re-registering callback function');

$TOTAL = 0;

$np->parsefile($FH);

is($TOTAL, TOTAL_ADDRS, 'Making sure all hosts were parsed in callback');
ok(eq_set([@UP_HOSTS], [HOST1,HOST3,HOST4]), 'Testing for correct UP hosts');
ok(eq_set([@DOWN_HOSTS], [HOST2]), 'Testing for correct DOWN hosts');

for my $host (HOST1, HOST2, HOST3, HOST4){
is($np->get_host($host) , undef, 'Making sure '.$host.' does not exists');
}

sub my_callback {
    my $host = shift;
    my $addr = $host->addr;
    
    if($addr =~ /^127\.0\.0/){
        $TOTAL++;
    }
    
    isa_ok($host,'Nmap::Parser::Host',$host->addr);
    if(   $host->status eq 'up'){push @UP_HOSTS, $addr;}
    elsif($host->status eq 'down'){push @DOWN_HOSTS, $addr;}

}