summaryrefslogtreecommitdiff
path: root/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/JavaServerCloseRaceConditionTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/JavaServerCloseRaceConditionTest.java')
-rw-r--r--trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/JavaServerCloseRaceConditionTest.java119
1 files changed, 0 insertions, 119 deletions
diff --git a/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/JavaServerCloseRaceConditionTest.java b/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/JavaServerCloseRaceConditionTest.java
deleted file mode 100644
index 3fb6cd3526..0000000000
--- a/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/close/JavaServerCloseRaceConditionTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.qpid.test.unit.close;
-
-import org.apache.qpid.client.AMQConnection;
-import org.apache.qpid.client.AMQDestination;
-import org.apache.qpid.client.AMQSession;
-import org.apache.qpid.framing.AMQFrame;
-import org.apache.qpid.framing.AMQShortString;
-import org.apache.qpid.framing.ExchangeDeclareBody;
-import org.apache.qpid.framing.ExchangeDeclareOkBody;
-import org.apache.qpid.test.utils.QpidTestCase;
-
-import javax.jms.Session;
-
-/** QPID-1809
- *
- * Race condition on error handling and close logic.
- *
- * See most often with SimpleACLTest as this test is the expects the server to
- * shut the connection/channels. This sort of testing is not performed by many,
- * if any, of the other system tests.
- *
- * The problem is that we have two threads
- *
- * MainThread Exception(Mina)Thread
- * | |
- * Performs |
- * ACtion |
- * | Receives Server
- * | Close
- * Blocks for |
- * Response |
- * | Starts To Notify
- * | client
- * | |
- * | <----- Notify Main Thread
- * Notification |
- * wakes client |
- * | |
- * Client then |
- * processes Error. |
- * | |
- * Potentially Attempting Close Channel/Connection
- * Connection Close
- *
- * The two threads both attempt to close the connection but the main thread does
- * so assuming that the connection is open and valid.
- *
- * The Exception thread must modify the connection so that no furter syncWait
- * commands are performed.
- *
- * This test sends an ExchangeDeclare that is Asynchronous and will fail and
- * so cause a ChannelClose error but we perform a syncWait so that we can be
- * sure to test that the BlockingWaiter is correctly awoken.
- *
- */
-public class JavaServerCloseRaceConditionTest extends QpidTestCase
-{
- private static final String EXCHANGE_NAME = "NewExchangeNametoFailLookup";
-
- public void test() throws Exception
- {
-
- AMQConnection connection = (AMQConnection) getConnection();
-
- AMQSession session = (AMQSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
- // Set no wait true so that we block the connection
- // Also set a different exchange class string so the attempt to declare
- // the exchange causes an exchange.
- ExchangeDeclareBody body = session.getMethodRegistry().createExchangeDeclareBody(session.getTicket(), new AMQShortString(EXCHANGE_NAME), null,
- true, false, false, false, true, null);
-
- AMQFrame exchangeDeclare = body.generateFrame(session.getChannelId());
-
- try
- {
- // block our thread so that can times out
- connection.getProtocolHandler().syncWrite(exchangeDeclare, ExchangeDeclareOkBody.class);
- }
- catch (Exception e)
- {
- assertTrue("Exception should say the exchange is not known.", e.getMessage().contains("Unknown exchange: " + EXCHANGE_NAME));
- }
-
- try
- {
- // Depending on if the notification thread has closed the connection
- // or not we may get an exception here when we attempt to close the
- // connection. If we do get one then it should be the same as above
- // an AMQAuthenticationException.
- connection.close();
- }
- catch (Exception e)
- {
- assertTrue("Exception should say the exchange is not known.", e.getMessage().contains("Unknown exchange: " + EXCHANGE_NAME));
- }
-
- }
-}