1use Test::More; 2use HTTP::Proxy qw(:log); 3use strict; 4 5my %mask = ( 6 CONNECT => CONNECT, 7 DATA => DATA, 8 ENGINE => ENGINE, 9 ERROR => ERROR, 10 FILTERS => FILTERS, 11 HEADERS => HEADERS, 12 PROCESS => PROCESS, 13 PROXY => PROXY, 14 SOCKET => SOCKET, 15 STATUS => STATUS, 16); 17 18# try all combinations 19 20my @tests = ( 21 [ NONE, qw( ERROR ) ], 22 [ PROXY, qw( ERROR PROXY ) ], 23 [ STATUS | SOCKET, qw( ERROR SOCKET STATUS ) ], 24 [ DATA | STATUS | SOCKET, qw( DATA ERROR SOCKET STATUS ) ], 25 [ ALL, qw( CONNECT DATA ENGINE ERROR FILTERS 26 HEADERS PROCESS PROXY SOCKET STATUS ) 27 ], 28); 29 30my $t; 31$t += @$_ - 1 for @tests; 32plan tests => $t; 33 34# communicate with a pipe 35pipe my ( $rh, $wh ); 36select( ( select($wh), $| = 1 )[0] ); 37 38# the proxy logs error to the pipe 39my $proxy = HTTP::Proxy->new( logfh => $wh ); 40 41for (@tests) { 42 my ( $mask, @msgs ) = @$_; 43 $proxy->logmask($mask); 44 $proxy->log( $mask{$_}, 'TEST', $_ ) for sort keys %mask; 45 like( <$rh>, qr/TEST: $_$/, "mask $mask: $_ message" ) for @msgs; 46} 47close $wh; 48print for <$rh>; 49 50