DR-TarantoolQueue
view release on metacpan or search on metacpan
t/020-tnt-msgpack/020-operations.t view on Meta::CPAN
#!/usr/bin/perl
use warnings;
use strict;
use utf8;
use open qw(:std :utf8);
use lib qw(lib ../lib);
use constant PLAN => 129;
use Test::More;
use Encode qw(decode encode);
use feature 'state';
sub tube_name() {
state $no = 1;
sprintf 'test_tube_%02X', $no++;
}
BEGIN {
unless (eval 'require DR::Tnt') {
plan skip_all => 'DR::Tnt is not installed';
}
plan tests => PLAN;
use_ok 'DR::TarantoolQueue';
use_ok 'DR::Tnt::Test';
tarantool_version_check(1.6);
}
my $t = start_tarantool
-port => free_port,
-lua => 't/020-tnt-msgpack/lua/queue.lua',
;
diag $t->log unless ok $t->is_started, 'Queue was started';
for my $coro (0, 1) {
my $q = DR::TarantoolQueue->new(
host => '127.0.0.1',
port => $t->port,
user => 'test',
password => 'test',
msgpack => 1,
coro => $coro,
tube => 'test_tube',
ttl => 60,
defaults => {
test_tube => {
ttl => 80
}
},
fake_in_test => 0,
);
ok $q->tnt->ping, 'ping';
for my $tube (tube_name) {
note 'normal task';
my $task = $q->put(tube => $tube, data => 'Hello');
ok $task => 'Task was put';
is $task->status, 'ready', 'status';
}
for my $tube (tube_name) {
note 'delayed task';
my $task = $q->put(tube => $tube, data => 'world', delay => 15);
ok $task => 'Task was put';
is $task->status, 'delayed', 'status';
}
for my $tube (tube_name) {
note 'domain';
my $task = $q->put(tube => $tube, domain => 'Vasya');
ok $task => 'Task was put';
is $task->status, 'ready', 'status';
is $task->domain, 'Vasya', 'domain';
my $wait = $q->put(tube => $tube, domain => 'Vasya');
ok $wait => 'Task 2 was put';
is $wait->status, 'wait', 'status is wait';
is $wait->domain, 'Vasya', 'domain';
}
for my $tube (tube_name) {
note 'take no timeout';
my $task = $q->put(tube => $tube, data => 'Hello');
ok $task => 'Task was put';
is $task->status, 'ready', 'status';
my $taken = $q->take(tube => $tube);
ok $taken => 'Task was taken';
is $taken->id, $task->id, 'id';
is $taken->status, 'work', 'status';
}
for my $tube (tube_name) {
note 'take timeout and peek';
my $task = $q->put(tube => $tube, data => 'Hello', delay => 5);
ok $task => 'Task was put';
is $task->status, 'delayed', 'status';
( run in 0.952 second using v1.01-cache-2.11-cpan-39bf76dae61 )