DR-TarantoolQueue
view release on metacpan or search on metacpan
lib/DR/TarantoolQueue/Tnt.pm view on Meta::CPAN
use utf8;
use strict;
use warnings;
package DR::TarantoolQueue::Tnt;
use Mouse::Role;
requires 'fake_in_test';
has _fake_msgpack_tnt =>
is => 'rw',
isa => 'Maybe[Object]',
lazy => 1,
builder => sub {
my ($self) = @_;
return undef unless $self->fake_in_test;
return undef unless $0 =~ /\.t$/;
require DR::Tnt::Test;
my $t = DR::Tnt::Test::start_tarantool(
-port => DR::Tnt::Test::free_port(),
-make_lua => q{
require('log').info('Fake Queue starting')
box.cfg{
listen = os.getenv('PRIMARY_PORT'),
readahead = 101024
}
box.schema.user.create('test', { password = 'test' })
box.schema.user.grant('test', 'read,write,execute', 'universe')
_G.queue = require('megaqueue')
queue:init()
require('log').info('Fake Queue started')
}
);
unless ($t->is_started) {
warn $t->log;
die "Can't start fake tarantool\n";
}
return $t;
};
has _fake_lts_tnt =>
is => 'rw',
isa => 'Maybe[Object]',
lazy => 1,
builder => sub {
my ($self) = @_;
return undef unless $self->fake_in_test;
return undef unless $0 =~ /\.t$/;
require DR::Tarantool::StartTest;
die "'/etc/tarantool/instances.available/queue.cfg' is not found"
unless -r '/etc/tarantool/instances.available/queue.cfg';
die "dir '/usr/lib/dr-tarantool-queue' is absent"
unless -d '/usr/lib/dr-tarantool-queue';
my $t = DR::Tarantool::StartTest->run(
script_dir => '/usr/lib/dr-tarantool-queue',
cfg => '/etc/tarantool/instances.available/queue.cfg',
slab_alloc_arena => 0.3
);
unless ($t->started) {
warn $t->log;
die "Can't start fake tarantool\n";
}
return $t;
};
has tnt =>
is => 'rw',
isa => 'Object',
lazy => 1,
builder => sub {
my ($self) = @_;
return $self->_build_msgpack_tnt if $self->msgpack;
return $self->_build_lts_tnt;
}
;
sub _build_msgpack_tnt {
my ($self) = @_;
require DR::Tnt;
my $driver = 'sync';
$driver = 'coro' if $self->coro;
( run in 0.773 second using v1.01-cache-2.11-cpan-39bf76dae61 )