View Javadoc
1 /*** 2 * Redistribution and use of this software and associated documentation 3 * ("Software"), with or without modification, are permitted provided 4 * that the following conditions are met: 5 * 6 * 1. Redistributions of source code must retain copyright 7 * statements and notices. Redistributions must also contain a 8 * copy of this document. 9 * 10 * 2. Redistributions in binary form must reproduce the 11 * above copyright notice, this list of conditions and the 12 * following disclaimer in the documentation and/or other 13 * materials provided with the distribution. 14 * 15 * 3. The name "Exolab" must not be used to endorse or promote 16 * products derived from this Software without prior written 17 * permission of Exoffice Technologies. For written permission, 18 * please contact tma@netspace.net.au. 19 * 20 * 4. Products derived from this Software may not be called "Exolab" 21 * nor may "Exolab" appear in their names without prior written 22 * permission of Exoffice Technologies. Exolab is a registered 23 * trademark of Exoffice Technologies. 24 * 25 * 5. Due credit should be given to the Exolab Project 26 * (http://www.exolab.org/). 27 * 28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS 29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 39 * OF THE POSSIBILITY OF SUCH DAMAGE. 40 * 41 * Copyright 2001-2004 (C) Exoffice Technologies Inc. All Rights Reserved. 42 * 43 * $Id: ConnectionTestRunner.java,v 1.4 2004/01/31 13:44:24 tanderson Exp $ 44 */ 45 package org.exolab.jmscts.core; 46 47 import javax.jms.Connection; 48 49 import org.apache.log4j.Category; 50 51 import junit.framework.Test; 52 import junit.framework.TestResult; 53 54 55 /*** 56 * This class enables generic connection test cases to be run for each JMS 57 * connection type. 58 * <p> 59 * Test cases must implement the {@link ConnectionTestCase} interface. 60 * 61 * @version $Revision: 1.4 $ $Date: 2004/01/31 13:44:24 $ 62 * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a> 63 * @see ConnectionTestCase 64 * @see ConnectionFactoryTestCase 65 * @see ProviderTestRunner 66 * @seee TestRunner 67 */ 68 public class ConnectionTestRunner extends TestRunner 69 implements ConnectionFactoryTestCase { 70 71 /*** 72 * The logger 73 */ 74 private static final Category log = 75 Category.getInstance(ConnectionTestRunner.class.getName()); 76 77 78 /*** 79 * Construct an instance with the test case to run 80 * 81 * @param test the test case to run. 82 */ 83 public ConnectionTestRunner(ConnectionTestCase test) { 84 super(test); 85 } 86 87 /*** 88 * Return the connection factory types to run the test cases against 89 * 90 * @return the connection factory types to run the test cases against 91 */ 92 public ConnectionFactoryTypes getConnectionFactoryTypes() { 93 return ((ConnectionTestCase) getTest()).getConnectionFactoryTypes(); 94 } 95 96 /*** 97 * Runs a test case for the given connection. 98 * 99 * @param test the test case 100 * @param result the instance to collect test results in 101 */ 102 protected void runTest(Test test, TestResult result) { 103 Tester tester = new Tester(test, result, getContext(), getFilter()); 104 result.runProtected(test, tester); 105 } 106 107 /*** 108 * Helper class to run a test case 109 */ 110 private class Tester extends TestInvoker { 111 112 /*** 113 * Construct a new <code>Tester</code> 114 * 115 * @param test the test to invoke 116 * @param result the instance to collect test results in 117 * @param context the test context 118 * @param filter the test filter 119 */ 120 public Tester(Test test, TestResult result, TestContext context, 121 TestFilter filter) { 122 super(test, result, context, filter); 123 } 124 125 /*** 126 * Set up the test case 127 * 128 * @param test the test case 129 * @param context the test context 130 * @throws Exception for any error 131 */ 132 protected void setUp(JMSTest test, TestContext context) 133 throws Exception { 134 135 ConnectionTestCase connectionTest = (ConnectionTestCase) test; 136 Connection connection = null; 137 138 String clientID = null; // "ConnectionTestRunner"; 139 connection = ConnectionFactoryHelper.createConnection( 140 context, clientID); 141 if (log.isDebugEnabled()) { 142 log.debug("ConnectionTestRunner: running test=" + test 143 + " using connection type=" 144 + connection.getClass().getName()); 145 } 146 147 TestContext child = new TestContext(context, connection); 148 setChildContext(child); 149 connectionTest.setContext(child); 150 151 if (connectionTest.startConnection()) { 152 try { 153 connection.start(); 154 } catch (Exception exception) { 155 log.error(exception, exception); 156 throw exception; 157 } 158 } 159 } 160 161 /*** 162 * Cleans up after the test case has been run 163 * 164 * @param test the test case 165 * @param context the test context 166 * @throws Exception for any error 167 */ 168 protected void tearDown(JMSTest test, TestContext context) 169 throws Exception { 170 171 ConnectionTestCase connectionTest = (ConnectionTestCase) test; 172 Connection connection = getChildContext().getConnection(); 173 174 if (log.isDebugEnabled()) { 175 log.debug("ConnectionTestRunner: completed test=" + test 176 + " using connection type=" 177 + connection.getClass().getName()); 178 } 179 180 connection.close(); 181 } 182 183 } 184 185 }

This page was automatically generated by Maven