use strict; use lib("t/lib"); use Test::Queue::Q4M (tests => 73); BEGIN { use_ok("Queue::Q4M"); } { my $table = $Test::Queue::Q4M::TABLES[0]; my $q = Queue::Q4M->connect( connect_info => \@Test::Queue::Q4M::CONNECT_INFO, ); ok($q); isa_ok($q, "Queue::Q4M"); my $max = 32; for my $i (1..$max) { ok($q->insert($table, { v => $i })); } my $count = 0; while ($q->next($table)) { my $h = $q->fetch_hashref(); $count++; last if $h->{v} == $max; } is($count, $max); $q->disconnect; } { my $table = $Test::Queue::Q4M::TABLES[0]; my $q = Queue::Q4M->connect( table => $table, connect_info => \@Test::Queue::Q4M::CONNECT_INFO, ); ok($q); isa_ok($q, "Queue::Q4M"); diag("Going to block for 5 seconds..."); my $before = time(); $q->next($table, 5); # This time difference could be off by a second or so, # so allow that much diffference my $diff = time() - $before; ok( $diff >= 4, "next() with timeout waited for 4 seconds ($diff)"); } { my $q = Queue::Q4M->connect( connect_info => \@Test::Queue::Q4M::CONNECT_INFO, ); ok($q); isa_ok($q, "Queue::Q4M"); # Insert into a random table my $table = $Test::Queue::Q4M::TABLES[rand(@Test::Queue::Q4M::TABLES)]; $q->insert( $table , { v => 1 } ); my $max = 1; my $count = 0; while (my $which = $q->next(@Test::Queue::Q4M::TABLES, 5)) { is ($which, $table, "got from the table that we inserted" ); my ($v) = $q->fetch( $which, 'v' ); $count++; last if $count >= $max; } } { my $table = $Test::Queue::Q4M::TABLES[0]; my $timeout = 1; my $q = Queue::Q4M->connect( connect_info => \@Test::Queue::Q4M::CONNECT_INFO, ); ok($q); isa_ok($q, "Queue::Q4M"); my $rv = $q->next($table, $timeout); ok( ! $rv, "should return false. got (" . ($rv || '') . ")" ); $q->disconnect; } { my $table = $Test::Queue::Q4M::TABLES[0]; my $timeout = 1; my $q = Queue::Q4M->connect( connect_info => \@Test::Queue::Q4M::CONNECT_INFO, ); ok($q); isa_ok($q, "Queue::Q4M"); my $max = 32; for my $i (1..$max) { $q->insert($table, { v => $i }); } my $cond = "$table:v>16"; my $count = 0; while (my $rv = $q->next($cond)) { is($rv, $table); my $h = $q->fetch_hashref(); $count++; last if $h->{v} == $max; } is($count, 16); $q->dbh->do("DELETE FROM $table"); $q->disconnect; } { my $table = $Test::Queue::Q4M::TABLES[0]; my $timeout = 1; my $q = Queue::Q4M->connect( connect_info => \@Test::Queue::Q4M::CONNECT_INFO, ); ok($q); isa_ok($q, "Queue::Q4M"); $q->disconnect; ok($q->insert($table, { v => 1 })); ok($q->clear($table)); } { my $table = $Test::Queue::Q4M::TABLES[0]; my $timeout = 1; my $q = Queue::Q4M->connect( connect_info => \@Test::Queue::Q4M::CONNECT_INFO, ); ok($q); isa_ok($q, "Queue::Q4M"); ok( $q->insert($table, { v => 1 }), "insert" ); ok( $q->next($table), "next" ); ok( $q->fetch($table) ); } END { local $@; eval { my $dbh = DBI->connect(@Test::Queue::Q4M::CONNECT_INFO); foreach my $table (@Test::Queue::Q4M::TABLES) { $dbh->do("DROP TABLE $table"); } }; }