use Test::More tests => 1;
use Regexp::Log::BlueCoat;
# change the default UFS categories
Regexp::Log::BlueCoat->ufs_category(
'smartfilter',
an => 'Anonymizer/Translator',
ac => 'Art/Culture',
ch => 'Chat',
cs => 'Criminal_Skills',
oc => 'Cults/Occult',
mm => 'Dating',
dr => 'Drugs',
et => 'Entertainment',
ex => 'Obscene/Extreme',
gb => 'Gambling',
gm => 'Games',
nw => 'General_News',
hs => 'Hate_Speech',
hm => 'Humor',
in => 'Investing',
js => 'Job_Search',
ls => 'Lifestyle',
mt => 'Mature',
mp => 'MP3_Sites',
nd => 'Nudity',
os => 'Online_Sales',
pp => 'Personal',
po => 'Politics/Religion',
ps => 'Portal_Sites',
sh => 'Self_Help/Health',
sx => "Sex",
sp => 'Sports',
tr => 'Travel',
na => 'Usenet_News',
wm => 'Webmail',
);
my $log = Regexp::Log::BlueCoat->new(
format => '%g %e %a %w/%s %b %m %i %u %H/%d %c %f %A',
ufs => 'smartfilter',
login => 'ldap',
capture => [':all'],
);
# test the regex on real log lines
@ARGV = ('t/bc2.log');
my @fields = $log->capture;
my $regexp = $log->regexp;
# a big data set
my %data;
my @data = (
{
'c-ip' => '10.0.203.16',
'user-agent' => 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)',
'time-taken' => '182',
'cs-uri' => 'http://wwwsantéobésité.com/perl/main.pl',
's-hierarchy' => 'DIRECT',
'cs-username' => 'CN=George BUSH,OU=fr,O=states',
'cs-supplier-name' => 'wwwsantéobésité.com',
's-action' => 'TCP_NC_MISS',
'sc-filter-category' => 'uncategorized',
'cs-content-type' => 'text/html',
'cs-method' => 'GET',
'cs-bytes' => '414',
'sc-status' => '404',
'timestamp' => '1046084665.298'
},
);
$i = 0;
while (<>) {
@data{@fields} = /$regexp/;
is_deeply( \%data, $data[ $i++ ], "bc1.log line " . ( $i + 1 ) );
}