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