mbroadst / qamqp

AMQP 0.9.1 implementation for Qt
Other
151 stars 127 forks source link

Tests currently fail on Debian Wheezy #21

Closed sjlongland closed 9 years ago

sjlongland commented 9 years ago

Hi,

I'm just in the process of packaging on qamqp on Debian Wheezy (I'll make the debs available shortly) but stumbled on this issue:

make[4]: Entering directory `/tmp/qamqp-0.3.0/tests/auto/qamqpclient'
./tst_qamqpclient 
********* Start testing of tst_QAMQPClient *********
Config: Using QTest library 4.8.2, Qt 4.8.2
PASS   : tst_QAMQPClient::initTestCase()
FAIL!  : tst_QAMQPClient::connect() 'waitForSignal(&client, SIGNAL(connected()))' returned FALSE. ()
   Loc: [tst_qamqpclient.cpp(56)]
FAIL!  : tst_QAMQPClient::connectProperties() 'waitForSignal(&client, SIGNAL(connected()))' returned FALSE. ()
   Loc: [tst_qamqpclient.cpp(90)]
FAIL!  : tst_QAMQPClient::connectHostAddress() 'waitForSignal(&client, SIGNAL(connected()))' returned FALSE. ()
   Loc: [tst_qamqpclient.cpp(99)]
FAIL!  : tst_QAMQPClient::connectDisconnect() 'waitForSignal(&client, SIGNAL(connected()))' returned FALSE. ()
   Loc: [tst_qamqpclient.cpp(108)]
FAIL!  : tst_QAMQPClient::invalidAuthenticationMechanism() 'waitForSignal(&client, SIGNAL(disconnected()))' returned FALSE. ()
   Loc: [tst_qamqpclient.cpp(127)]
FAIL!  : tst_QAMQPClient::tune() 'waitForSignal(&client, SIGNAL(connected()))' returned FALSE. ()
   Loc: [tst_qamqpclient.cpp(153)]
PASS   : tst_QAMQPClient::socketError()
FAIL!  : tst_QAMQPClient::validateUri(empty) Compared values are not the same
   Actual (auth->login()): guest
   Expected (expectedUsername): 
   Loc: [tst_qamqpclient.cpp(218)]
FAIL!  : tst_QAMQPClient::validateUri(onlyuser) Compared values are not the same
   Actual (auth->login()): guest
   Expected (expectedUsername): user
   Loc: [tst_qamqpclient.cpp(218)]
FAIL!  : tst_QAMQPClient::validateUri(userpass) Compared values are not the same
   Actual (auth->login()): guest
   Expected (expectedUsername): user
   Loc: [tst_qamqpclient.cpp(218)]
FAIL!  : tst_QAMQPClient::validateUri(onlyport) Compared values are not the same
   Actual (auth->login()): guest
   Expected (expectedUsername): 
   Loc: [tst_qamqpclient.cpp(218)]
PASS   : tst_QAMQPClient::cleanupTestCase()
Totals: 3 passed, 10 failed, 0 skipped
********* Finished testing of tst_QAMQPClient *********

Current build host:

mbroadst commented 9 years ago

Hm, that's really bizarre. The 4.8 tests run on Travis use an even more ancient pairing than yours and build just fine (gcc: 4.6.3/qt: 4.8.1). Is that the only test that fails?

mbroadst commented 9 years ago

oh hah, sorry I'm quite turned around right now. These will definitely fail on your local machine if you don't have a rabbitmq server setup. Unfortunately all of the current tests are integration tests, rather than unit tests. I'd say for packaging you're going to want to just skip running the tests, and I'll make a mental note to more clearly distinguish what is and isn't an integration test!

sjlongland commented 9 years ago

Ahh okay, for now I've just told debhelper to skip the make check step, but I was a bit concerned about the messages I was getting.

In any case, Debian packages coming right up.

sjlongland commented 9 years ago

I've just done some more digging into this. It seems I get the above test failure (with rabbitmq-server installed) when using the stock Qt 4.8.2 build that Wheezy ships with. If I use the version from Wheezy backports, I get this:

QDEBUG : tst_QAMQPExchange::removeIfUnused() connecting to host:  "localhost" , port:  5672 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Connection: 
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> Start
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> version_major: 0
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> version_minor: 9
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> mechanisms:  ("PLAIN", "AMQPLAIN") 
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> locales: en_US
QDEBUG : tst_QAMQPExchange::removeIfUnused() Connection: 
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> Tune
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> channel_max: 0
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> frame_max: 131072
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> heartbeat: 0
QDEBUG : tst_QAMQPExchange::removeIfUnused() Connection: 
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> OpenOK
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "" state: ChannelClosedState -> ChannelOpeningState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Open channel #1
QDEBUG : tst_QAMQPExchange::removeIfUnused() void QAmqpExchangePrivate::declare() Channel is closed, re-opening and delaying declare. 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel#1:
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> OpenOK
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "test-if-unused-exchange" state: ChannelOpeningState -> ChannelOpenState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel open 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Exchange "test-if-unused-exchange" state: ExchangeClosedState -> ExchangeUndeclaredState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Declaring exchange "test-if-unused-exchange" 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Exchange "test-if-unused-exchange" state: ExchangeUndeclaredState -> ExchangeDeclaringState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() declared exchange:  "test-if-unused-exchange" 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Exchange "test-if-unused-exchange" state: ExchangeDeclaringState -> ExchangeDeclaredState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "" state: ChannelClosedState -> ChannelOpeningState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Open channel #2
QDEBUG : tst_QAMQPExchange::removeIfUnused() void QAmqpQueue::declare(int) channel not yet open, declare later. 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel#2:
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> OpenOK
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "test-if-unused-queue" state: ChannelOpeningState -> ChannelOpenState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() channel now open; delayedDeclare =  true 
QDEBUG : tst_QAMQPExchange::removeIfUnused() void QAmqpQueuePrivate::declare() declaring queue 
QDEBUG : tst_QAMQPExchange::removeIfUnused() declared queue:  "test-if-unused-queue" 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Queue "test-if-unused-queue" state: QueueClosedState -> QueueDeclaredState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Consumer "test-if-unused-queue" state: ConsumerQueueUndeclaredState -> ConsumerQueueDeclaredState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() message count 0
Consumer count: 0
QDEBUG : tst_QAMQPExchange::removeIfUnused() void QAmqpQueuePrivate::bindOk(const QAmqpMethodFrame&) bound to exchange "test-if-unused-exchange" key "testRoutingKey" 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel#1:
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> CLOSE
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "test-if-unused-exchange" state: ChannelOpenState -> ChannelClosingState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> code: 406
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> text: PRECONDITION_FAILED - exchange 'test-if-unused-exchange' in vhost '/' in use
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> class-id: 40
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> method-id: 20
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "test-if-unused-exchange" state: ChannelClosingState -> ChannelClosedState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Exchange "test-if-unused-exchange" state: ExchangeDeclaredState -> ExchangeClosedState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Queue "test-if-unused-queue" state: QueueDeclaredState -> QueueRemovingState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel#2:
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> CLOSE
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "test-if-unused-queue" state: ChannelOpenState -> ChannelClosingState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> code: 404
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> text: NOT_FOUND - no queue 'test-if-unused-queue' in vhost '/'
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> class-id: 50
QDEBUG : tst_QAMQPExchange::removeIfUnused() >> method-id: 40
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "test-if-unused-queue" state: ChannelClosingState -> ChannelClosedState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Queue "test-if-unused-queue" state: QueueRemovingState -> QueueClosedState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Consumer "test-if-unused-queue" state: ConsumerQueueDeclaredState -> ConsumerQueueUndeclaredState 
FAIL!  : tst_QAMQPExchange::removeIfUnused() 'waitForSignal(queue, SIGNAL(removed()))' returned FALSE. ()
   Loc: [../../../../tests/auto/qamqpexchange/tst_qamqpexchange.cpp(156)]
QDEBUG : tst_QAMQPExchange::removeIfUnused() Connection: 
QDEBUG : tst_QAMQPExchange::removeIfUnused() void QAmqpClientPrivate::closeOk(const QAmqpMethodFrame&) received 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "test-if-unused-exchange" state: ChannelClosedState -> ChannelClosedState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Exchange "test-if-unused-exchange" state: ExchangeClosedState -> ExchangeClosedState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() exchange  "test-if-unused-exchange"  disconnected 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Exchange "test-if-unused-exchange" state: ExchangeClosedState -> ExchangeClosedState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Channel "test-if-unused-queue" state: ChannelClosedState -> ChannelClosedState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Queue "test-if-unused-queue" state: QueueClosedState -> QueueClosedState 
QDEBUG : tst_QAMQPExchange::removeIfUnused() Consumer "test-if-unused-queue" state: ConsumerQueueUndeclaredState -> ConsumerQueueUndeclaredState 

I've confirmed this on AMD64 and i386. Interesting, the builds are passing on Travis-CI, so there's something different about the Ubuntu build there as opposed to what Debian ships.

sjlongland commented 9 years ago

Debian Jessie is fine it seems, the problem is specific to Wheezy.