DR-TarantoolQueue
view release on metacpan or search on metacpan
lib/DR/TarantoolQueue/Tnt.pm view on Meta::CPAN
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;
my ($host, $port, $user, $password) =
($self->host, $self->port, $self->user, $self->password);
# in test
if ($self->_fake_msgpack_tnt) {
$host = '127.0.0.1';
$port = $self->_fake_msgpack_tnt->port;
$user = 'test';
$password = 'test';
}
return DR::Tnt::tarantool(
host => $host,
port => $port,
user => $user,
password => $password,
raise_error => 1,
%{ $self->connect_opts },
driver => $driver,
hashify_tuples => 1,
utf8 => 0,
)
}
sub _build_lts_tnt {
my ($self) = @_;
require DR::Tarantool;
my ($host, $port) = ($self->host, $self->port);
if ($self->_fake_lts_tnt) {
$host = '127.0.0.1';
$port = $self->_fake_lts_tnt->primary_port;
}
unless ($self->coro) {
if (DR::Tarantool->can('rsync_tarantool')) {
return DR::Tarantool::rsync_tarantool(
port => $port,
host => $host,
spaces => {},
%{ $self->connect_opts }
);
} else {
return DR::Tarantool::tarantool(
port => $port,
host => $host,
spaces => {},
%{ $self->connect_opts }
);
}
}
return DR::Tarantool::coro_tarantool(
port => $port,
host => $host,
spaces => {},
%{ $self->connect_opts }
);
}
1;
( run in 1.183 second using v1.01-cache-2.11-cpan-2398b32b56e )