/* * Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: TestDatasource.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.database; import junit.framework.TestCase; import org.postgresql.ds.PGSimpleDataSource; import com.uwyn.rife.database.exceptions.DatabaseException; import com.uwyn.rife.tools.ExceptionUtils; public class TestDatasource extends TestCase { public TestDatasource(String name) { super(name); } public void testInstantiation() { Datasource datasource1 = new Datasource(); assertNotNull(datasource1); assertNull(datasource1.getDriver()); assertNull(datasource1.getDataSource()); assertNull(datasource1.getUrl()); assertNull(datasource1.getUser()); assertNull(datasource1.getPassword()); assertEquals(datasource1.getPoolsize(), 0); assertTrue(!datasource1.isPooled()); String driver = "driver"; String url = "url"; String user = "user"; String password = "password"; int poolsize = 5; Datasource datasource2 = new Datasource(driver, url, user, password, poolsize); assertNotNull(datasource2); assertEquals(datasource2.getDriver(), driver); assertEquals(datasource2.getUrl(), url); assertEquals(datasource2.getUser(), user); assertEquals(datasource2.getPassword(), password); assertEquals(datasource2.getPoolsize(), poolsize); assertTrue(datasource2.isPooled()); PGSimpleDataSource pgdatasource = new PGSimpleDataSource(); Datasource datasource3 = new Datasource(pgdatasource, driver, user, password, poolsize); assertNotNull(datasource3); assertEquals(datasource3.getDriver(), driver); assertSame(datasource3.getDataSource(), pgdatasource); assertEquals(datasource3.getUser(), user); assertEquals(datasource3.getPassword(), password); assertEquals(datasource3.getPoolsize(), poolsize); assertTrue(datasource3.isPooled()); } public void testPopulation() { String driver = "driver"; String url = "url"; String user = "user"; String password = "password"; int poolsize = 5; PGSimpleDataSource pgdatasource = new PGSimpleDataSource(); Datasource datasource = new Datasource(); datasource.setDriver(driver); datasource.setDataSource(pgdatasource); datasource.setUrl(url); datasource.setUser(user); datasource.setPassword(password); datasource.setPoolsize(poolsize); assertEquals(datasource.getDriver(), driver); assertSame(datasource.getDataSource(), pgdatasource); assertEquals(datasource.getUrl(), url); assertEquals(datasource.getUser(), user); assertEquals(datasource.getPassword(), password); assertEquals(datasource.getPoolsize(), poolsize); assertTrue(datasource.isPooled()); } public void testDriverAlias() { String driver_aliased = "org.gjt.mm.mysql.Driver"; String driver_unaliased = "com.mysql.jdbc.Driver"; Datasource datasource = new Datasource(); datasource.setDriver(driver_aliased); assertEquals(datasource.getDriver(), driver_aliased); assertEquals(datasource.getAliasedDriver(), driver_unaliased); datasource.setDriver(driver_unaliased); assertEquals(datasource.getDriver(), driver_unaliased); assertEquals(datasource.getAliasedDriver(), driver_unaliased); } public void testEquality() { String driver = "driver"; String url = "url"; String user = "user"; String password = "password"; int poolsize = 5; Datasource datasource1 = new Datasource(); datasource1.setDriver(driver); datasource1.setUrl(url); datasource1.setUser(user); datasource1.setPassword(password); datasource1.setPoolsize(poolsize); Datasource datasource2 = new Datasource(driver, url, user, password, poolsize); assertNotSame(datasource1, datasource2); assertEquals(datasource1.getDriver(), datasource2.getDriver()); assertEquals(datasource1.getUrl(), datasource2.getUrl()); assertEquals(datasource1.getUser(), datasource2.getUser()); assertEquals(datasource1.getPassword(), datasource2.getPassword()); assertEquals(datasource1.getPoolsize(), datasource2.getPoolsize()); assertEquals(datasource1.isPooled(), datasource2.isPooled()); assertEquals(datasource1, datasource2); datasource2.setDriver("otherdriver"); assertTrue(!datasource1.equals(datasource2)); datasource2.setDriver(driver); assertTrue(datasource1.equals(datasource2)); datasource2.setUrl("otherurl"); assertTrue(!datasource1.equals(datasource2)); datasource2.setUrl(url); assertTrue(datasource1.equals(datasource2)); datasource2.setUser("otheruser"); assertTrue(!datasource1.equals(datasource2)); datasource2.setUser(user); assertTrue(datasource1.equals(datasource2)); datasource2.setPassword("otherpassword"); assertTrue(!datasource1.equals(datasource2)); datasource2.setPassword(password); assertTrue(datasource1.equals(datasource2)); datasource2.setPoolsize(poolsize+1); assertTrue(datasource1.equals(datasource2)); PGSimpleDataSource pgdatasource = new PGSimpleDataSource(); Datasource datasource3 = new Datasource(); datasource3.setDriver(driver); datasource3.setDataSource(pgdatasource); datasource3.setUser(user); datasource3.setPassword(password); datasource3.setPoolsize(poolsize); Datasource datasource4 = new Datasource(pgdatasource, driver, user, password, poolsize); assertNotSame(datasource3, datasource4); assertEquals(datasource3.getDriver(), datasource4.getDriver()); assertEquals(datasource3.getUrl(), datasource4.getUrl()); assertEquals(datasource3.getUser(), datasource4.getUser()); assertEquals(datasource3.getPassword(), datasource4.getPassword()); assertEquals(datasource3.getPoolsize(), datasource4.getPoolsize()); assertEquals(datasource3.isPooled(), datasource4.isPooled()); assertEquals(datasource3, datasource4); datasource4.setDriver("otherdriver"); assertTrue(!datasource3.equals(datasource4)); datasource4.setDriver(driver); assertTrue(datasource3.equals(datasource4)); datasource4.setDataSource(new PGSimpleDataSource()); assertTrue(!datasource3.equals(datasource4)); datasource4.setDataSource(pgdatasource); assertTrue(datasource3.equals(datasource4)); datasource4.setUser("otheruser"); assertTrue(!datasource3.equals(datasource4)); datasource4.setUser(user); assertTrue(datasource3.equals(datasource4)); datasource4.setPassword("otherpassword"); assertTrue(!datasource3.equals(datasource4)); datasource4.setPassword(password); assertTrue(datasource3.equals(datasource4)); datasource4.setPoolsize(poolsize+1); assertTrue(datasource3.equals(datasource4)); } public void testConnection() { Datasource datasource = Datasources.getRepInstance().getDatasource("unittestspgsql"); if (null == datasource) { System.out.println("WARNING : Datasource testConnection test not executed (postgresql missing)"); return; } DbConnection connection = null; try { connection = datasource.getConnection(); } catch (DatabaseException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertNotNull(connection); try { connection.close(); } catch (DatabaseException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConnectionDataSource1() { Datasource declared_datasource = Datasources.getRepInstance().getDatasource("unittestspgsql"); if (null == declared_datasource) { System.out.println("WARNING : Datasource testConnectionDataSource test not executed (postgresql missing)"); return; } PGSimpleDataSource pgdatasource = new PGSimpleDataSource(); pgdatasource.setDatabaseName("unittests"); pgdatasource.setServerName("localhost"); pgdatasource.setPortNumber(5432); pgdatasource.setUser("unittests"); pgdatasource.setPassword("password"); Datasource datasource = new Datasource(pgdatasource, declared_datasource.getDriver(), "unittests", "password", 5); DbConnection connection = null; try { connection = datasource.getConnection(); } catch (DatabaseException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertNotNull(connection); try { connection.close(); } catch (DatabaseException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConnectionDataSource2() { Datasource declared_datasource = Datasources.getRepInstance().getDatasource("unittestspgsql"); if (null == declared_datasource) { System.out.println("WARNING : Datasource testConnectionDataSource test not executed (postgresql missing)"); return; } PGSimpleDataSource pgdatasource = new PGSimpleDataSource(); pgdatasource.setDatabaseName("unittests"); pgdatasource.setServerName("localhost"); pgdatasource.setPortNumber(5432); pgdatasource.setUser("unittests"); pgdatasource.setPassword("password"); Datasource datasource = new Datasource(pgdatasource, 5); DbConnection connection = null; try { connection = datasource.getConnection(); } catch (DatabaseException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } assertNotNull(connection); try { connection.close(); } catch (DatabaseException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConnectionDataSourceJndi() { Datasource datasource = Datasources.getRepInstance().getDatasource("jndiderby"); assertNotNull(datasource.getSqlConversion()); Datasource datasource2 = Datasources.getRepInstance().getDatasource("jndiderby2"); assertNotNull(datasource2.getCapabilitiesCompensator()); DbConnection connection = null; try { connection = datasource.getConnection(); } catch (DatabaseException e) { fail(ExceptionUtils.getExceptionStackTrace(e)); } assertNotNull(connection); try { connection.close(); } catch (DatabaseException e) { fail(ExceptionUtils.getExceptionStackTrace(e)); } } public void testConnectionPreservation() { Datasource datasource = Datasources.getRepInstance().getDatasource("unittestspgsql"); if (null == datasource) { System.out.println("WARNING : Datasource testConnectionPreservation test not executed (postgresql missing)"); return; } try { DbConnection connection1 = null; DbConnection connection2 = null; connection1 = datasource.getConnection(); connection2 = datasource.getConnection(); assertTrue(connection1 != connection2); connection1.close(); connection2.close(); connection1 = datasource.getConnection(); connection1.beginTransaction(); connection2 = datasource.getConnection(); assertTrue(connection1 == connection2); connection1.rollback(); connection1.close(); } catch (DatabaseException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConnectionPreservationDatasource1() { Datasource declared_datasource = Datasources.getRepInstance().getDatasource("unittestspgsql"); if (null == declared_datasource) { System.out.println("WARNING : Datasource testConnectionPreservationDatasource test not executed (postgresql missing)"); return; } PGSimpleDataSource pgdatasource = new PGSimpleDataSource(); pgdatasource.setDatabaseName("unittests"); pgdatasource.setServerName("localhost"); pgdatasource.setPortNumber(5432); pgdatasource.setUser("unittests"); pgdatasource.setPassword("password"); Datasource datasource = new Datasource(pgdatasource, declared_datasource.getDriver(), "unittests", "password", 5); try { DbConnection connection1 = null; DbConnection connection2 = null; connection1 = datasource.getConnection(); connection2 = datasource.getConnection(); assertTrue(connection1 != connection2); connection1.close(); connection2.close(); connection1 = datasource.getConnection(); connection1.beginTransaction(); connection2 = datasource.getConnection(); assertTrue(connection1 == connection2); connection1.rollback(); connection1.close(); } catch (DatabaseException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } public void testConnectionPreservationDatasource2() { Datasource declared_datasource = Datasources.getRepInstance().getDatasource("unittestspgsql"); if (null == declared_datasource) { System.out.println("WARNING : Datasource testConnectionPreservationDatasource test not executed (postgresql missing)"); return; } PGSimpleDataSource pgdatasource = new PGSimpleDataSource(); pgdatasource.setDatabaseName("unittests"); pgdatasource.setServerName("localhost"); pgdatasource.setPortNumber(5432); pgdatasource.setUser("unittests"); pgdatasource.setPassword("password"); Datasource datasource = new Datasource(pgdatasource, 5); try { DbConnection connection1 = null; DbConnection connection2 = null; connection1 = datasource.getConnection(); connection2 = datasource.getConnection(); assertTrue(connection1 != connection2); connection1.close(); connection2.close(); connection1 = datasource.getConnection(); connection1.beginTransaction(); connection2 = datasource.getConnection(); assertTrue(connection1 == connection2); connection1.rollback(); connection1.close(); } catch (DatabaseException e) { assertTrue(ExceptionUtils.getExceptionStackTrace(e), false); } } }