diff options
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java')
-rw-r--r-- | src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java | 246 |
1 files changed, 0 insertions, 246 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java b/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java deleted file mode 100644 index 75157a81ccc..00000000000 --- a/src/interfaces/jdbc/org/postgresql/test/jdbc2/optional/BaseDataSourceTest.java +++ /dev/null @@ -1,246 +0,0 @@ -package org.postgresql.test.jdbc2.optional; - -import junit.framework.TestCase; -import org.postgresql.test.TestUtil; -import org.postgresql.jdbc2.optional.BaseDataSource; -import org.postgresql.PGConnection; - -import java.sql.*; -import java.util.*; -import javax.naming.*; - -/** - * Common tests for all the BaseDataSource implementations. This is - * a small variety to make sure that a connection can be opened and - * some basic queries run. The different BaseDataSource subclasses - * have different subclasses of this which add additional custom - * tests. - * - * @author Aaron Mulder (ammulder@chariotsolutions.com) - * @version $Revision: 1.6 $ - */ -public abstract class BaseDataSourceTest extends TestCase -{ - public static String DATA_SOURCE_JNDI = "BaseDataSource"; - protected Connection con; - protected BaseDataSource bds; - - /** - * Constructor required by JUnit - */ - public BaseDataSourceTest(String name) - { - super(name); - } - - /** - * Creates a test table using a standard connection (not from a - * DataSource). - */ - protected void setUp() throws Exception - { - con = TestUtil.openDB(); - TestUtil.createTable(con, "poolingtest", "id int4 not null primary key, name varchar(50)"); - Statement stmt = con.createStatement(); - stmt.executeUpdate("INSERT INTO poolingtest VALUES (1, 'Test Row 1')"); - stmt.executeUpdate("INSERT INTO poolingtest VALUES (2, 'Test Row 2')"); - TestUtil.closeDB(con); - } - - /** - * Removes the test table using a standard connection (not from - * a DataSource) - */ - protected void tearDown() throws Exception - { - con = TestUtil.openDB(); - TestUtil.dropTable(con, "poolingtest"); - TestUtil.closeDB(con); - } - - /** - * Gets a connection from the current BaseDataSource - */ - protected Connection getDataSourceConnection() throws SQLException - { - if(bds == null) - { - initializeDataSource(); - } - return bds.getConnection(); - } - - /** - * Creates an instance of the current BaseDataSource for - * testing. Must be customized by each subclass. - */ - protected abstract void initializeDataSource(); - - /** - * Test to make sure you can instantiate and configure the - * appropriate DataSource - */ - public void testCreateDataSource() - { - initializeDataSource(); - } - - /** - * Test to make sure you can get a connection from the DataSource, - * which in turn means the DataSource was able to open it. - */ - public void testGetConnection() - { - try - { - con = getDataSourceConnection(); - con.close(); - } - catch (SQLException e) - { - fail(e.getMessage()); - } - } - - /** - * A simple test to make sure you can execute SQL using the - * Connection from the DataSource - */ - public void testUseConnection() - { - try - { - con = getDataSourceConnection(); - Statement st = con.createStatement(); - ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM poolingtest"); - if (rs.next()) - { - int count = rs.getInt(1); - if (rs.next()) - { - fail("Should only have one row in SELECT COUNT result set"); - } - if (count != 2) - { - fail("Count returned " + count + " expecting 2"); - } - } - else - { - fail("Should have one row in SELECT COUNT result set"); - } - rs.close(); - st.close(); - con.close(); - } - catch (SQLException e) - { - fail(e.getMessage()); - } - } - - /** - * A test to make sure you can execute DDL SQL using the - * Connection from the DataSource. - */ - public void testDdlOverConnection() - { - try - { - con = getDataSourceConnection(); - TestUtil.createTable(con, "poolingtest", "id int4 not null primary key, name varchar(50)"); - con.close(); - } - catch (SQLException e) - { - fail(e.getMessage()); - } - } - - /** - * A test to make sure the connections are not being pooled by the - * current DataSource. Obviously need to be overridden in the case - * of a pooling Datasource. - */ - public void testNotPooledConnection() - { - try - { - con = getDataSourceConnection(); - String name = con.toString(); - con.close(); - con = getDataSourceConnection(); - String name2 = con.toString(); - con.close(); - assertTrue(!name.equals(name2)); - } - catch (SQLException e) - { - fail(e.getMessage()); - } - } - - /** - * Test to make sure that PGConnection methods can be called on the - * pooled Connection. - */ - public void testPGConnection() - { - try - { - con = getDataSourceConnection(); - ((PGConnection)con).getNotifications(); - con.close(); - } - catch (Exception e) - { - fail("Unable to call PGConnection method on pooled connection due to "+e.getClass().getName()+" ("+e.getMessage()+")"); - } - } - - /** - * Uses the mini-JNDI implementation for testing purposes - */ - protected InitialContext getInitialContext() - { - Hashtable env = new Hashtable(); - env.put(Context.INITIAL_CONTEXT_FACTORY, "org.postgresql.test.util.MiniJndiContextFactory"); - try { - return new InitialContext(env); - } catch(NamingException e) { - fail("Unable to create InitialContext: "+e.getMessage()); - return null; - } - } - - /** - * Eventually, we must test stuffing the DataSource in JNDI and - * then getting it back out and make sure it's still usable. This - * should ideally test both Serializable and Referenceable - * mechanisms. Will probably be multiple tests when implemented. - */ - public void testJndi() - { - initializeDataSource(); - BaseDataSource oldbds = bds; - InitialContext ic = getInitialContext(); - try { - ic.rebind(DATA_SOURCE_JNDI, bds); - bds = (BaseDataSource)ic.lookup(DATA_SOURCE_JNDI); - assertTrue("Got null looking up DataSource from JNDI!", bds != null); - compareJndiDataSource(oldbds, bds); - } catch (NamingException e) { - fail(e.getMessage()); - } - oldbds = bds; - testUseConnection(); - assertTrue("Test should not have changed DataSource ("+bds+" != "+oldbds+")!", bds == oldbds); - } - - /** - * Check whether a DS was dereferenced from JNDI or recreated. - */ - protected void compareJndiDataSource(BaseDataSource oldbds, BaseDataSource bds) { - assertTrue("DataSource was dereferenced, should have been serialized or recreated", bds != oldbds); - } -} |