You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2012/02/28 21:10:31 UTC
svn commit: r1294812 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests:
ReplicationRun.java ReplicationRun_Local.java ReplicationSuite.java
Author: rhillegas
Date: Tue Feb 28 20:10:30 2012
New Revision: 1294812
URL: http://svn.apache.org/viewvc?rev=1294812&view=rev
Log:
DERBY-866: Add test for replicating databases when NATIVE authentication is on.
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationSuite.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun.java?rev=1294812&r1=1294811&r2=1294812&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun.java Tue Feb 28 20:10:30 2012
@@ -96,8 +96,6 @@ public class ReplicationRun extends Base
static String masterDbSubPath = "db_master";
static String slaveDbSubPath = "db_slave";
- static final String DB_UID = "";
- static final String DB_PASSWD = "";
static String replicationTest = "";
@@ -169,6 +167,9 @@ public class ReplicationRun extends Base
*/
private ArrayList helperThreads = new ArrayList();
+ private String db_uid = null;
+ private String db_passwd = null;
+
/**
* Creates a new instance of ReplicationRun
* @param testcaseName Identifying the test.
@@ -181,6 +182,17 @@ public class ReplicationRun extends Base
}
/**
+ * Creates a new instance of ReplicationRun running with authentication.
+ */
+ public ReplicationRun( String testcaseName, String user, String password )
+ {
+ this( testcaseName );
+
+ db_uid = user;
+ db_passwd = password;
+ }
+
+ /**
* Parent super()
* @throws java.lang.Exception .
*/
@@ -321,11 +333,7 @@ public class ReplicationRun extends Base
throws Exception
{
- String serverURL = "jdbc:derby:"
- +"//"+serverHost+":"+serverPort+"/";
- String dbURL = serverURL
- +fullDbPath
- +useEncryption(false);
+ String dbURL = serverURL( fullDbPath, serverHost, serverPort );
Connection conn = null;
String lastmsg = null;
long sleeptime = 200L;
@@ -381,11 +389,7 @@ public class ReplicationRun extends Base
Thread.sleep(waitTime); // .... until stable...
try
{
- ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
- ds.setDatabaseName(fullDbPath);
- ds.setServerName(serverHost);
- ds.setPortNumber(serverPort);
- ds.setConnectionAttributes(useEncryption(false));
+ ClientDataSource ds = configureDataSource( fullDbPath, serverHost, serverPort, useEncryption(false) );
Connection conn = ds.getConnection();
conn.close();
}
@@ -410,11 +414,7 @@ public class ReplicationRun extends Base
{
try
{
- ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
- ds.setDatabaseName(fullDbPath);
- ds.setServerName(serverHost);
- ds.setPortNumber(serverPort);
- ds.setConnectionAttributes(useEncryption(false));
+ ClientDataSource ds = configureDataSource( fullDbPath, serverHost, serverPort, useEncryption(false) );
Connection conn = ds.getConnection();
util.DEBUG("Wait Got connection after "
+ (count-1) +" * "+ sleepTime + " ms.");
@@ -446,11 +446,7 @@ public class ReplicationRun extends Base
{
try
{
- ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
- ds.setDatabaseName(fullDbPath);
- ds.setServerName(serverHost);
- ds.setPortNumber(serverPort);
- ds.setConnectionAttributes(useEncryption(false));
+ ClientDataSource ds = configureDataSource( fullDbPath, serverHost, serverPort, useEncryption(false) );
Connection conn = ds.getConnection();
// Should never get here!
conn.close();
@@ -491,12 +487,7 @@ public class ReplicationRun extends Base
String clientHost) // Not yet used
throws Exception
{
- String serverURL = "jdbc:derby:"
- +"//"+serverHost+":"+serverPort+"/";
- String dbURL = serverURL
- +dbPath
- +FS+replicatedDb
- +useEncryption(false);
+ String dbURL = serverURL( dbPath+FS+replicatedDb, serverHost, serverPort );
util.DEBUG("**** DriverManager.getConnection(\"" + dbURL+";shutdown=true\");");
try{
@@ -1001,14 +992,12 @@ public class ReplicationRun extends Base
Class.forName(DRIVER_CLASS_NAME); // Needed when running from classes!
conn = DriverManager.getConnection(URL);
*/
- ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
- ds.setDatabaseName(masterDatabasePath+FS+masterDbSubPath+FS+dbName);
- ds.setServerName(masterHost);
- ds.setPortNumber(masterServerPort);
- ds.setConnectionAttributes("startMaster=true"
- +";slaveHost="+slaveReplInterface
- +";slavePort="+slaveReplPort
- +useEncryption(false));
+ String connectionAttributes = "startMaster=true"
+ +";slaveHost="+slaveReplInterface
+ +";slavePort="+slaveReplPort
+ +useEncryption(false);
+ ClientDataSource ds = configureDataSource
+ ( masterDbPath( dbName ), masterHost, masterServerPort, connectionAttributes );
conn = ds.getConnection();
done = true;
@@ -1174,7 +1163,7 @@ public class ReplicationRun extends Base
util.DEBUG("startSlave_direct getConnection("+URL+")");
- final String fDbPath = slaveDatabasePath+FS+slaveDbSubPath+FS+dbName;
+ final String fDbPath = slaveDbPath( dbName );
final String fSlaveHost = slaveHost;
final int fSlaveServerPort = slaveServerPort;
final String fConnAttrs = "startSlave=true"
@@ -1196,11 +1185,7 @@ public class ReplicationRun extends Base
Class.forName(DRIVER_CLASS_NAME); // Needed when running from classes!
conn = DriverManager.getConnection(URL);
*/
- ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
- ds.setDatabaseName(fDbPath);
- ds.setServerName(fSlaveHost);
- ds.setPortNumber(fSlaveServerPort);
- ds.setConnectionAttributes(fConnAttrs);
+ ClientDataSource ds = configureDataSource( fDbPath, fSlaveHost, fSlaveServerPort, fConnAttrs );
conn = ds.getConnection();
conn.close();
}
@@ -1352,23 +1337,19 @@ public class ReplicationRun extends Base
throws Exception
{
util.DEBUG("BEGIN verifySlave "+slaveServerHost+":"
- +slaveServerPort+"/"+slaveDatabasePath+FS+slaveDbSubPath+FS+replicatedDb);
+ +slaveServerPort+"/"+slaveDbPath( replicatedDb ) );
if ( (replicationTest != null) // If 'replicationTest==null' no table was created/filled
&& simpleLoad )
{
_verifyDatabase(slaveServerHost, slaveServerPort,
- slaveDatabasePath+FS+slaveDbSubPath+FS+replicatedDb,
+ slaveDbPath( replicatedDb ),
simpleLoadTuples);
// return;
}
- ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
- ds.setDatabaseName(slaveDatabasePath + FS + slaveDbSubPath + FS +
- replicatedDb);
- ds.setServerName(slaveServerHost);
- ds.setPortNumber(slaveServerPort);
- ds.setConnectionAttributes(useEncryption(false));
+ ClientDataSource ds = configureDataSource
+ ( slaveDbPath( replicatedDb ), slaveServerHost, slaveServerPort, useEncryption(false) );
Connection conn = ds.getConnection();
simpleVerify(conn);
@@ -1386,23 +1367,19 @@ public class ReplicationRun extends Base
throws Exception
{
util.DEBUG("BEGIN verifyMaster " + masterServerHost + ":"
- +masterServerPort+"/"+masterDatabasePath+FS+masterDbSubPath+FS+replicatedDb);
+ +masterServerPort+"/"+masterDbPath( replicatedDb ) );
if ( (replicationTest != null) // If 'replicationTest==null' no table was created/filled
&& simpleLoad )
{
_verifyDatabase(masterServerHost, masterServerPort,
- masterDatabasePath+FS+masterDbSubPath+FS+replicatedDb,
+ masterDbPath( replicatedDb ),
simpleLoadTuples);
// return;
}
- ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
- ds.setDatabaseName(masterDatabasePath + FS + masterDbSubPath + FS +
- replicatedDb);
- ds.setServerName(masterServerHost);
- ds.setPortNumber(masterServerPort);
- ds.setConnectionAttributes(useEncryption(false));
+ ClientDataSource ds = configureDataSource
+ ( masterDbPath( replicatedDb ), masterServerHost, masterServerPort, useEncryption(false) );
Connection conn = ds.getConnection();
simpleVerify(conn);
@@ -2035,18 +2012,28 @@ public class ReplicationRun extends Base
String workingDirName = masterDatabasePath +FS+ dbSubDirPath;
- final String[] commandElements = {
- ReplicationRun.getMasterJavaExecutableName(),
- "-Dderby.system.home=" + workingDirName,
- "-Dderby.infolog.append=true",
- // , " -Dderby.language.logStatementText=true" // Goes into derby.log: Gets HUGE!
- "-cp", serverClassPath,
- networkServerControl,
- "start",
- "-h", interfacesToListenOn, // allowedClients
- "-p", String.valueOf(serverPort),
- "-noSecurityManager"
- };
+ ArrayList ceArray = new ArrayList();
+ ceArray.add( ReplicationRun.getMasterJavaExecutableName() );
+ ceArray.add( "-Dderby.system.home=" + workingDirName );
+ ceArray.add( "-Dderby.infolog.append=true" );
+ //ceArray.add( " -Dderby.language.logStatementText=true" ); // Goes into derby.log: Gets HUGE );
+ if ( db_uid != null )
+ {
+ ceArray.add( "-Dderby.authentication.provider=NATIVE:" + replicatedDb + ":LOCAL" );
+ }
+ ceArray.add( "-cp" );
+ ceArray.add( serverClassPath );
+ ceArray.add( networkServerControl );
+ ceArray.add( "start" );
+ ceArray.add( "-h" );
+ ceArray.add( interfacesToListenOn ); // allowedClient
+ ceArray.add( "-p" );
+ ceArray.add( String.valueOf( serverPort ) );
+ ceArray.add( "-noSecurityManager" );
+
+ final String[] commandElements = new String[ ceArray.size() ];
+ ceArray.toArray( commandElements );
+
String[] envElements = {"CLASS_PATH="+serverClassPath
, "PATH="+serverVM+FS+".."+FS+"bin"
};
@@ -2058,7 +2045,7 @@ public class ReplicationRun extends Base
String tmp ="";
for ( int i=0;i<commandElements.length;i++)
- {tmp = tmp + commandElements[i] + " ";}
+ {tmp = tmp +commandElements[i] + " ";}
util.DEBUG(debugId+"commandElements: " + tmp);
final String fullCmd = tmp;
@@ -2232,16 +2219,29 @@ public class ReplicationRun extends Base
{ // Use full classpath when running locally. Can not vary server versions!
serverClassPath = classPath;
}
+
+ ArrayList ceArray = new ArrayList();
+ ceArray.add( serverJvm );
+ ceArray.add( "-Dderby.infolog.append=true" );
+ ceArray.add( "-cp" );
+ ceArray.add( serverClassPath );
+ ceArray.add( networkServerControl );
+ ceArray.add( "shutdown" );
+ ceArray.add( "-h" );
+ ceArray.add( serverHost ); // FIXME! interfacesToListenOn
+ ceArray.add( "-p" );
+ ceArray.add( String.valueOf(serverPort ) );
+ if ( db_uid != null )
+ {
+ ceArray.add( "-user" );
+ ceArray.add( db_uid );
+ ceArray.add( "-password" );
+ ceArray.add( db_passwd );
+ }
+
+ final String[] commandElements = new String[ ceArray.size() ];
+ ceArray.toArray( commandElements );
- final String[] commandElements = {
- serverJvm,
- "-Dderby.infolog.append=true",
- "-cp", serverClassPath,
- networkServerControl,
- "shutdown",
- "-h", serverHost, // FIXME! interfacesToListenOn
- "-p", String.valueOf(serverPort)
- };
String[] envElements = {"CLASS_PATH="+serverClassPath
, "PATH="+serverVM+FS+".."+FS+"bin"
};
@@ -2508,7 +2508,7 @@ public class ReplicationRun extends Base
ijClassPath = classPath;
}
String clientJvm = ReplicationRun.getClientJavaExecutableName();
- String command = "rm -rf /"+masterDatabasePath+FS+dbSubPath+FS+database+";" // FIXME! for slave load!
+ String command = "rm -rf /"+masterDbPath( database )+";" // FIXME! for slave load!
+ clientJvm // "java"
+ " -Dij.driver=" + DRIVER_CLASS_NAME
+ " -Dij.connection.create"+database+"=\"" + URL + "\""
@@ -3092,11 +3092,7 @@ test.postStoppedSlaveServer.return=true
{
util.DEBUG("_testInsertUpdateDeleteOnMaster: " + serverHost + ":" +
serverPort + "/" + dbPath + " " + _noTuplesToInsert);
- ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
- ds.setDatabaseName(dbPath);
- ds.setServerName(serverHost);
- ds.setPortNumber(serverPort);
- ds.setConnectionAttributes(useEncryption(false));
+ ClientDataSource ds = configureDataSource( dbPath, serverHost, serverPort, useEncryption(false) );
Connection conn = ds.getConnection();
PreparedStatement ps = conn.prepareStatement("create table t(i integer primary key, s varchar(64))");
@@ -3123,11 +3119,7 @@ test.postStoppedSlaveServer.return=true
throws SQLException
{
util.DEBUG("_verifyDatabase: "+serverHost+":"+serverPort+"/"+dbPath);
- ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
- ds.setDatabaseName(dbPath);
- ds.setServerName(serverHost);
- ds.setPortNumber(serverPort);
- ds.setConnectionAttributes(useEncryption(false));
+ ClientDataSource ds = configureDataSource( dbPath, serverHost, serverPort, useEncryption(false) );
Connection conn = ds.getConnection();
_verify(conn,_noTuplesInserted);
@@ -3157,9 +3149,10 @@ test.postStoppedSlaveServer.return=true
throws SQLException
{
String db = databasePath +FS+dbSubPath +FS+ replicatedDb;
- String connectionURL = "jdbc:derby:"
- + "//" + serverHost + ":" + serverPort + "/"
- + db;
+ String connectionURL = serverURL( db, serverHost, serverPort );
+ //String connectionURL = "jdbc:derby:"
+ // + "//" + serverHost + ":" + serverPort + "/"
+ // + db;
util.DEBUG(connectionURL);
return DriverManager.getConnection(connectionURL);
}
@@ -3174,28 +3167,29 @@ test.postStoppedSlaveServer.return=true
}
String masterURL(String dbName)
{
- return DB_PROTOCOL
- +"://"+masterServerHost
- +":"+masterServerPort+"/"
- +masterDatabasePath+FS+masterDbSubPath+FS+dbName
- +useEncryption(false);
+ return serverURL( masterDbPath( dbName ), masterServerHost, masterServerPort );
}
String masterLoadURL(String dbSubPath)
{
- return DB_PROTOCOL
- +"://"+masterServerHost
- +":"+masterServerPort+"/"
- +masterDatabasePath+FS+dbSubPath
- +useEncryption(false);
+ return serverURL( masterDatabasePath+FS+dbSubPath, masterServerHost, masterServerPort );
}
-
String slaveURL(String dbName)
{
+ return serverURL( slaveDbPath( dbName ), slaveServerHost, slaveServerPort );
+ }
+ String serverURL( String fullDbPath, String serverHost, int serverPort )
+ {
return DB_PROTOCOL
- +"://"+slaveServerHost
- +":"+slaveServerPort+"/"
- +slaveDatabasePath+FS+slaveDbSubPath+FS+dbName
- +useEncryption(false);
+ +"://"+serverHost
+ +":"+serverPort+"/"
+ +fullDbPath
+ +useEncryption(false)
+ +credentials();
+ }
+ String credentials()
+ {
+ if ( db_uid == null ) { return ""; }
+ else { return ";user=" + db_uid + ";password=" + db_passwd; }
}
@@ -3228,11 +3222,12 @@ test.postStoppedSlaveServer.return=true
util.DEBUG("stopSlave");
String dbPath = slaveDatabasePath + FS + subPath + FS + replicatedDb;
- String connectionURL = "jdbc:derby:"
- + "//" + slaveServerHost + ":" + slaveServerPort + "/"
- + dbPath
- + ";stopSlave=true"
- + useEncryption(false);
+ String connectionURL = serverURL( dbPath, slaveServerHost, slaveServerPort ) + ";stopSlave=true";
+ //String connectionURL = "jdbc:derby:"
+ // + "//" + slaveServerHost + ":" + slaveServerPort + "/"
+ // + dbPath
+ // + ";stopSlave=true"
+ // + useEncryption(false);
if (masterServerAlive) {
try {
@@ -3336,4 +3331,34 @@ test.postStoppedSlaveServer.return=true
}
return serverVM+FS+".."+FS+"bin"+FS+"java";
}
+
+ /**
+ * <p>
+ * Set up a data source.
+ * </p>
+ */
+ ClientDataSource configureDataSource
+ (
+ String dbName,
+ String serverHost,
+ int serverPort,
+ String connectionAttributes
+ )
+ {
+ ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource();
+
+ ds.setDatabaseName( dbName );
+ ds.setServerName( serverHost );
+ ds.setPortNumber(serverPort);
+ ds.setConnectionAttributes( connectionAttributes );
+
+ if ( db_uid != null )
+ {
+ ds.setUser( db_uid );
+ ds.setPassword( db_passwd );
+ }
+
+ return ds;
+ }
+
}
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local.java?rev=1294812&r1=1294811&r2=1294812&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local.java Tue Feb 28 20:10:30 2012
@@ -46,6 +46,14 @@ public class ReplicationRun_Local extend
super(testcaseName);
}
+ /**
+ * Creates a new instance of ReplicationRun_Local running with authentication.
+ */
+ public ReplicationRun_Local(String testcaseName, String user, String password )
+ {
+ super( testcaseName, user, password );
+ }
+
public static Test suite()
{
TestSuite suite = new TestSuite("ReplicationRun_Local Suite");
@@ -56,6 +64,18 @@ public class ReplicationRun_Local extend
}
+ public static Test localAuthenticationSuite()
+ {
+ String user = "KIWI";
+ String password = "KIWI_password";
+ TestSuite suite = new TestSuite("ReplicationRun_Local Suite Local Authentication Suite");
+
+ suite.addTest( new ReplicationRun_Local( "testReplication_Local_TestStraightReplication", user, password ) );
+ suite.addTest( new ReplicationRun_Local( "testReplication_Local_LogFilesSynched", user, password ) );
+
+ return SecurityManagerSetup.noSecurityManager( suite );
+ }
+
//////////////////////////////////////////////////////////////
////
//// The replication test framework (testReplication()):
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationSuite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationSuite.java?rev=1294812&r1=1294811&r2=1294812&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationSuite.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationSuite.java Tue Feb 28 20:10:30 2012
@@ -53,6 +53,7 @@ public class ReplicationSuite extends Ba
if (JDBC.vmSupportsJDBC3()) {
suite.addTest(ReplicationRun_Local.suite());
+ suite.addTest(ReplicationRun_Local.localAuthenticationSuite());
suite.addTest(ReplicationRun_Local_1.suite());