Subject: | 003_consume.t may fail due to timing problems |
The 003_consume.t may fail if some time passes between running 002_publish.t and 003_consume.t. This happens quite often if the network connection to dev.rabbitmq.com is a little bit slow (which seems to be always the case in Europe).
It's possible to get the test fail every time by putting a sleep between publish and consume:
$ perl -Mblib t/002_publish.t; sleep 1; perl -Mblib t/003_consume.t
1..8
ok 1 - use Net::RabbitMQ;
ok 2
ok 3 - connect
ok 4 - channel_open
ok 5 - queue_declare
ok 6 - queue_bind
ok 7 - drain queue
ok 8 - publish
1..7
ok 1 - use Net::RabbitMQ;
ok 2
ok 3 - connect
ok 4 - channel_open
ok 5 - consume
ok 6 - recv
not ok 7 - payload
# Failed test 'payload'
# at t/003_consume.t line 23.
# Structures begin differing at:
# $got->{props}{expiration} = '1425641897'
# $expected->{props}{expiration} = '1425641899'
# Looks like you failed 1 test of 7.
There's also a problem that 003_consume.t depends on 002_publish.t being run before. This means it's not possible to run the test suite with prove's shuffle option, or, more importantly, it's not possible to test in parallel.