diff options
| author | Martin Ritchie <ritchiem@apache.org> | 2008-07-15 17:06:16 +0000 |
|---|---|---|
| committer | Martin Ritchie <ritchiem@apache.org> | 2008-07-15 17:06:16 +0000 |
| commit | 6559188d55660d876517cf4dacc270fe4ed5b533 (patch) | |
| tree | 70411f085344b513e5c97537e4442efcd5664f99 /java/010ExcludeList | |
| parent | c4198fca48124f3adeb14792fed0b7246bc356f4 (diff) | |
| download | qpid-python-6559188d55660d876517cf4dacc270fe4ed5b533.tar.gz | |
QPID-940,QPID-594,QPID-805,QPID-826 : Updated the client exception handling so that exceptions are not lost. In performing the changes I noted that the AMQStateManager is only used for connection creation in the 08/09 codepath. Now this may be due to the fact that we don't currently need to wait on any other states. We need to improve our testing of error conditions for all protcol versions.
Changes Summary:
The MethodHandlers had their AMQStateManager parameters swapped for AMQSession as that is what they all cared about.
The BlockingMethodFrameListener was used as a basis to create a generic BlockingWaiter which is now used by StateWaiter,
There is probably scope to refactor the AMQStateManager and the parts of the AMQProtocolHandler that deal with the _frameListeners into a generic class but that can be looked at as part of a wider client refactor.
Additionally tests were updated such as SimpleACLTest and ConnectionTest as they were expecting JMSExceptions from the constructor but the JMS API does not demand that and AMQExceptions are now correctly being thrown.
The SimpleACLTest also required a change to AMQSession.
The test calls send which will cause the connection to be closed asynchrously due to a permission violation. As this exception is not expected and is asynchorous to the client code it cannot be directly thrown. The solution is to record this exception in the AMQStateManager, it can tell that there are no waiters for the exception so it can record the value.(Potential exists to alert if the exception is overwritten but I don't think this is required right now)
When the AMQSession checks that the connection is closed it is then possible to check if the current State is CLOSED and if we have an exception sitting in the AMQStateManager. If all these are true we can attach the AMQStateManager exception to the IllegalState Exception that is normally thrown when the Session is closed.
This maintains JMS Compliance and allows us to discover the cause of the failure, SimpleACLTest was updated by removing the IllegalState catch section that was causing the test to silently fail.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@676978 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/010ExcludeList')
| -rw-r--r-- | java/010ExcludeList | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/java/010ExcludeList b/java/010ExcludeList index 8fed9274bb..98d6593d0d 100644 --- a/java/010ExcludeList +++ b/java/010ExcludeList @@ -52,9 +52,9 @@ org.apache.qpid.test.unit.xa.FaultTest#testForget org.apache.qpid.server.queue.PriorityTest //this test checks explicitly for 0-8 flow control semantics org.apache.qpid.test.client.FlowControlTest -// Client Race Condition -org.apache.qpid.test.unit.client.connection.ConnectionTest#testPasswordFailureConnection // 0-10 c++ broker doesn't implement virtual hosts, or those wackhy exchanges org.apache.qpid.test.unit.client.connection.ConnectionTest#testUnresolvedVirtualHostFailure org.apache.qpid.test.unit.client.connection.ConnectionTest#testDefaultExchanges +// 0-10 c++ broker in cpp.testprofile is started with no auth so won't pass this test +org.apache.qpid.test.unit.client.connection.ConnectionTest#testPasswordFailureConnection |
