Commit | Line | Data |
8edb2b46 |
1 | package StompRole; |
2 | use Moose::Role; |
3 | use namespace::autoclean; |
4 | |
5 | after 'disconnect' => sub { |
6 | delete shift->{___activemq}; |
7 | }; |
8 | |
9 | package TestServer; |
10 | use strict; |
11 | use warnings; |
12 | use Alien::ActiveMQ; |
13 | use Test::More; |
14 | use Exporter qw/import/; |
3a0d5cfc |
15 | use FindBin; |
8edb2b46 |
16 | |
17 | our $ACTIVEMQ_VERSION = '5.2.0'; |
18 | |
19 | our @EXPORT = qw/ start_server /; |
20 | |
21 | sub start_server { |
22 | my ($mq, $stomp); |
23 | eval { |
24 | $stomp = Net::Stomp->new( { hostname => 'localhost', port => 61613 } ); |
25 | }; |
26 | if ($@) { |
27 | |
28 | unless (Alien::ActiveMQ->is_version_installed($ACTIVEMQ_VERSION)) { |
29 | plan 'skip_all' => 'No ActiveMQ server installed by Alien::ActiveMQ, try running the "install-activemq" command'; |
30 | exit; |
31 | } |
32 | |
33 | $mq = Alien::ActiveMQ->run_server($ACTIVEMQ_VERSION); |
34 | |
35 | eval { |
36 | $stomp = Net::Stomp->new( { hostname => 'localhost', port => 61613 } ); |
37 | }; |
38 | if ($@) { |
39 | plan 'skip_all' => 'No ActiveMQ server listening on 61613: ' . $@; |
40 | exit; |
41 | } |
42 | } |
43 | |
44 | $SIG{CHLD} = 'IGNORE'; |
45 | unless (fork()) { |
fa41164a |
46 | my $libs = join(' ', map { "-I$_" } @INC); |
47 | system("$^X $libs $FindBin::Bin/script/stomptestapp_stomp.pl --oneshot"); |
8edb2b46 |
48 | exit 0; |
49 | } |
50 | print STDERR "server started, waiting for spinup..."; |
51 | sleep 20; |
52 | |
53 | $stomp->{___activemq} = $mq if $mq; |
54 | StompRole->meta->apply($stomp); |
55 | return $stomp; |
56 | } |
57 | |