1 21 22 package org.opensubsystems.core.persist.db; 23 24 import java.sql.Connection ; 25 26 import javax.transaction.Status ; 27 import javax.transaction.UserTransaction ; 28 29 import junit.framework.TestCase; 30 31 import org.opensubsystems.core.error.OSSException; 32 import org.opensubsystems.core.util.Config; 33 34 44 public abstract class DatabaseTest extends TestCase 45 { 46 48 53 protected static final String DEFAULT_DB_USER = "bastatest"; 54 55 58 protected static final String DEFAULT_DB_PASSWORD = "fidli"; 59 60 63 protected static final String DEFAULT_PROPERTY_FILE = "osstest.properties"; 64 65 67 72 protected UserTransaction m_transaction; 73 74 80 protected Connection m_connection; 81 82 87 protected int m_iRequestedConnectionCount; 88 89 91 94 static 95 { 96 if (Config.getInstance().getPropertyFileName() == null) 97 { 98 Config.getInstance().setPropertyFileName(DEFAULT_PROPERTY_FILE); 99 } 100 } 101 102 107 public DatabaseTest( 108 String strTestName 109 ) 110 { 111 super(strTestName); 112 113 m_transaction = null; 114 m_connection = null; 115 } 116 117 127 public static synchronized void addDataSource( 128 String strDataSourceName, 129 String strDriverName, 130 String strUrl 131 ) throws OSSException 132 { 133 DatabaseConnectionFactoryImpl.getInstance().addDataSource(strDataSourceName, 134 strDriverName, 135 strUrl, 136 DEFAULT_DB_USER, 137 DEFAULT_DB_PASSWORD); 138 } 139 140 152 public static synchronized void addDataSource( 153 String strDataSourceName, 154 String strDriverName, 155 String strUrl, 156 String strUser, 157 String strPassword 158 ) throws OSSException 159 { 160 DatabaseConnectionFactoryImpl.getInstance().addDataSource(strDataSourceName, 161 strDriverName, 162 strUrl, 163 strUser, 164 strPassword); 165 } 166 167 174 public static void setDataSourceName( 175 String strDataSourceName 176 ) throws OSSException 177 { 178 DatabaseConnectionFactoryImpl.getInstance().setDefaultDataSourceName( 179 strDataSourceName); 180 } 181 182 188 public static String getDataSourceName( 189 ) throws OSSException 190 { 191 return DatabaseConnectionFactoryImpl.getInstance().getDefaultDataSourceName(); 192 } 193 194 199 protected void setUp( 200 ) throws Exception 201 { 202 super.setUp(); 203 204 m_transaction = DatabaseTransactionFactoryImpl.getInstance().requestTransaction(); 207 m_connection = DatabaseConnectionFactoryImpl.getInstance().requestConnection(false); 209 210 m_iRequestedConnectionCount 212 = DatabaseConnectionFactoryImpl.getInstance().getTotalRequestedConnectionCount(); 213 } 214 215 220 protected void tearDown( 221 ) throws Exception 222 { 223 try 224 { 225 assertEquals("Somebody forgot to return connection to the pool.", 227 m_iRequestedConnectionCount, 228 DatabaseConnectionFactoryImpl.getInstance().getTotalRequestedConnectionCount()); 229 230 int iStatus; 231 232 iStatus = m_transaction.getStatus(); 233 234 if ((iStatus != Status.STATUS_NO_TRANSACTION) 235 && (iStatus != Status.STATUS_COMMITTED) 236 && (iStatus != Status.STATUS_ROLLEDBACK)) 237 { 238 fail("Transaction wasn't commited or rollbacked. Status is " + iStatus); 239 } 240 } 241 finally 242 { 243 if (m_connection != null) 244 { 245 if (!m_connection.isClosed()) 246 { 247 DatabaseConnectionFactoryImpl.getInstance().returnConnection(m_connection); 248 } 249 } 250 } 251 252 super.tearDown(); 253 } 254 } 255 | Popular Tags |