[libanyevent-rabbitmq-perl] 75/151: Store server properties so we can check against server product and version in tests (probably later even in the implementation itself).
Damyan Ivanov
dmn at moszumanska.debian.org
Thu Jan 16 11:03:05 UTC 2014
This is an automated email from the git hooks/post-receive script.
dmn pushed a commit to annotated tag debian/1.12-1
in repository libanyevent-rabbitmq-perl.
commit 33de65eb7b486c64e834748ed46c6a9fb64f8b19
Author: Johannes Plunien <johannes.plunien at xing.com>
Date: Thu Mar 10 10:07:27 2011 +0100
Store server properties so we can check against server product and version in tests (probably later even in the implementation itself).
---
Makefile.PL | 1 +
lib/AnyEvent/RabbitMQ.pm | 15 ++++++++---
xt/04_anyevent.t | 70 ++++++++++++++++++++++++++++--------------------
3 files changed, 53 insertions(+), 33 deletions(-)
diff --git a/Makefile.PL b/Makefile.PL
index e90a74c..c446f63 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -22,6 +22,7 @@ install_share;
build_requires 'Test::More';
build_requires 'Test::Exception';
+build_requires 'version';
install_script 'rabbit_foot';
auto_install;
WriteAll;
diff --git a/lib/AnyEvent/RabbitMQ.pm b/lib/AnyEvent/RabbitMQ.pm
index 705997f..635a8fc 100644
--- a/lib/AnyEvent/RabbitMQ.pm
+++ b/lib/AnyEvent/RabbitMQ.pm
@@ -20,11 +20,12 @@ our $VERSION = '1.02';
sub new {
my $class = shift;
return bless {
- verbose => 0,
+ verbose => 0,
@_,
- _is_open => 0,
- _queue => AnyEvent::RabbitMQ::LocalQueue->new,
- _channels => {},
+ _is_open => 0,
+ _queue => AnyEvent::RabbitMQ::LocalQueue->new,
+ _channels => {},
+ _server_properties => {},
}, $class;
}
@@ -100,6 +101,10 @@ sub connect {
return $self;
}
+sub server_properties {
+ return shift->{_server_properties};
+}
+
sub _read_loop {
my ($self, $close_cb, $failure_cb,) = @_;
@@ -192,6 +197,8 @@ sub _start {
return $args{on_failure}->('en_US is not found in locales')
if none {$_ eq 'en_US'} @locales;
+ $self->{_server_properties} = $frame->method_frame->server_properties;
+
$self->_push_write(
Net::AMQP::Protocol::Connection::StartOk->new(
client_properties => {
diff --git a/xt/04_anyevent.t b/xt/04_anyevent.t
index 96ce051..baa59ec 100644
--- a/xt/04_anyevent.t
+++ b/xt/04_anyevent.t
@@ -3,8 +3,13 @@ use Test::Exception;
use FindBin;
use JSON::XS;
+use version;
my $json_text;
+my %server = (
+ product => undef,
+ version => undef,
+);
open my $fh, '<', $FindBin::Bin . '/../config.json' or die $!;
{undef $/; $json_text = <$fh>;}
close $fh;
@@ -43,6 +48,8 @@ $ar->connect(
on_success => sub {
my $ar = shift;
isa_ok($ar, 'AnyEvent::RabbitMQ');
+ $server{product} = $ar->server_properties->{product};
+ $server{version} = version->parse($ar->server_properties->{version});
$done->send;
},
on_failure => failure_cb($done),
@@ -277,39 +284,44 @@ publish($ch, 'RabbitMQ is powerful.', $done,);
$done->recv;
pass('recover');
-$done = AnyEvent->condvar;
-my $reject_count = 0;
-$ch->consume(
- queue => 'test_q',
- no_ack => 0,
- on_consume => sub {
- my $response = shift;
+# This only works for RabbitMQ >= 2.0.0
+my $can_reject = $server{product} eq 'RabbitMQ' && $server{version} >= version->parse('2.0.0');
+SKIP: {
+ skip 'We need RabbitMQ >= 2.0.0 for the reject test', 1 unless $can_reject;
+ $done = AnyEvent->condvar;
+ my $reject_count = 0;
+ $ch->consume(
+ queue => 'test_q',
+ no_ack => 0,
+ on_consume => sub {
+ my $response = shift;
- if ( 5 > ++$reject_count ) {
- $ch->reject(
- delivery_tag => $response->{deliver}->method_frame->delivery_tag,
+ if ( 5 > ++$reject_count ) {
+ $ch->reject(
+ delivery_tag => $response->{deliver}->method_frame->delivery_tag,
- # requeue! Else the server does not deliver the message again to this client.
- requeue => 1,
- );
- return;
- }
+ # requeue! Else the server does not deliver the message again to this client.
+ requeue => 1,
+ );
+ return;
+ }
- $ch->ack( delivery_tag => $response->{deliver}->method_frame->delivery_tag );
+ $ch->ack( delivery_tag => $response->{deliver}->method_frame->delivery_tag );
- $ch->cancel(
- consumer_tag => $response->{deliver}->method_frame->consumer_tag,
- on_success => sub {
- $done->send;
- },
- on_failure => failure_cb($done),
- );
- },
- on_failure => failure_cb($done),
-);
-publish( $ch, 'RabbitMQ is powerful.', $done, );
-$done->recv;
-pass('reject');
+ $ch->cancel(
+ consumer_tag => $response->{deliver}->method_frame->consumer_tag,
+ on_success => sub {
+ $done->send;
+ },
+ on_failure => failure_cb($done),
+ );
+ },
+ on_failure => failure_cb($done),
+ );
+ publish( $ch, 'RabbitMQ is powerful.', $done, );
+ $done->recv;
+ pass('reject');
+};
$done = AnyEvent->condvar;
$ch->select_tx(
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libanyevent-rabbitmq-perl.git
More information about the Pkg-perl-cvs-commits
mailing list