Alien-ActiveMQ

 view release on metacpan or  search on metacpan

t/start_stop.t  view on Meta::CPAN

#!/usr/bin/env perl
use strict;
use warnings;

use Test::More;
use Test::Exception;
use FindBin ();
use Path::Class qw/file dir/;
use File::Temp qw/tempdir/;
use Test::MockModule;

BEGIN {
    use_ok('Alien::ActiveMQ');
    require_ok "$FindBin::RealBin/../script/install-activemq";
}

# This can be set to a true value to leave the temp files from the tests around for later
# examination.  They'll be in the t/run directory.
use constant LEAVE_TEMPFILES => 0;

dir($FindBin::RealBin, 'run')->mkpath;
our $_dist_dir =  dir ( tempdir( "testamq-XXXXXX",
    DIR => dir($FindBin::RealBin, 'run'),
    CLEANUP => !LEAVE_TEMPFILES) );

our $_data_dir = dir($FindBin::RealBin, 'data');

package Alien::ActiveMQ::Mock;

    use Moose;
    use base qw/Alien::ActiveMQ/;
    use strict;
    use warnings;
    use File::Temp qw/tempdir/;
    use Path::Class;
    use FindBin ();

    sub _dist_dir {
        return $main::_dist_dir;
    }

    has _output_data => (
        isa => 'ArrayRef[Str]',
        is => 'rw',
        default => sub { [] },
    );

    sub _output {
        my $self = shift;
        push @{$self->_output_data}, join('', @_);
        return 1;
    }

    sub startup_timeout {
        return 3;
    }

package main;

ok (!Alien::ActiveMQ::Mock->is_version_installed(), 'No versions found');
is(Alien::ActiveMQ::Mock->get_version_dir(), undef, 'No version guessed');

ok (_install_test_version('5.1.9'), 'Installed 5.1.9');

ok (Alien::ActiveMQ::Mock->is_version_installed(), 'Found an installation');
is(Alien::ActiveMQ::Mock->get_version_dir(), $_dist_dir->subdir('5.1.9'),
    'Found latest installed version');
is(Alien::ActiveMQ::Mock->get_license_filename(),
    $_dist_dir->file('5.1.9', 'LICENSE'),
    'Found latest license file');
is(Alien::ActiveMQ::Mock->get_licence_filename(),
    $_dist_dir->file('5.1.9', 'LICENSE'),
    'Old licence_filename works');
is(Alien::ActiveMQ::Mock->get_version_dir('1.1.1'), $_dist_dir->subdir('1.1.1'),
    'Any version dir found');
is(Alien::ActiveMQ::Mock->get_license_filename('1.1.1'),
    $_dist_dir->file('1.1.1', 'LICENSE'),
    'Any version LICENSE file found');
ok(Alien::ActiveMQ::Mock->is_version_installed('5.1.9'), 'Found 5.1.9');
ok(!Alien::ActiveMQ::Mock->is_version_installed('1.1.1'), 'No 1.1.1 installed');
is_deeply( [ Alien::ActiveMQ::Mock->get_installed_versions() ], [ qw/5.1.9/ ],
    'Found version 5.1.9 installed'
);

ok (_install_test_version('5.9.9'), 'Installed 5.9.9');
ok (Alien::ActiveMQ::Mock->is_version_installed(), 'Found an installation');
is(Alien::ActiveMQ::Mock->get_version_dir(), $_dist_dir->subdir('5.9.9'),
    'Found latest installed version');
is(Alien::ActiveMQ::Mock->get_license_filename(),
    $_dist_dir->file('5.9.9', 'LICENSE'),
    'Found latest license file');
is(Alien::ActiveMQ::Mock->get_license_filename('5.9.9'),
    $_dist_dir->file('5.9.9', 'LICENSE'),
    'Found 5.9.9 license file');
is(Alien::ActiveMQ::Mock->get_license_filename('5.1.9'),
    $_dist_dir->file('5.1.9', 'LICENSE'),
    'Found 5.1.9 license file');
ok(Alien::ActiveMQ::Mock->is_version_installed('5.1.9'), 'Found 5.1.9');
ok(Alien::ActiveMQ::Mock->is_version_installed('5.9.9'), 'Found 5.9.9');
ok(!Alien::ActiveMQ::Mock->is_version_installed('1.1.1'), 'No 1.1.1 installed');
is_deeply( [ Alien::ActiveMQ::Mock->get_installed_versions() ],
    [ qw/ 5.9.9 5.1.9/ ],
    'Found two installed'
);

# Test that we ignore junk in the install location
mkdir $_dist_dir->subdir("random_stuff");
is_deeply( [ Alien::ActiveMQ::Mock->get_installed_versions() ],
    [ qw/ 5.9.9 5.1.9/ ],
    'Ignored extra subdir'
);

# Start a "version" which requires 'console' to stay in the foreground
{
    my $stomp = Test::MockModule->new( 'Net::Stomp' );
    my $try = 0;
    # This simulates a couple of retries while the server starts.
    # It also lets the process actually run.
    $stomp->mock(new => sub {
        $try++;
        if($try < 2) {



( run in 0.590 second using v1.01-cache-2.11-cpan-140bd7fdf52 )