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 )