#!perl -T use 5.14.2; use strict; use warnings; use Test::More; use Test::Exception; use Security::Monitoring::Messaging; use Storable qw(nstore_fd); use POSIX qw(mkfifo); use Carp qw(croak); use Security::Monitoring::Utils; BEGIN { plan tests => 5; use_ok( 'Security::Monitoring::Messaging' ) || print "Bail out!\n"; } diag( "Testing Security::Monitoring::Messaging $Security::Monitoring::Messaging::VERSION, Perl $], $^X" ); my $pid; sub testing{ open my $fh, '>','testlog.log'; my %outputs = ( out1 => "sillyvar", ); my %params = ( input=>"anothersillyvar", output=>\%outputs, ); $pid = fork; if(!$pid){ Security::Monitoring::Messaging::run("listenfile"); #I'll listen } else{ TEST:while(1){ if(! -e 'listenfile'){ goto TEST; } print $fh "father : gonna write to listenfile\n"; open my $sfh, '>', 'listenfile'; nstore_fd \%params, $sfh; print $fh "father :stored to listenfile\n"; print $fh "father :now I wait for my son $pid to die\n"; kill 'KILL', $pid; last; } wait; print $fh "father :my son is dead\n"; kill 'KILL',$pid; die; } } dies_ok(sub{testing;},"the testing sub has run its course pid id"); dies_ok(sub{Security::Monitoring::Messaging::run('')},"messaging demon wont run with empty listenfile, pid = $pid"); dies_ok(sub{Security::Monitoring::Messaging::run(undef)},"messaging daemon wont run with undef filename"); unlink 'listenfile'; open my $fh, '>', 'listenfile'; print $fh "trololol"; close $fh; dies_ok(sub{Security::Monitoring::Messaging::run('listenfile')},"messaging daemon wont open already existing named piped "); unlink 'listenfile'; unlink 'testlog.log';