// jTDS JDBC Driver for Microsoft SQL Server and Sybase
// Copyright (C) 2004 The jTDS Project
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package net.sourceforge.jtds.jdbcx;
import java.util.HashMap;
import javax.naming.Reference;
import junit.framework.Test;
import junit.framework.TestSuite;
import net.sourceforge.jtds.jdbc.DefaultProperties;
import net.sourceforge.jtds.jdbc.Driver;
import net.sourceforge.jtds.jdbc.UnitTestBase;
import net.sourceforge.jtds.jdbcx.JtdsDataSource;
import net.sourceforge.jtds.jdbcx.JtdsObjectFactory;
/**
* Unit tests for the {@link JtdsObjectFactory} class.
*
* @author
* Alin Sinpalean, David D. Kilzer, Holger Rehn
*/
public class JtdsObjectFactoryTest extends UnitTestBase
{
/**
* @return The test suite to run.
*/
public static Test suite()
{
return new TestSuite( JtdsObjectFactoryTest.class );
}
/**
* Constructor.
*
* @param name
* The name of the test.
*/
public JtdsObjectFactoryTest( String name )
{
super( name );
}
/**
* Tests that the factory can correctly rebuild a DataSource with no
* properties set (i.e. all values should be null and no NPE should be
* thrown).
*/
public void testNoProperties() throws Exception
{
JtdsDataSource ds = new JtdsDataSource();
Reference dsRef = ds.getReference();
assertEquals( "net.sourceforge.jtds.jdbcx.JtdsObjectFactory", dsRef.getFactoryClassName() );
assertEquals( "net.sourceforge.jtds.jdbcx.JtdsDataSource", dsRef.getClassName() );
ds = (JtdsDataSource) new JtdsObjectFactory().getObjectInstance( dsRef, null, null, null );
assertNull ( ds.getDescription() );
assertNull ( ds.getAppName() );
assertFalse ( ds.getAutoCommit() );
assertEquals( 0, ds.getBatchSize() );
assertNull ( ds.getBindAddress() );
assertNull ( ds.getBufferDir() );
assertEquals( 0, ds.getBufferMaxMemory() );
assertEquals( 0, ds.getBufferMinPackets() );
assertFalse ( ds.getCacheMetaData() );
assertNull ( ds.getCharset() );
assertNull ( ds.getDatabaseName() );
assertNull ( ds.getDomain() );
assertNull ( ds.getInstance() );
assertNull ( ds.getLanguage() );
assertEquals( false, ds.getLastUpdateCount() );
assertEquals( 0, ds.getLobBuffer() );
assertNull ( ds.getLogFile() );
assertEquals( 0, ds.getLoginTimeout() );
assertNull ( ds.getMacAddress() );
assertEquals( 0, ds.getMaxStatements() );
assertEquals( false, ds.getNamedPipe() );
assertEquals( 0, ds.getPacketSize() );
assertNull ( ds.getPassword() );
assertEquals( 0, ds.getPortNumber() );
assertEquals( 0, ds.getPrepareSql() );
assertNull ( ds.getProcessId() );
assertNull ( ds.getProgName() );
assertEquals( false, ds.getSendStringParametersAsUnicode() );
assertNull ( ds.getServerName() );
assertEquals( 0, ds.getServerType() );
assertFalse ( ds.getSocketKeepAlive() );
assertEquals( 0, ds.getSocketTimeout() );
assertNull ( ds.getSsl() );
assertFalse ( ds.getTcpNoDelay() );
assertNull ( ds.getTds() );
assertFalse ( ds.getUseCursors() );
assertFalse ( ds.getUseJCIFS() );
assertFalse ( ds.getUseLOBs() );
assertFalse ( ds.getUseNTLMV2() );
assertNull ( ds.getUser() );
assertNull ( ds.getWsid() );
assertFalse ( ds.getXaEmulation() );
}
public void testGetterSetter()
throws Exception
{
HashMap defaults = new HashMap();
defaults.put( "description" , "DESCRIPTION" );
defaults.put( Driver.APPNAME , DefaultProperties.APP_NAME );
defaults.put( Driver.AUTOCOMMIT , DefaultProperties.AUTO_COMMIT );
defaults.put( Driver.BATCHSIZE , DefaultProperties.BATCH_SIZE_SQLSERVER );
defaults.put( Driver.BINDADDRESS , DefaultProperties.BIND_ADDRESS );
defaults.put( Driver.BUFFERDIR , DefaultProperties.BUFFER_DIR );
defaults.put( Driver.BUFFERMAXMEMORY , DefaultProperties.BUFFER_MAX_MEMORY );
defaults.put( Driver.BUFFERMINPACKETS , DefaultProperties.BUFFER_MIN_PACKETS );
defaults.put( Driver.CACHEMETA , DefaultProperties.CACHEMETA );
defaults.put( Driver.CHARSET , DefaultProperties.CHARSET );
defaults.put( Driver.DATABASENAME , DefaultProperties.DATABASE_NAME );
defaults.put( Driver.DOMAIN , DefaultProperties.DOMAIN );
defaults.put( Driver.INSTANCE , DefaultProperties.INSTANCE );
defaults.put( Driver.LANGUAGE , DefaultProperties.LANGUAGE );
defaults.put( Driver.LASTUPDATECOUNT , DefaultProperties.LAST_UPDATE_COUNT );
defaults.put( Driver.LOBBUFFER , DefaultProperties.LOB_BUFFER_SIZE );
defaults.put( Driver.LOGFILE , DefaultProperties.LOGFILE );
defaults.put( Driver.LOGINTIMEOUT , DefaultProperties.LOGIN_TIMEOUT );
defaults.put( Driver.MACADDRESS , DefaultProperties.MAC_ADDRESS );
defaults.put( Driver.MAXSTATEMENTS , DefaultProperties.MAX_STATEMENTS );
defaults.put( Driver.NAMEDPIPE , DefaultProperties.NAMED_PIPE );
defaults.put( Driver.PACKETSIZE , DefaultProperties.PACKET_SIZE_42 );
defaults.put( Driver.PASSWORD , DefaultProperties.PASSWORD );
defaults.put( Driver.PORTNUMBER , DefaultProperties.PORT_NUMBER_SQLSERVER );
defaults.put( Driver.PREPARESQL , DefaultProperties.PREPARE_SQLSERVER );
defaults.put( Driver.PROCESSID , DefaultProperties.PROCESS_ID );
defaults.put( Driver.PROGNAME , DefaultProperties.PROG_NAME );
defaults.put( Driver.SENDSTRINGPARAMETERSASUNICODE, DefaultProperties.USE_UNICODE );
defaults.put( Driver.SERVERNAME , "SERVERNAME" );
defaults.put( Driver.SERVERTYPE , String.valueOf( Driver.SQLSERVER ) );
defaults.put( Driver.SOKEEPALIVE , DefaultProperties.SOCKET_KEEPALIVE );
defaults.put( Driver.SOTIMEOUT , DefaultProperties.SOCKET_TIMEOUT );
defaults.put( Driver.SSL , DefaultProperties.SSL );
defaults.put( Driver.TCPNODELAY , DefaultProperties.TCP_NODELAY );
defaults.put( Driver.TDS , DefaultProperties.TDS_VERSION_42 );
defaults.put( Driver.USECURSORS , DefaultProperties.USECURSORS );
defaults.put( Driver.USEJCIFS , DefaultProperties.USEJCIFS );
defaults.put( Driver.USELOBS , DefaultProperties.USELOBS );
defaults.put( Driver.USENTLMV2 , DefaultProperties.USENTLMV2 );
defaults.put( Driver.USEKERBEROS , DefaultProperties.USEKERBEROS );
defaults.put( Driver.USER , DefaultProperties.USER );
defaults.put( Driver.WSID , DefaultProperties.WSID );
defaults.put( Driver.XAEMULATION , DefaultProperties.XAEMULATION );
JtdsObjectFactory jtdsObjectFactory = new JtdsObjectFactory();
// create datasource using default values and check values
JtdsDataSource ds = new JtdsDataSource( defaults );
checkDefaults( ds );
// create datasource from reference and check values
checkDefaults( (JtdsDataSource) jtdsObjectFactory.getObjectInstance( ds.getReference(), null, null, null ) );
// now us setters for modifying all properties and check via getter whether changes are applied
ds.setDescription ( "TEST" ); assertEquals( "TEST", ds.getDescription() );
ds.setAppName ( "TEST" ); assertEquals( "TEST", ds.getAppName() );
ds.setAutoCommit ( false ); assertEquals( false , ds.getAutoCommit() );
ds.setBatchSize ( 123456 ); assertEquals( 123456, ds.getBatchSize() );
ds.setBindAddress ( "1234" ); assertEquals( "1234", ds.getBindAddress() );
ds.setBufferMaxMemory ( 123456 ); assertEquals( 123456, ds.getBufferMaxMemory() );
ds.setBufferMinPackets ( 123456 ); assertEquals( 123456, ds.getBufferMinPackets() );
ds.setCacheMetaData ( true ); assertEquals( true , ds.getCacheMetaData() );
ds.setCharset ( "1234" ); assertEquals( "1234", ds.getCharset() );
ds.setDatabaseName ( "1234" ); assertEquals( "1234", ds.getDatabaseName() );
ds.setDomain ( "1234" ); assertEquals( "1234", ds.getDomain() );
ds.setInstance ( "1234" ); assertEquals( "1234", ds.getInstance() );
ds.setLanguage ( "1234" ); assertEquals( "1234", ds.getLanguage() );
ds.setLastUpdateCount ( false ); assertEquals( false , ds.getLastUpdateCount() );
ds.setLobBuffer ( 123456 ); assertEquals( 123456, ds.getLobBuffer() );
ds.setLogFile ( "1234" ); assertEquals( "1234", ds.getLogFile() );
ds.setLoginTimeout ( 123456 ); assertEquals( 123456, ds.getLoginTimeout() );
ds.setMacAddress ( "1234" ); assertEquals( "1234", ds.getMacAddress() );
ds.setMaxStatements ( 123456 ); assertEquals( 123456, ds.getMaxStatements() );
ds.setNamedPipe ( true ); assertEquals( true , ds.getNamedPipe() );
ds.setPacketSize ( 123456 ); assertEquals( 123456, ds.getPacketSize() );
ds.setPassword ( "1234" ); assertEquals( "1234", ds.getPassword() );
ds.setPortNumber ( 123456 ); assertEquals( 123456, ds.getPortNumber() );
ds.setPrepareSql ( 123456 ); assertEquals( 123456, ds.getPrepareSql() );
ds.setProcessId ( "1234" ); assertEquals( "1234", ds.getProcessId() );
ds.setProgName ( "1234" ); assertEquals( "1234", ds.getProgName() );
ds.setSendStringParametersAsUnicode( false ); assertEquals( false , ds.getSendStringParametersAsUnicode() );
ds.setServerName ( "1234" ); assertEquals( "1234", ds.getServerName() );
ds.setServerType ( 123456 ); assertEquals( 123456, ds.getServerType() );
ds.setSocketKeepAlive ( true ); assertEquals( true , ds.getSocketKeepAlive() );
ds.setSocketTimeout ( 123456 ); assertEquals( 123456, ds.getSocketTimeout() );
ds.setSsl ( "1234" ); assertEquals( "1234", ds.getSsl() );
ds.setTcpNoDelay ( false ); assertEquals( false , ds.getTcpNoDelay() );
ds.setTds ( "1234" ); assertEquals( "1234", ds.getTds() );
ds.setUseCursors ( true ); assertEquals( true , ds.getUseCursors() );
ds.setUseJCIFS ( true ); assertEquals( true , ds.getUseJCIFS() );
ds.setUseLOBs ( false ); assertEquals( false , ds.getUseLOBs() );
ds.setUseNTLMV2 ( true ); assertEquals( true , ds.getUseNTLMV2() );
ds.setUser ( "1234" ); assertEquals( "1234", ds.getUser() );
ds.setWsid ( "1234" ); assertEquals( "1234", ds.getWsid() );
ds.setXaEmulation ( false ); assertEquals( false , ds.getXaEmulation() );
}
private void checkDefaults( JtdsDataSource ds )
{
assertEquals( "DESCRIPTION" , String.valueOf( ds.getDescription() ) );
assertEquals( DefaultProperties.APP_NAME , String.valueOf( ds.getAppName() ) );
assertEquals( DefaultProperties.AUTO_COMMIT , String.valueOf( ds.getAutoCommit() ) );
assertEquals( DefaultProperties.BATCH_SIZE_SQLSERVER , String.valueOf( ds.getBatchSize() ) );
assertEquals( DefaultProperties.BIND_ADDRESS , String.valueOf( ds.getBindAddress() ) );
assertEquals( DefaultProperties.BUFFER_MAX_MEMORY , String.valueOf( ds.getBufferMaxMemory() ) );
assertEquals( DefaultProperties.BUFFER_MIN_PACKETS , String.valueOf( ds.getBufferMinPackets() ) );
assertEquals( DefaultProperties.CACHEMETA , String.valueOf( ds.getCacheMetaData() ) );
assertEquals( DefaultProperties.CHARSET , String.valueOf( ds.getCharset() ) );
assertEquals( DefaultProperties.DATABASE_NAME , String.valueOf( ds.getDatabaseName() ) );
assertEquals( DefaultProperties.DOMAIN , String.valueOf( ds.getDomain() ) );
assertEquals( DefaultProperties.INSTANCE , String.valueOf( ds.getInstance() ) );
assertEquals( DefaultProperties.LANGUAGE , String.valueOf( ds.getLanguage() ) );
assertEquals( DefaultProperties.LAST_UPDATE_COUNT , String.valueOf( ds.getLastUpdateCount() ) );
assertEquals( DefaultProperties.LOB_BUFFER_SIZE , String.valueOf( ds.getLobBuffer() ) );
assertEquals( DefaultProperties.LOGFILE , String.valueOf( ds.getLogFile() ) );
assertEquals( DefaultProperties.LOGIN_TIMEOUT , String.valueOf( ds.getLoginTimeout() ) );
assertEquals( DefaultProperties.MAC_ADDRESS , String.valueOf( ds.getMacAddress() ) );
assertEquals( DefaultProperties.MAX_STATEMENTS , String.valueOf( ds.getMaxStatements() ) );
assertEquals( DefaultProperties.NAMED_PIPE , String.valueOf( ds.getNamedPipe() ) );
assertEquals( DefaultProperties.PACKET_SIZE_42 , String.valueOf( ds.getPacketSize() ) );
assertEquals( DefaultProperties.PASSWORD , String.valueOf( ds.getPassword() ) );
assertEquals( DefaultProperties.PORT_NUMBER_SQLSERVER, String.valueOf( ds.getPortNumber() ) );
assertEquals( DefaultProperties.PREPARE_SQLSERVER , String.valueOf( ds.getPrepareSql() ) );
assertEquals( DefaultProperties.PROCESS_ID , String.valueOf( ds.getProcessId() ) );
assertEquals( DefaultProperties.PROG_NAME , String.valueOf( ds.getProgName() ) );
assertEquals( DefaultProperties.USE_UNICODE , String.valueOf( ds.getSendStringParametersAsUnicode() ) );
assertEquals( "SERVERNAME" , String.valueOf( ds.getServerName() ) );
assertEquals( String.valueOf( Driver.SQLSERVER ) , String.valueOf( ds.getServerType() ) );
assertEquals( DefaultProperties.SOCKET_KEEPALIVE , String.valueOf( ds.getSocketKeepAlive() ) );
assertEquals( DefaultProperties.SOCKET_TIMEOUT , String.valueOf( ds.getSocketTimeout() ) );
assertEquals( DefaultProperties.SSL , String.valueOf( ds.getSsl() ) );
assertEquals( DefaultProperties.TCP_NODELAY , String.valueOf( ds.getTcpNoDelay() ) );
assertEquals( DefaultProperties.TDS_VERSION_42 , String.valueOf( ds.getTds() ) );
assertEquals( DefaultProperties.USECURSORS , String.valueOf( ds.getUseCursors() ) );
assertEquals( DefaultProperties.USEJCIFS , String.valueOf( ds.getUseJCIFS() ) );
assertEquals( DefaultProperties.USELOBS , String.valueOf( ds.getUseLOBs() ) );
assertEquals( DefaultProperties.USENTLMV2 , String.valueOf( ds.getUseNTLMV2() ) );
assertEquals( DefaultProperties.USER , String.valueOf( ds.getUser() ) );
assertEquals( DefaultProperties.WSID , String.valueOf( ds.getWsid() ) );
assertEquals( DefaultProperties.XAEMULATION , String.valueOf( ds.getXaEmulation() ) );
}
}