1#!/usr/bin/perl 2 3use strict; 4use warnings; 5 6use Test::More tests => 8; 7 8use lib 'lib'; 9 10use Ubic::Cmd; 11 12use t::Utils; 13rebuild_tfiles(); 14 15use Ubic; 16 17local_ubic( service_dirs => [qw( t/service/freaks t/service/common )] ); 18 19my $out = ''; 20open my $fh, '>', \$out; 21my $stdout = select $fh; 22 23Ubic::Cmd->start('sleeping-daemon'); 24select $stdout; 25like($out, qr/^\QStarting sleeping-daemon... started (pid \E\d+\)\n$/, 'Ubic::Cmd logged something on start'); 26is(Ubic->status('sleeping-daemon')->status, 'running', 'Ubic::Cmd really started service'); 27 28$out = ''; 29open $fh, '>', \$out; 30select $fh; 31 32Ubic::Cmd->stop('sleeping-daemon'); 33select $stdout; 34is($out, "Stopping sleeping-daemon... stopped\n", 'Ubic::Cmd logged something on stop'); 35is(Ubic->status('sleeping-daemon'), 'not running', 'Ubic::Cmd really stopped service'); 36 37$out = ''; 38open $fh, '>', \$out; 39select $fh; 40 41eval { 42 Ubic::Cmd->do_custom_command('sleeping-common', '2plus2'); 43}; 44select $stdout; 45if ($@) { 46 fail("do_custom_command failed: $@"); 47} 48else { 49 pass("do_custom_command is successful"); 50} 51is($out, "Running 2plus2 for sleeping-common... ok\n", 'Ubic::Cmd logged something on custom command'); 52 53 54$out = ''; 55open $fh, '>', \$out; 56select $fh; 57 58my $results = Ubic::Cmd->start('broken'); 59select $stdout; 60is($results->exit_code, 1, 'exit code when starting broken service'); 61like($out, qr{^Starting broken\.\.\. oops, this service can't stop at tfiles/service/broken line \d+\.$}, 'stdout when starting broken service'); 62