BATCH-810: added mainframe incrementer as "db2zos", also added to metadata lookup

This commit is contained in:
trisberg
2008-09-25 16:47:19 +00:00
parent 3ae82ebc4b
commit 14fc7bb337
7 changed files with 188 additions and 9 deletions

View File

@@ -28,6 +28,7 @@ import org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrem
import org.springframework.jdbc.support.incrementer.PostgreSQLSequenceMaxValueIncrementer;
import org.springframework.jdbc.support.incrementer.SqlServerMaxValueIncrementer;
import org.springframework.jdbc.support.incrementer.SybaseMaxValueIncrementer;
import org.springframework.jdbc.support.incrementer.DB2MainframeSequenceMaxValueIncrementer;
/**
* @author Lucas Ward
@@ -49,6 +50,7 @@ public class DefaultDataFieldMaxValueIncrementerFactoryTests extends TestCase {
public void testSupportedDatabaseType(){
assertTrue(factory.isSupportedIncrementerType("db2"));
assertTrue(factory.isSupportedIncrementerType("db2zos"));
assertTrue(factory.isSupportedIncrementerType("mysql"));
assertTrue(factory.isSupportedIncrementerType("derby"));
assertTrue(factory.isSupportedIncrementerType("oracle"));
@@ -86,6 +88,10 @@ public class DefaultDataFieldMaxValueIncrementerFactoryTests extends TestCase {
assertTrue(factory.getIncrementer("db2", "NAME") instanceof DB2SequenceMaxValueIncrementer);
}
public void testDb2zos(){
assertTrue(factory.getIncrementer("db2zos", "NAME") instanceof DB2MainframeSequenceMaxValueIncrementer);
}
public void testMysql(){
assertTrue(factory.getIncrementer("mysql", "NAME") instanceof MySQLMaxValueIncrementer);
}

View File

@@ -67,7 +67,30 @@ public class SimpleDelegatingPagingQueryProviderTests {
AbstractSqlPagingQueryProvider queryProviderToBeUsed = new Db2PagingQueryProvider();
initializeQueryProvider(queryProviderToBeUsed);
EasyMock.expect(dmd.getDatabaseProductName()).andReturn("DB2/Linux");
EasyMock.replay(dmd);
EasyMock.replay(con);
EasyMock.replay(ds);
pagingQueryProvider.init(ds);
String sql = queryProviderToBeUsed.generateFirstPageQuery(pageSize);
String s = pagingQueryProvider.generateFirstPageQuery(pageSize);
Assert.assertEquals("", sql, s);
EasyMock.verify(ds);
EasyMock.verify(con);
EasyMock.verify(dmd);
}
@Test
public void testDb2ZOS() throws Exception {
AbstractSqlPagingQueryProvider queryProviderToBeUsed = new Db2PagingQueryProvider();
initializeQueryProvider(queryProviderToBeUsed);
EasyMock.expect(dmd.getDatabaseProductName()).andReturn("DB2");
expect(con.getMetaData()).andReturn(dmd);
expect(ds.getConnection()).andReturn(con);
EasyMock.expect(dmd.getDatabaseProductVersion()).andReturn("DSN08015");
EasyMock.replay(dmd);
EasyMock.replay(con);
EasyMock.replay(ds);

View File

@@ -22,6 +22,7 @@ public class DatabaseTypeTests {
public void testFromProductName(){
assertEquals(DERBY, fromProductName("Apache Derby"));
assertEquals(DB2, fromProductName("DB2"));
assertEquals(DB2ZOS, fromProductName("DB2ZOS"));
assertEquals(HSQL, fromProductName("HSQL Database Engine"));
assertEquals(SQLSERVER, fromProductName("Microsoft SQL Server"));
assertEquals(MYSQL, fromProductName("MySQL"));
@@ -37,8 +38,107 @@ public class DatabaseTypeTests {
}
@Test
public void testFromMetaData() throws Exception{
public void testFromMetaDataForDerby() throws Exception{
DatabaseMetaData dmd = createMock(DatabaseMetaData.class);
DataSource ds = createMock(DataSource.class);
Connection con = createMock(Connection.class);
expect(ds.getConnection()).andReturn(con);
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductName()).andReturn("Apache Derby");
replay(dmd,ds,con);
assertEquals(DERBY, DatabaseType.fromMetaData(ds));
verify(dmd,ds,con);
}
@Test
public void testFromMetaDataForDB2() throws Exception{
DatabaseMetaData dmd = createMock(DatabaseMetaData.class);
DataSource ds = createMock(DataSource.class);
Connection con = createMock(Connection.class);
expect(ds.getConnection()).andReturn(con);
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductName()).andReturn("DB2/Linux");
replay(dmd,ds,con);
assertEquals(DB2, DatabaseType.fromMetaData(ds));
verify(dmd,ds,con);
}
@Test
public void testFromMetaDataForDB2ZOS() throws Exception{
DatabaseMetaData dmd = createMock(DatabaseMetaData.class);
DataSource ds = createMock(DataSource.class);
Connection con = createMock(Connection.class);
expect(ds.getConnection()).andReturn(con);
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductName()).andReturn("DB2");
expect(ds.getConnection()).andReturn(con);
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductVersion()).andReturn("DSN08015");
replay(dmd,ds,con);
assertEquals(DB2ZOS, DatabaseType.fromMetaData(ds));
verify(dmd,ds,con);
}
@Test
public void testFromMetaDataForHsql() throws Exception{
DatabaseMetaData dmd = createMock(DatabaseMetaData.class);
DataSource ds = createMock(DataSource.class);
Connection con = createMock(Connection.class);
expect(ds.getConnection()).andReturn(con);
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductName()).andReturn("HSQL Database Engine");
replay(dmd,ds,con);
assertEquals(HSQL, DatabaseType.fromMetaData(ds));
verify(dmd,ds,con);
}
@Test
public void testFromMetaDataForSqlServer() throws Exception{
DatabaseMetaData dmd = createMock(DatabaseMetaData.class);
DataSource ds = createMock(DataSource.class);
Connection con = createMock(Connection.class);
expect(ds.getConnection()).andReturn(con);
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductName()).andReturn("Microsoft SQL Server");
replay(dmd,ds,con);
assertEquals(SQLSERVER, DatabaseType.fromMetaData(ds));
verify(dmd,ds,con);
}
@Test
public void testFromMetaDataForMySql() throws Exception{
DatabaseMetaData dmd = createMock(DatabaseMetaData.class);
DataSource ds = createMock(DataSource.class);
Connection con = createMock(Connection.class);
expect(ds.getConnection()).andReturn(con);
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductName()).andReturn("MySQL");
replay(dmd,ds,con);
assertEquals(MYSQL, DatabaseType.fromMetaData(ds));
verify(dmd,ds,con);
}
@Test
public void testFromMetaDataForOracle() throws Exception{
DatabaseMetaData dmd = createMock(DatabaseMetaData.class);
DataSource ds = createMock(DataSource.class);
Connection con = createMock(Connection.class);
@@ -46,9 +146,41 @@ public class DatabaseTypeTests {
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductName()).andReturn("Oracle");
replay(dmd,ds,con);
assertEquals(ORACLE, DatabaseType.fromMetaData(ds));
verify(dmd,ds,con);
}
@Test
public void testFromMetaDataForPostgres() throws Exception{
DatabaseMetaData dmd = createMock(DatabaseMetaData.class);
DataSource ds = createMock(DataSource.class);
Connection con = createMock(Connection.class);
expect(ds.getConnection()).andReturn(con);
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductName()).andReturn("PostgreSQL");
replay(dmd,ds,con);
assertEquals(POSTGRES, DatabaseType.fromMetaData(ds));
verify(dmd,ds,con);
}
@Test
public void testFromMetaDataForSybase() throws Exception{
DatabaseMetaData dmd = createMock(DatabaseMetaData.class);
DataSource ds = createMock(DataSource.class);
Connection con = createMock(Connection.class);
expect(ds.getConnection()).andReturn(con);
expect(con.getMetaData()).andReturn(dmd);
expect(dmd.getDatabaseProductName()).andReturn("Adaptive Server Enterprise");
replay(dmd,ds,con);
assertEquals(SYBASE, DatabaseType.fromMetaData(ds));
verify(dmd,ds,con);
}
}