#!/usr/bin/perl -wT # $Id: 81-RealFile.t,v 1.2 2003/05/28 14:32:24 unimlo Exp $ use strict; my $file = '/prod/routerconf/arkiv/name/val_dix1_core/rd2003-05-01'; unless (-e $file) { eval "use Test::More skip_all => 'Release test only runs on my machine! ;-)'; "; } else { eval "use Test::More tests => 22; "; }; # Use use_ok('Cisco::Reconfig'); use_ok('Net::ACL::File'); use_ok('Net::ACL::File::IPAccess'); use_ok('Net::ACL::File::IPAccessExt'); use_ok('Net::ACL::File::Community'); use_ok('Net::ACL::File::ASPath'); use_ok('Net::ACL::File::Prefix'); use_ok('Net::ACL::File::RouteMap'); use_ok('Data::Dumper'); # Load it! open(FILE,$file); my $strconf = join('',); close(FILE); my $conf = Cisco::Reconfig::stringconfig($strconf); ok(ref $conf eq 'Cisco::Reconfig','Config loaded'); my $lists = load Net::ACL::File($conf); # Remember lines my %l; foreach my $line (split(/\n/,$strconf)) { next if $line =~ /^\!/; $line =~ s/ +/ /g; $l{$line} ||= 0; $l{$line} += 1; } # Verify result foreach my $type (sort keys %{$lists}) { my $ok = 1; my $missing = ''; my $count = 0; foreach my $name (sort keys %{$lists->{$type}}) { my $l = $lists->{$type}->{$name}; $ok &&= $l->isa('Net::ACL::File'); $count += 1; my $tconf = $l->asconfig; foreach my $line (split(/\n/,$tconf)) { next if $line =~ /^!/; unless (defined $l{$line}) { #warn "--BEGIN--\n>$line<\n" . $tconf . "--END--\n"; $missing = $line; next; }; $l{$line} -= 1; delete $l{$line} unless $l{$line}; }; }; ok($ok,"Loaded $count $type"); ok($missing eq '',"All output found in source '$missing'"); }; __END__