[
https://issues.apache.org/jira/browse/QPID-3164?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13015072#comment-13015072
]
Keith Wall edited comment on QPID-3164 at 4/3/11 9:27 AM:
----------------------------------------------------------
Thanks Andrew. The problems are in the test cases I added whilst addressing
QPID-2900.
The first problem is that test testRequeueForQueueWithMultipleSubscriptions
assumes that message delivery to multiple subscriptions is deterministic, when
it is not. The test assumes that 1 message will go the first, and 1 to second.
This might or might not be the case depending on the actions of SubFlushRunner
and QueueRunner.
The second problem is that the tests call QueueEntry.release, then call
SimpleAMQQueue.requeue(). This is incorrect since QueueEntry.release() is
responsible for making the call to SimpleAMQQueue.requeue(). This explains why
testSubscriptionSpecificRequeueForQueueWithMultipleSubscriptions is sometimes
seen to fail. The test hopes to cause the entry to go to a particular
subscription (using SimpleAMQQueue.requeue(queueEntry, sub)), but since the
test calls release(), the requeue could go to either subscription.
However, I notice that SimpleAMQQueue.requeue(QueueEntryImpl, Subscription) and
QueueEntryImpl.requeue(QueueEntryImp, Subscription subscription) appear to be
dead code. SimpleAMQQueue.requeue(QueueEntryImpl, Subscription) was used by
SubscriptionImpl by this was removed by commit
afcf8099695253651c73910a243fb29aa520b008 (Merged from java-broker-0-10 branch)
in Oct-2009.
I'll prepare a patch to fix the test and remove these dead methods.
was (Author: k-wall):
Thanks Andrew. The problems are in the test cases I added whilst
addressing QPID-2900.
The first problem is that test testRequeueForQueueWithMultipleSubscriptions
assumes that message delivery to multiple subscriptions is deterministic, when
it is not. The test assumes that 1 message will go the first, and 1 to second.
This might or might not be the case depending on the actions of SubFlushRunner
and QueueRunner.
The second problem is that the tests call QueueEntry.release, then call
SimpleAMQQueue.requeue(). This is incorrect since QueueEntry.release() is
responsible for making the call to SimpleAMQQueue.requeue(). This explains why
testSubscriptionSpecificRequeueForQueueWithMultipleSubscriptions is sometimes
seen to fail. The test hopes to cause the entry to go to a particular
subscription (using SimpleAMQQueue.requeue(queueEntry, sub)), but since the
test calls release(), the requeue could go to either subscription.
However, I notice that SimpleAMQQueue.requeue(QueueEntryImpl, Subscription) and
QueueEntryImpl.requeue(QueueEntryImp, Subscription subscription) appear to be
dead code. SimpleAMQQueue.requeue(QueueEntryImpl, Subscription) was last prior
to afcf8099695253651c73910a243fb29aa520b008 (Merged from java-broker-0-10
branch).
I'll prepare a patch to fix the test and remove these dead methods.
> Occasional test failures from
> SimpleAMQQueueTest.testSubscriptionSpecificRequeueForQueueWithMultipleSubscriptions
> -----------------------------------------------------------------------------------------------------------------
>
> Key: QPID-3164
> URL: https://issues.apache.org/jira/browse/QPID-3164
> Project: Qpid
> Issue Type: Bug
> Components: Java Tests
> Affects Versions: 0.10, 0.11
> Reporter: Keith Wall
> Assignee: Keith Wall
>
> QPID-2900 added a new test case
> SimpleAMQQueueTest.testSubscriptionSpecificRequeueForQueueWithMultipleSubscriptions
> which aims to verify that the method SimpleAMQQueue.requeue(QueueEntry,
> Subscription) behaves correctly and correctly requeues a entry for a specific
> subscription. The test is showing sporadic test failures.
> junit.framework.AssertionFailedError: Unexpected total number of messages
> sent to subscription1 after enqueue expected:<1> but was:<0>
> at
> org.apache.qpid.server.queue.SimpleAMQQueueTest.testSubscriptionSpecificRequeueForQueueWithMultipleSubscriptions(SimpleAMQQueueTest.java:453)
> at org.apache.qpid.test.utils.QpidTestCase.run(QpidTestCase.java:120)
> I notice that the test case has even failed on the new Jenkins instance:
> https://builds.apache.org/hudson/pview/job/qpid-java-build/7/testReport/junit/org.apache.qpid.server.queue/SimpleAMQQueueTest/testSubscriptionSpecificRequeueForQueueWithMultipleSubscriptions/
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]