[jboss-cvs] JBossAS SVN: r62236 - in branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq: test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Apr 10 13:18:39 EDT 2007
Author: adrian at jboss.org
Date: 2007-04-10 13:18:39 -0400 (Tue, 10 Apr 2007)
New Revision: 62236
Added:
branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyClientILService.java
branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyJBossMQTest.java
branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerIL.java
branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerSession.java
branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerSessionPool.java
branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/test/ConnectionConsumerErrorFiredUnitTestCase.java
Log:
[JBAS-4312] - Add a mock test for the ExceptionListener getting fired when there is an error in the listening thread for the Connection Consumer
Added: branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyClientILService.java
===================================================================
--- branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyClientILService.java (rev 0)
+++ branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyClientILService.java 2007-04-10 17:18:39 UTC (rev 62236)
@@ -0,0 +1,84 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.jbossmq.support;
+
+import java.util.Properties;
+
+import org.jboss.mq.Connection;
+import org.jboss.mq.ReceiveRequest;
+import org.jboss.mq.SpyDestination;
+import org.jboss.mq.il.ClientIL;
+import org.jboss.mq.il.ClientILService;
+import org.jboss.mq.il.ServerIL;
+
+/**
+ * DummyClientILService.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class DummyClientILService implements ClientILService, ClientIL
+{
+ private Connection connection;
+
+ public ClientIL getClientIL() throws Exception
+ {
+ return this;
+ }
+
+ public void init(Connection connection, Properties props) throws Exception
+ {
+ this.connection = connection;
+ DummyServerIL serverIL = (DummyServerIL) connection.getServerIL();
+ serverIL.setClientIL(this);
+ }
+
+ public void start() throws Exception
+ {
+ // Nothing
+ }
+
+ public void stop() throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("stop");
+ }
+
+ public void close() throws Exception
+ {
+ connection.asynchClose();
+ }
+
+ public void deleteTemporaryDestination(SpyDestination dest) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("deleteTemporaryDestination");
+ }
+
+ public void pong(long serverTime) throws Exception
+ {
+ connection.asynchPong(serverTime);
+ }
+
+ public void receive(ReceiveRequest[] messages) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("receive");
+ }
+}
Added: branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyJBossMQTest.java
===================================================================
--- branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyJBossMQTest.java (rev 0)
+++ branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyJBossMQTest.java 2007-04-10 17:18:39 UTC (rev 62236)
@@ -0,0 +1,82 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.jbossmq.support;
+
+import java.util.Properties;
+
+import javax.jms.ExceptionListener;
+import javax.jms.JMSException;
+
+import org.jboss.mq.GenericConnectionFactory;
+import org.jboss.mq.SpyConnection;
+import org.jboss.mq.il.ServerIL;
+import org.jboss.mq.il.ServerILFactory;
+import org.jboss.test.BaseTestCase;
+
+/**
+ * DummyJBossMQTest.<p>
+ *
+ * Uses the DummyIL to test client behaviour under
+ * more "controlled" conditions
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class DummyJBossMQTest extends BaseTestCase implements ExceptionListener
+{
+ private JMSException exception;
+
+ public DummyJBossMQTest(String name)
+ {
+ super(name);
+ }
+
+ protected SpyConnection createConnection() throws Exception
+ {
+ ServerIL serverIL = new DummyServerIL();
+ Properties properties = new Properties();
+ properties.put(ServerILFactory.CLIENT_IL_SERVICE_KEY, DummyClientILService.class.getName());
+ GenericConnectionFactory gcf = new GenericConnectionFactory(serverIL, properties);
+ SpyConnection connection = new SpyConnection(SpyConnection.UNIFIED, gcf);
+ connection.setExceptionListener(this);
+ return connection;
+ }
+
+ protected void setThrowError(SpyConnection connection, String when)
+ {
+ DummyServerIL serverIL = (DummyServerIL) connection.getServerIL();
+ serverIL.setThrowError(when);
+ }
+
+ protected synchronized JMSException getException() throws Exception
+ {
+ if (exception == null)
+ wait(10000);
+ return exception;
+ }
+
+ public synchronized void onException(JMSException exception)
+ {
+ this.exception = exception;
+ notifyAll();
+ }
+}
Added: branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerIL.java
===================================================================
--- branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerIL.java (rev 0)
+++ branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerIL.java 2007-04-10 17:18:39 UTC (rev 62236)
@@ -0,0 +1,177 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.jbossmq.support;
+
+import java.io.IOException;
+
+import javax.jms.Destination;
+import javax.jms.Queue;
+import javax.jms.TemporaryQueue;
+import javax.jms.TemporaryTopic;
+import javax.jms.Topic;
+
+import org.jboss.mq.AcknowledgementRequest;
+import org.jboss.mq.ConnectionToken;
+import org.jboss.mq.DurableSubscriptionID;
+import org.jboss.mq.SpyDestination;
+import org.jboss.mq.SpyMessage;
+import org.jboss.mq.Subscription;
+import org.jboss.mq.TransactionRequest;
+import org.jboss.mq.il.ClientIL;
+import org.jboss.mq.il.ServerIL;
+import org.jboss.util.id.UID;
+
+/**
+ * DummyServerIL.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class DummyServerIL implements ServerIL
+{
+ private ClientIL clientIL;
+
+ private String when = "";
+
+ public void setThrowError(String when)
+ {
+ this.when = when;
+ }
+
+ public void setClientIL(ClientIL clientIL)
+ {
+ this.clientIL = clientIL;
+ }
+
+ public void acknowledge(ConnectionToken dc, AcknowledgementRequest item) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("acknowledge");
+ }
+
+ public void addMessage(ConnectionToken dc, SpyMessage message) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("addMessage");
+ }
+
+ public String authenticate(String userName, String password) throws Exception
+ {
+ return UID.asString();
+ }
+
+ public SpyMessage[] browse(ConnectionToken dc, Destination dest, String selector) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("browse");
+ }
+
+ public void checkID(String ID) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("checkID");
+ }
+
+ public String checkUser(String userName, String password) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("checkUser");
+ }
+
+ public ServerIL cloneServerIL() throws Exception
+ {
+ return this;
+ }
+
+ public void connectionClosing(ConnectionToken dc) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("connectionClosing");
+ }
+
+ public Queue createQueue(ConnectionToken dc, String dest) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("createQueue");
+ }
+
+ public Topic createTopic(ConnectionToken dc, String dest) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("createTopic");
+ }
+
+ public void deleteTemporaryDestination(ConnectionToken dc, SpyDestination dest) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("deleteTemporaryDestination");
+ }
+
+ public void destroySubscription(ConnectionToken dc, DurableSubscriptionID id) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("destroySubscription");
+ }
+
+ public String getID() throws Exception
+ {
+ return UID.asString();
+ }
+
+ public TemporaryQueue getTemporaryQueue(ConnectionToken dc) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("getTemporaryQueue");
+ }
+
+ public TemporaryTopic getTemporaryTopic(ConnectionToken dc) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("getTemporaryTopic");
+ }
+
+ public void ping(ConnectionToken dc, long clientTime) throws Exception
+ {
+ clientIL.pong(clientTime);
+ }
+
+ public SpyMessage receive(ConnectionToken dc, int subscriberId, long wait) throws Exception
+ {
+ if ("receive".equals(when))
+ throw new IOException("Error in receive");
+ return null;
+ }
+
+ public void setConnectionToken(ConnectionToken newConnectionToken) throws Exception
+ {
+ // Nothing
+ }
+
+ public void setEnabled(ConnectionToken dc, boolean enabled) throws Exception
+ {
+ // Nothing
+ }
+
+ public void subscribe(ConnectionToken dc, Subscription s) throws Exception
+ {
+ // Nothing
+ }
+
+ public void transact(ConnectionToken dc, TransactionRequest t) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("transact");
+
+ }
+
+ public void unsubscribe(ConnectionToken dc, int subscriptionId) throws Exception
+ {
+ throw new org.jboss.util.NotImplementedException("unsubscribe");
+ }
+}
Added: branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerSession.java
===================================================================
--- branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerSession.java (rev 0)
+++ branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerSession.java 2007-04-10 17:18:39 UTC (rev 62236)
@@ -0,0 +1,54 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.jbossmq.support;
+
+import javax.jms.JMSException;
+import javax.jms.ServerSession;
+import javax.jms.Session;
+
+import org.jboss.util.NotImplementedException;
+
+/**
+ * DummyServerSession.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class DummyServerSession implements ServerSession
+{
+ private Session session;
+
+ public DummyServerSession(Session session)
+ {
+ this.session = session;
+ }
+
+ public Session getSession() throws JMSException
+ {
+ return session;
+ }
+
+ public void start() throws JMSException
+ {
+ throw new NotImplementedException("start");
+ }
+}
Added: branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerSessionPool.java
===================================================================
--- branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerSessionPool.java (rev 0)
+++ branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/support/DummyServerSessionPool.java 2007-04-10 17:18:39 UTC (rev 62236)
@@ -0,0 +1,49 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.jbossmq.support;
+
+import javax.jms.Connection;
+import javax.jms.JMSException;
+import javax.jms.ServerSession;
+import javax.jms.ServerSessionPool;
+import javax.jms.Session;
+
+/**
+ * DummyServerSessionPool.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class DummyServerSessionPool implements ServerSessionPool
+{
+ private Connection connection;
+
+ public DummyServerSessionPool(Connection connection)
+ {
+ this.connection = connection;
+ }
+
+ public ServerSession getServerSession() throws JMSException
+ {
+ return new DummyServerSession(connection.createSession(false, Session.AUTO_ACKNOWLEDGE));
+ }
+}
Added: branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/test/ConnectionConsumerErrorFiredUnitTestCase.java
===================================================================
--- branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/test/ConnectionConsumerErrorFiredUnitTestCase.java (rev 0)
+++ branches/Branch_4_0/testsuite/src/main/org/jboss/test/jbossmq/test/ConnectionConsumerErrorFiredUnitTestCase.java 2007-04-10 17:18:39 UTC (rev 62236)
@@ -0,0 +1,67 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.jbossmq.test;
+
+import java.io.IOException;
+
+import javax.jms.JMSException;
+import javax.jms.ServerSessionPool;
+
+import org.jboss.mq.SpyConnection;
+import org.jboss.mq.SpyQueue;
+import org.jboss.test.jbossmq.support.DummyJBossMQTest;
+import org.jboss.test.jbossmq.support.DummyServerSessionPool;
+
+/**
+ * Test an error in the connection consumer fires
+ * the asynch failure, i.e. exception listener
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ConnectionConsumerErrorFiredUnitTestCase extends DummyJBossMQTest
+{
+ public ConnectionConsumerErrorFiredUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testExceptionListenerFiredOnError() throws Exception
+ {
+ SpyConnection connection = createConnection();
+ try
+ {
+ ServerSessionPool pool = new DummyServerSessionPool(connection);
+ connection.createConnectionConsumer(new SpyQueue("QUEUE.testQueue"), null, pool, 1);
+ setThrowError(connection, "receive");
+ connection.start();
+
+ JMSException e = getException();
+ assertNotNull("ExceptionListener should have been invoked", e);
+ checkThrowable(IOException.class, e.getLinkedException());
+ }
+ finally
+ {
+ connection.close();
+ }
+ }
+}
More information about the jboss-cvs-commits
mailing list