Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 50655 invoked from network); 13 Oct 2008 18:46:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 13 Oct 2008 18:46:09 -0000 Received: (qmail 94338 invoked by uid 500); 13 Oct 2008 18:46:10 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 94317 invoked by uid 500); 13 Oct 2008 18:46:10 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 94304 invoked by uid 99); 13 Oct 2008 18:46:09 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 Oct 2008 11:46:09 -0700 X-ASF-Spam-Status: No, hits=-1998.8 required=10.0 tests=ALL_TRUSTED,FS_REPLICA X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 Oct 2008 18:45:10 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 58EC223888A0; Mon, 13 Oct 2008 11:45:17 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r704197 - /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ Date: Mon, 13 Oct 2008 18:45:16 -0000 To: derby-commits@db.apache.org From: myrnavl@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20081013184517.58EC223888A0@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: myrnavl Date: Mon Oct 13 11:45:16 2008 New Revision: 704197 URL: http://svn.apache.org/viewvc?rev=704197&view=rev Log: DERBY-3738; add more tests for legal/illegal commands in the replication states. Patch contributed by Ole Solberg Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3.java (with props) db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p1.java (with props) db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p2.java (with props) db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p3.java (with props) db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p4.java (with props) db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_showStateChange.java (with props) 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_Distributed.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/ReplicationRun_Local_1.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_StateTest_part2.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationSuite.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/Utils.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=704197&r1=704196&r2=704197&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 Mon Oct 13 11:45:16 2008 @@ -20,8 +20,6 @@ */ package org.apache.derbyTesting.functionTests.tests.replicationTests; -import junit.framework.Test; -import junit.framework.TestSuite; import org.apache.derby.drda.NetworkServerControl; import java.net.InetAddress; @@ -34,7 +32,6 @@ import org.apache.derbyTesting.junit.BaseJDBCTestCase; import org.apache.derbyTesting.junit.BaseTestCase; -import org.apache.derbyTesting.junit.SecurityManagerSetup; /** * Framework to run replication tests. @@ -74,7 +71,7 @@ static boolean runUnReplicated = false; - static int tuplesToInsert = 10000; + static int tuplesToInsertPerf = 10000; static int commitFreq = 0; // autocommit static String masterDbSubPath = "db_master"; @@ -106,7 +103,7 @@ final static String JVMloc = BaseTestCase.getJavaExecutableName(); static boolean showSysinfo = false; - static long SLEEP_TIME_MILLIS = 5000L; + static long PINGSERVER_SLEEP_TIME_MILLIS = 500L; static long sleepTime = 5000L; // millisecs. @@ -174,15 +171,6 @@ super.tearDown(); } - public static Test suite() - { - - TestSuite suite = new TestSuite("Replication Suite"); - - suite.addTestSuite( ReplicationRun.class ); // Make sure to rename in subclasses! - - return SecurityManagerSetup.noSecurityManager(suite); - } ////////////////////////////////////////////////////////////// //// @@ -220,6 +208,8 @@ String dbURL = serverURL +fullDbPath; Connection conn = null; + String lastmsg = null; + long sleeptime = 200L; boolean done = false; int count = 0; while ( !done ) @@ -229,25 +219,29 @@ Class.forName(DRIVER_CLASS_NAME); // Needed when running from classes! conn = DriverManager.getConnection(dbURL); done = true; - util.DEBUG("Connected"); + util.DEBUG("Got connection after " + + count +" * "+ sleeptime + " ms."); conn.close(); } catch ( SQLException se ) { int errCode = se.getErrorCode(); - String msg = se.getMessage(); - String state = se.getSQLState(); + lastmsg = se.getMessage(); + String sState = se.getSQLState(); String expectedState = "08004"; - util.DEBUG("startSlave Got SQLException: " + errCode + " " + state + " " + msg); + lastmsg = errCode + " " + sState + " " + lastmsg + + ". Expected: "+ expectedState; + util.DEBUG("Got SQLException: " + lastmsg); if ( (errCode == -1) - && (state.equalsIgnoreCase(expectedState) ) ) + && (sState.equalsIgnoreCase(expectedState) ) ) { util.DEBUG("Failover not complete."); - Thread.sleep(200L); // ms. + Thread.sleep(sleeptime); // ms. } else { se.printStackTrace(); // FIXME! + assertTrue("Connect failed. " + lastmsg, false); return; } } @@ -256,6 +250,115 @@ } } + String showCurrentState(String ID, long waitTime, + String fullDbPath, + String serverHost, int serverPort) + throws Exception + { + int errCode = 0; + String sState = "CONNECTED"; + String msg = null; + Thread.sleep(waitTime); // .... until stable... + try + { + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(fullDbPath); + ds.setServerName(serverHost); + ds.setPortNumber(serverPort); + Connection conn = ds.getConnection(); + conn.close(); + } + catch ( SQLException se ) + { + errCode = se.getErrorCode(); + msg = se.getMessage(); + sState = se.getSQLState(); + } + util.DEBUG(ID+": ["+serverHost+":"+serverPort+"/"+fullDbPath+"] " + + errCode + " " + sState + " " + msg); + return sState; + } + void waitForConnect(long sleepTime, int tries, + String fullDbPath, + String serverHost, int serverPort) + throws Exception + { + int count = 0; + String msg = null; + while ( count++ <= tries ) + { + try + { + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(fullDbPath); + ds.setServerName(serverHost); + ds.setPortNumber(serverPort); + Connection conn = ds.getConnection(); + util.DEBUG("Got connection after " + + (count-1) +" * "+ sleepTime + " ms."); + conn.close(); + return; + } + catch ( SQLException se ) + { + msg = se.getErrorCode() + "' '" + se.getSQLState() + + "' '" + se.getMessage(); + util.DEBUG(count + " got '" + msg +"'."); + Thread.sleep(sleepTime); // ms. Sleep and try again... + } + } + assertTrue(msg + ": Could NOT connect in " + + tries+"*"+sleepTime + "ms.",false); + } + void waitForSQLState(String expectedState, + long sleepTime, int tries, + String fullDbPath, + String serverHost, int serverPort) + throws Exception + { + int count = 0; + String msg = null; + while ( count++ <= tries ) + { + try + { + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(fullDbPath); + ds.setServerName(serverHost); + ds.setPortNumber(serverPort); + Connection conn = ds.getConnection(); + // Should never get here! + conn.close(); + assertTrue("Expected SQLState'"+expectedState + + "', but got connection!", + false); + } + catch ( SQLException se ) + { + int errCode = se.getErrorCode(); + msg = se.getMessage(); + String sState = se.getSQLState(); + msg = "'" + errCode + "' '" + sState + "' '" + msg +"'"; + util.DEBUG(count + + ": SQLState expected '"+expectedState+"'," + + " got " + msg); + if ( sState.equals(expectedState) ) + { + util.DEBUG("Reached SQLState '" + expectedState +"' in " + + (count-1)+"*"+sleepTime + "ms."); + return; // Got desired SQLState. + } + else + { + Thread.sleep(sleepTime); // ms. Sleep and try again... + } + } + + } + assertTrue(msg + ": SQLState '"+expectedState+"' was not reached in " + + tries+"*"+sleepTime + "ms.",false); + + } void shutdownDb(String jvmVersion, // Not yet used String serverHost, int serverPort, String dbPath, String replicatedDb, @@ -347,7 +450,7 @@ // + " -Djava.security.policy=\"\"" // Now using noSecurityManager decorator + " -Dtest.serverHost=" + serverHost // Tell the test what server + " -Dtest.serverPort=" + serverPort // and port to connect to. - + " -Dtest.inserts=" + tuplesToInsert // for SimplePerfTest + + " -Dtest.inserts=" + tuplesToInsertPerf // for SimplePerfTest + " -Dtest.commitFreq=" + commitFreq // for SimplePerfTest + " -classpath " + testingClassPath + " junit.textui.TestRunner" @@ -436,7 +539,7 @@ // + " -Djava.security.policy=\"\"" // Now using noSecurityManager decorator + " -Dtest.serverHost=" + serverHost // Tell the test what server + " -Dtest.serverPort=" + serverPort // and port to connect to. - + " -Dtest.inserts=" + tuplesToInsert // for SimplePerfTest + + " -Dtest.inserts=" + tuplesToInsertPerf // for SimplePerfTest + " -Dtest.commitFreq=" + commitFreq // for SimplePerfTest + " -classpath " + testingClassPath + " junit.textui.TestRunner" @@ -880,18 +983,18 @@ done = true; conn.close(); - util.DEBUG("startMaster OK"); + util.DEBUG("startMaster_direct connected in " + count + " * 100ms."); } catch ( SQLException se ) { int errCode = se.getErrorCode(); String msg = se.getMessage(); - String state = se.getSQLState(); + String sState = se.getSQLState(); String expectedState = "XRE04"; util.DEBUG("startMaster Got SQLException: " - + errCode + " " + state + " " + msg + ". Expected " + expectedState); + + errCode + " " + sState + " " + msg + ". Expected " + expectedState); if ( (errCode == -1) - && (state.equalsIgnoreCase(expectedState) ) ) + && (sState.equalsIgnoreCase(expectedState) ) ) { util.DEBUG("Not ready to startMaster. " +"Beware: Will also report " @@ -901,7 +1004,7 @@ } else { - if (SQLState.REPLICATION_MASTER_TIMED_OUT.equals(state)) // FIXME! CANNOT_START_MASTER_ALREADY_BOOTED + if (SQLState.REPLICATION_MASTER_TIMED_OUT.equals(sState)) // FIXME! CANNOT_START_MASTER_ALREADY_BOOTED { util.DEBUG("Master already started?"); } @@ -1129,29 +1232,10 @@ catch (SQLException se) { startSlaveException = se; - util.DEBUG("Got: "+se.getSQLState()+" Expected: "+expectedState); - /* - int errCode = se.getErrorCode(); - String msg = se.getMessage(); - String state = se.getSQLState(); - util.DEBUG("startSlave Got SQLException: " + errCode + " " + state + " " + msg); - if ( (errCode == -1) - && (state.equalsIgnoreCase(expectedState) ) ) - { - util.DEBUG("As expected."); - } - else - { - util.DEBUG("Got Exception " + msg); - se.printStackTrace(); - } - ;*/ } catch (Exception ex) { startSlaveException = ex; - util.DEBUG("Got Exception " + ex.getMessage() - +" Expected: SQLException "+expectedState); } } } @@ -1288,9 +1372,12 @@ { int errCode = se.getErrorCode(); String msg = se.getMessage(); - String state = se.getSQLState(); + String sState = se.getSQLState(); String expectedState = "XRE20"; - util.DEBUG("failOver_direct Got SQLException: " + errCode + " " + state + " " + msg); + msg = "failOver_direct Got SQLException: " + + errCode + " " + sState + " " + msg + + ". Expected: " + expectedState; + util.DEBUG(msg); BaseJDBCTestCase.assertSQLState(expectedState, se); } } @@ -2010,7 +2097,7 @@ util.DEBUG("--------------------------------------------------------"); // for SimplePerfTest - tuplesToInsert = 10000; + tuplesToInsertPerf = 10000; commitFreq = 1000; // "0" is autocommit util.DEBUG("--------------------------------------------------------"); @@ -2292,8 +2379,8 @@ ); util.DEBUG(debugId+"************** Do .start()."); serverThread.start(); - pingServer(serverHost, serverPort, 15); // Wait for the server to come up in a reasonable time.... - + pingServer(serverHost, serverPort, 150); // Wait for the server to come up in a reasonable time.... + } util.DEBUG(debugId+"--- StartServer "); @@ -2320,7 +2407,7 @@ InetAddress.getByName(interfacesToListenOn), serverPort); server.start(null); - pingServer(serverHost, serverPort, 15); + pingServer(serverHost, serverPort, 150); Properties sp = server.getCurrentProperties(); sp.setProperty("noSecurityManager", @@ -2629,17 +2716,21 @@ try { controller.ping(); - // DEBUG("Server came up in less than " + i*(SLEEP_TIME_MILLIS/1000) + " secs."); + util.DEBUG("Server came up in less than "+i+" * "+PINGSERVER_SLEEP_TIME_MILLIS+"ms."); return; } catch (Exception e) { finalException = e; } - Thread.sleep( SLEEP_TIME_MILLIS ); + Thread.sleep( PINGSERVER_SLEEP_TIME_MILLIS ); } - util.DEBUG( "Server did not come up: " + finalException.getMessage() ); - finalException.printStackTrace(); + String msg = "Could not ping in " + + iterations + " * " + PINGSERVER_SLEEP_TIME_MILLIS + "ms.: " + + finalException.getMessage(); + util.DEBUG( msg ); + finalException.printStackTrace(); // REMOVE? + throw new Exception(msg); } @@ -3189,4 +3280,95 @@ } } + void assertException(SQLException se, String expectedSqlState) + { + if (se == null ) // Did not get an exception + { + util.DEBUG("Got 'null' exception, expected '" + expectedSqlState + "'"); + assertTrue("Expected exception: " + expectedSqlState + " got: 'null' exception", + expectedSqlState == null); + return; + } + int ec = se.getErrorCode(); + String ss = se.getSQLState(); + String msg = "Got " + ec + " " + ss + " " + se.getMessage() + + ". Expected " + expectedSqlState; + util.DEBUG(msg); + + if ( expectedSqlState != null ) // We expect an exception + { + assertTrue(msg, ss.equals(expectedSqlState)); + } + else // We do not expect an exception, but got one. + { + assertTrue(msg, false); + } + } + + + void _testInsertUpdateDeleteOnMaster(String serverHost, + int serverPort, + String dbPath, + int _noTuplesToInsert) + throws SQLException + { + util.DEBUG("_testInsertUpdateDeleteOnMaster: " + serverHost + ":" + + serverPort + "/" + dbPath + " " + _noTuplesToInsert); + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(dbPath); + ds.setServerName(serverHost); + ds.setPortNumber(serverPort); + Connection conn = ds.getConnection(); + + PreparedStatement ps = conn.prepareStatement("create table t(i integer primary key, s varchar(64))"); + + ps.execute(); + + ps = conn.prepareStatement("insert into t values (?,?)"); + for (int i = 0; i< _noTuplesToInsert; i++) + { + ps.setInt(1,i); + ps.setString(2,"dilldall"+i); + ps.execute(); + if ( (i % 10000) == 0 ) conn.commit(); + } + + _verify(conn, _noTuplesToInsert); + + conn.close(); + } + void _verifyDatabase(String serverHost, + int serverPort, + String dbPath, + int _noTuplesInserted) + 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); + Connection conn = ds.getConnection(); + + _verify(conn,_noTuplesInserted); + + conn.close(); + } + void _verify(Connection conn, int _noTuplesInserted) + throws SQLException + { + Statement s = conn.createStatement(); + ResultSet rs = s.executeQuery("select count(*) from t"); + rs.next(); + int count = rs.getInt(1); + rs = s.executeQuery("select max(i) from t"); + rs.next(); + int max = rs.getInt(1); + util.DEBUG("_verify: " + count + "/" + _noTuplesInserted + " " + max + + "/" + (_noTuplesInserted - 1)); + assertEquals("Expected "+ _noTuplesInserted +" tuples, got "+ count +".", + _noTuplesInserted, count); + assertEquals("Expected " +(_noTuplesInserted-1) +" max, got " + max +".", + _noTuplesInserted - 1, max); + } } Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Distributed.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Distributed.java?rev=704197&r1=704196&r2=704197&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Distributed.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Distributed.java Mon Oct 13 11:45:16 2008 @@ -301,7 +301,7 @@ System.out.println("--------------------------------------------------------"); // for SimplePerfTest - tuplesToInsert = Integer.parseInt(cp.getProperty("test.inserts","10000")); + tuplesToInsertPerf = Integer.parseInt(cp.getProperty("test.inserts","10000")); commitFreq = Integer.parseInt(cp.getProperty("test.commitFreq","0")); // "0" is autocommit System.out.println("--------------------------------------------------------"); 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=704197&r1=704196&r2=704197&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 Mon Oct 13 11:45:16 2008 @@ -77,7 +77,7 @@ //// ////////////////////////////////////////////////////////////// - public void testReplication_Local() + public void testReplication_Local_existingTestsAsReplLoad() throws Exception { cleanAllTestHosts(); @@ -175,7 +175,7 @@ * after copying the db to the slave location * @throws java.lang.Exception on test errors. */ - public void testLogFilesSynched() throws Exception { + public void testReplication_Local_LogFilesSynched() throws Exception { cleanAllTestHosts(); initEnvironment(); Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_1.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_1.java?rev=704197&r1=704196&r2=704197&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_1.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_1.java Mon Oct 13 11:45:16 2008 @@ -20,14 +20,8 @@ */ package org.apache.derbyTesting.functionTests.tests.replicationTests; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; import junit.framework.Test; import junit.framework.TestSuite; -import org.apache.derby.jdbc.ClientDataSource; import org.apache.derbyTesting.junit.SecurityManagerSetup; @@ -60,7 +54,7 @@ } - public void testReplication_Local_1() + public void testReplication_Local_1_InsertUpdateDeleteOnMaster() throws Exception { cleanAllTestHosts(); @@ -105,8 +99,10 @@ // Replication "load" String dbPath = masterDatabasePath + FS + masterDbSubPath + FS + replicatedDb; + + int tuplesToInsert = 10000; _testInsertUpdateDeleteOnMaster(masterServerHost, masterServerPort, - dbPath); + dbPath, tuplesToInsert); failOver(jvmVersion, masterDatabasePath, masterDbSubPath, replicatedDb, @@ -120,77 +116,12 @@ // verifySlave(); dbPath = slaveDatabasePath+FS+slaveDbSubPath+FS+replicatedDb; _verifyDatabase(slaveServerHost, slaveServerPort, - dbPath); + dbPath, tuplesToInsert); // We should verify the master as well, // at least to see that we still can connect. // verifyMaster(); dbPath = masterDatabasePath +FS+masterDbSubPath +FS+ replicatedDb; _verifyDatabase(masterServerHost, masterServerPort, - dbPath); - } - - private final int noTuplesToInsert = 10000; - private void _testInsertUpdateDeleteOnMaster(String serverHost, - int serverPort, - String dbPath) - throws SQLException - { - util.DEBUG("_testInsertUpdateDeleteOnMaster: " + serverHost + ":" + - serverPort + "/" + dbPath); - ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); - ds.setDatabaseName(dbPath); - ds.setServerName(serverHost); - ds.setPortNumber(serverPort); - Connection conn = ds.getConnection(); - - PreparedStatement ps = conn.prepareStatement("create table t(i integer primary key, s varchar(64))"); - - ps.execute(); - - ps = conn.prepareStatement("insert into t values (?,?)"); - for (int i = 0; i< noTuplesToInsert; i++) - { - ps.setInt(1,i); - ps.setString(2,"dilldall"+i); - ps.execute(); - if ( (i % 10000) == 0 ) conn.commit(); - } - - _verify(conn); - - conn.close(); - } - private void _verifyDatabase(String serverHost, - int serverPort, - String dbPath) - 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); - Connection conn = ds.getConnection(); - - _verify(conn); - - conn.close(); - } - private void _verify(Connection conn) - throws SQLException - { - Statement s = conn.createStatement(); - ResultSet rs = s.executeQuery("select count(*) from t"); - rs.next(); - int count = rs.getInt(1); - rs = s.executeQuery("select max(i) from t"); - rs.next(); - int max = rs.getInt(1); - util.DEBUG("_verify: " + count + "/" + noTuplesToInsert + " " + max + - "/" + (noTuplesToInsert - 1)); - assertEquals("Expected "+ noTuplesToInsert +" tuples, got "+ count +".", - noTuplesToInsert, count); - assertEquals("Expected " +(noTuplesToInsert-1) +" max, got " + max +".", - noTuplesToInsert - 1, max); + dbPath, tuplesToInsert); } } Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3.java?rev=704197&view=auto ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3.java (added) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3.java Mon Oct 13 11:45:16 2008 @@ -0,0 +1,146 @@ +/* + +Derby - Class org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun_Local_3 + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + */ +package org.apache.derbyTesting.functionTests.tests.replicationTests; + +import java.sql.Connection; +import java.sql.SQLException; +import org.apache.derby.jdbc.ClientDataSource; + + +/** + * Run a replication test on localhost + * by using default values for master and slave hosts, + * and master and slave ports. + * + */ + +public class ReplicationRun_Local_3 extends ReplicationRun +{ + + /** + * Creates a new instance of ReplicationRun_Local + * @param testcaseName Identifying the test. + */ + public ReplicationRun_Local_3(String testcaseName) + { + super(testcaseName); + } + + protected void setUp() throws Exception + { + super.setUp(); + } + + protected void tearDown() throws Exception + { + super.tearDown(); + } + + ////////////////////////////////////////////////////////////// + //// + //// The replication test framework (testReplication()): + //// a) "clean" replication run starting master and slave servers, + //// preparing master and slave databases, + //// starting and stopping replication and doing + //// failover for a "normal"/"failure free" replication + //// test run. + //// + ////////////////////////////////////////////////////////////// + + + SQLException _failOver(String serverHost, int serverPort, String dbPath) + { + util.DEBUG("BEGIN _failOver"); + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(dbPath); + ds.setServerName(serverHost); + ds.setPortNumber(serverPort); + ds.setConnectionAttributes("failover=true"); + try { + Connection conn = ds.getConnection(); // + conn.close(); + util.DEBUG("END _failOver. Got Connection"); + return null; // If successfull - could only happen on slave after a master stopMaster. + } catch (SQLException se) { + util.DEBUG("END _failOver. " + se.getSQLState()); + return se; + } + + } + + SQLException _startSlaveTrueAndCreateTrue(String serverHost, + int serverPort, + String dbPath) + throws SQLException + { + util.DEBUG("_startSlaveTrueAndCreateTrue"); + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(dbPath); + ds.setServerName(serverHost); + ds.setPortNumber(serverPort); + ds.setConnectionAttributes("startSlave=true;create=true"); + try { + Connection conn = ds.getConnection(); // XRE10 - REPLICATION_CONFLICTING_ATTRIBUTES + conn.close(); + return null; // Should never get here. + } catch (SQLException se) { + return se; + } + } + + SQLException _stopMaster(String masterServerHost, int masterServerPort, String dbPath) + { + util.DEBUG("_stopMaster"); + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(dbPath); + ds.setServerName(masterServerHost); + ds.setPortNumber(masterServerPort); + ds.setConnectionAttributes("stopMaster=true"); + try { + Connection conn = ds.getConnection(); // + conn.close(); + return null; // If successfull. + } catch (SQLException se) { + util.DEBUG(se.getErrorCode()+" "+se.getSQLState()+" "+se.getMessage()); + return se; + } + } + + SQLException _stopSlave(String slaveServerHost, int slaveServerPort, + String dbPath) + throws SQLException + { + util.DEBUG("_stopSlave"); + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(dbPath); + ds.setServerName(slaveServerHost); + ds.setPortNumber(slaveServerPort); + ds.setConnectionAttributes("stopSlave=true"); + try { + Connection conn = ds.getConnection(); + conn.close(); + return null; // If successfull. + } catch (SQLException se) { + return se; + } + } + +} Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3.java ------------------------------------------------------------------------------ svn:eol-style = native Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p1.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p1.java?rev=704197&view=auto ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p1.java (added) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p1.java Mon Oct 13 11:45:16 2008 @@ -0,0 +1,229 @@ +/* + +Derby - Class org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun_Local_3_p1 + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + */ +package org.apache.derbyTesting.functionTests.tests.replicationTests; + +import junit.framework.Test; +import junit.framework.TestSuite; +import org.apache.derbyTesting.junit.SecurityManagerSetup; + + +/** + * Run a replication test on localhost + * by using default values for master and slave hosts, + * and master and slave ports. + * + */ + +public class ReplicationRun_Local_3_p1 extends ReplicationRun_Local_3 +{ + + /** + * Creates a new instance of ReplicationRun_Local + * @param testcaseName Identifying the test. + */ + public ReplicationRun_Local_3_p1(String testcaseName) + { + super(testcaseName); + } + + protected void setUp() throws Exception + { + super.setUp(); + } + + protected void tearDown() throws Exception + { + super.tearDown(); + } + + public static Test suite() + { + TestSuite suite = new TestSuite("ReplicationRun_Local_3_p1 Suite"); + + suite.addTestSuite( ReplicationRun_Local_3_p1.class ); + + return SecurityManagerSetup.noSecurityManager(suite); + + } + + ////////////////////////////////////////////////////////////// + //// + //// The replication test framework (testReplication()): + //// a) "clean" replication run starting master and slave servers, + //// preparing master and slave databases, + //// starting and stopping replication and doing + //// failover for a "normal"/"failure free" replication + //// test run. + //// + ////////////////////////////////////////////////////////////// + + public void testReplication_Local_3_p1_StateNegativeTests() + throws Exception + { + cleanAllTestHosts(); + + initEnvironment(); + + initMaster(masterServerHost, + replicatedDb); + + masterServer = startServer(masterJvmVersion, derbyMasterVersion, + masterServerHost, + ALL_INTERFACES, // masterServerHost, // "0.0.0.0", // All. or use masterServerHost for interfacesToListenOn, + masterServerPort, + masterDbSubPath); // Distinguishing master/slave + + slaveServer = startServer(slaveJvmVersion, derbySlaveVersion, + slaveServerHost, + ALL_INTERFACES, // slaveServerHost, // "0.0.0.0", // All. or use slaveServerHost for interfacesToListenOn, + slaveServerPort, + slaveDbSubPath); // Distinguishing master/slave + + startServerMonitor(slaveServerHost); + + bootMasterDatabase(jvmVersion, + masterDatabasePath +FS+ masterDbSubPath, + replicatedDb, + masterServerHost, // Where the startreplication command must be given + masterServerPort, // master server interface accepting client requests + null // bootLoad, // The "test" to start when booting db. + ); + + // 4. separate test + // master db created... + // slave: connect 'startSlave=true;create=true' + assertException( + _startSlaveTrueAndCreateTrue(slaveServerHost, slaveServerPort, + masterDatabasePath +FS+ masterDbSubPath +FS+ replicatedDb), + "XRE10"); // REPLICATION_CONFLICTING_ATTRIBUTES // OK to continue. + + initSlave(slaveServerHost, + jvmVersion, + replicatedDb); // Trunk and Prototype V2: copy master db to db_slave. + + startSlave(jvmVersion, replicatedDb, + slaveServerHost, // slaveClientInterface // where the slave db runs + slaveServerPort, + slaveServerHost, // for slaveReplInterface + slaveReplPort, + testClientHost); + + startMaster(jvmVersion, replicatedDb, + masterServerHost, // Where the startMaster command must be given + masterServerPort, // master server interface accepting client requests + masterServerHost, // An interface on the master: masterClientInterface (==masterServerHost), + slaveServerPort, // Not used since slave don't allow clients. + slaveServerHost, // for slaveReplInterface + slaveReplPort); + + runTest(null, // Returns immediatly if replicationTest is null. + jvmVersion, + testClientHost, + masterServerHost, masterServerPort, + replicatedDb); + + // 1. separate test + // slave: stopSlave + assertException( + _stopSlave(slaveServerHost, slaveServerPort, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb), + "XRE41"); // SLAVE_OPERATION_DENIED_WHILE_CONNECTED // OK to continue + + // 2. separate test + // master: stopSlave + // master: stopMaster + // slave: stopSlave + assertException( + _stopSlave(masterServerHost, masterServerPort, + masterDatabasePath + FS + masterDbSubPath + FS + replicatedDb), + "XRE40"); // REPLICATION_NOT_IN_SLAVE_MODE // OK to continue + assertException( + _stopMaster(masterServerHost, masterServerPort, + masterDatabasePath + FS + masterDbSubPath + FS + replicatedDb), + null); // Implies failover. // OK to continue. We have failover. + /* showCurrentState("Post stopMaster", 0L, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); + showCurrentState("Post stopMaster +1s", 1000L, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); */ + waitForConnect(100L, 10, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); + assertException( + _stopSlave(slaveServerHost, slaveServerPort, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb), + "XRE40"); // REPLICATION_NOT_IN_SLAVE_MODE // OK to continue + /* showCurrentState("Post stopMaster, stopSlave", 0L, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); + showCurrentState("Post stopMaster, stopSlave +1s", 1000L, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); */ + /* showCurrentState("Post stopMaster, stopSlave +1s", 0L, + masterDatabasePath + FS + masterDbSubPath + FS + replicatedDb, + masterServerHost, masterServerPort); */ + waitForConnect(100L, 10, + masterDatabasePath + FS + masterDbSubPath + FS + replicatedDb, + masterServerHost, masterServerPort); + + + /* BEGIN In ReplicationRun_Local_3_p2.java: + // 3. separate test + // stopMaster + // failover on slave + + // 5. separate test + // slave: "normal" connect to slave db + + // 6. separate test + // slave: 'internal-stopslave=true' + END */ + + /* failOver(jvmVersion, + masterDatabasePath, masterDbSubPath, replicatedDb, + masterServerHost, // Where the master db is run. + masterServerPort, + testClientHost); + */ + assertException( + _failOver(masterServerHost, masterServerPort, + masterDatabasePath+FS+masterDbSubPath+FS+replicatedDb), + "XRE07"); // REPLICATION_NOT_IN_MASTER_MODE + + connectPing(slaveDatabasePath+FS+slaveDbSubPath+FS+replicatedDb, + slaveServerHost,slaveServerPort, + testClientHost); + + verifySlave(); + + // We should verify the master as well, at least to see that we still can connect. + verifyMaster(); + + stopServer(jvmVersion, derbyVersion, + slaveServerHost, slaveServerPort); + + stopServer(jvmVersion, derbyVersion, + masterServerHost, masterServerPort); + + } + +} Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p1.java ------------------------------------------------------------------------------ svn:eol-style = native Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p2.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p2.java?rev=704197&view=auto ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p2.java (added) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p2.java Mon Oct 13 11:45:16 2008 @@ -0,0 +1,254 @@ +/* + +Derby - Class org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun_Local_3_p2 + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + */ +package org.apache.derbyTesting.functionTests.tests.replicationTests; + +import junit.framework.Test; +import junit.framework.TestSuite; +import org.apache.derbyTesting.junit.SecurityManagerSetup; + + +/** + * Run a replication test on localhost + * by using default values for master and slave hosts, + * and master and slave ports. + * + */ + +public class ReplicationRun_Local_3_p2 extends ReplicationRun_Local_3 +{ + + /** + * Creates a new instance of ReplicationRun_Local + * @param testcaseName Identifying the test. + */ + public ReplicationRun_Local_3_p2(String testcaseName) + { + super(testcaseName); + } + + protected void setUp() throws Exception + { + super.setUp(); + } + + protected void tearDown() throws Exception + { + super.tearDown(); + } + + public static Test suite() + { + TestSuite suite = new TestSuite("ReplicationRun_Local_3_p2 Suite"); + + suite.addTestSuite( ReplicationRun_Local_3_p2.class ); + + return SecurityManagerSetup.noSecurityManager(suite); + + } + + ////////////////////////////////////////////////////////////// + //// + //// The replication test framework (testReplication()): + //// a) "clean" replication run starting master and slave servers, + //// preparing master and slave databases, + //// starting and stopping replication and doing + //// failover for a "normal"/"failure free" replication + //// test run. + //// + ////////////////////////////////////////////////////////////// + + public void replication_Local_3_p2_StateTests(boolean bigInsert, + boolean immediateStopMaster) // no sleep between startMaster and stopMaster. + throws Exception + { + cleanAllTestHosts(); + + initEnvironment(); + + initMaster(masterServerHost, + replicatedDb); + + masterServer = startServer(masterJvmVersion, derbyMasterVersion, + masterServerHost, + ALL_INTERFACES, // masterServerHost, // "0.0.0.0", // All. or use masterServerHost for interfacesToListenOn, + masterServerPort, + masterDbSubPath); // Distinguishing master/slave + + slaveServer = startServer(slaveJvmVersion, derbySlaveVersion, + slaveServerHost, + ALL_INTERFACES, // slaveServerHost, // "0.0.0.0", // All. or use slaveServerHost for interfacesToListenOn, + slaveServerPort, + slaveDbSubPath); // Distinguishing master/slave + + startServerMonitor(slaveServerHost); + + bootMasterDatabase(jvmVersion, + masterDatabasePath +FS+ masterDbSubPath, + replicatedDb, + masterServerHost, // Where the startreplication command must be given + masterServerPort, // master server interface accepting client requests + null // bootLoad, // The "test" to start when booting db. + ); + + /* In ReplicationRun_Local_3_p1 + // 4 separate test + // master db created... + // slave: connect 'startSlave=true;create=true' + */ + + initSlave(slaveServerHost, + jvmVersion, + replicatedDb); // Trunk and Prototype V2: copy master db to db_slave. + + startSlave(jvmVersion, replicatedDb, + slaveServerHost, // slaveClientInterface // where the slave db runs + slaveServerPort, + slaveServerHost, // for slaveReplInterface + slaveReplPort, + testClientHost); + + startMaster(jvmVersion, replicatedDb, + masterServerHost, // Where the startMaster command must be given + masterServerPort, // master server interface accepting client requests + masterServerHost, // An interface on the master: masterClientInterface (==masterServerHost), + slaveServerPort, // Not used since slave don't allow clients. + slaveServerHost, // for slaveReplInterface + slaveReplPort); + + /* runTest(null, // Returns immediatly if replicationTest is null. + jvmVersion, + testClientHost, + masterServerHost, masterServerPort, + replicatedDb); */ + String masterDb = masterDatabasePath+FS+masterDbSubPath+FS+replicatedDb; + // boolean bigInsert = true; + // boolean immediateStopMaster = false; // no sleep between startMaster and stopMaster. + int tupsInserted = (bigInsert)?9876:10; + _testInsertUpdateDeleteOnMaster(masterServerHost, masterServerPort, + masterDb, tupsInserted); + + /* In ReplicationRun_Local_3_p1 + // 1 separate test + // slave: stopSlave + + // 2 separate test + // master: stopSlave + // master: stopMaster + // slave: stopSlave + */ + + // 3 separate test + // stopMaster + // failover on slave + if ( ! immediateStopMaster) { + util.DEBUG("sleep(10000L)"); + Thread.sleep(10000L); // Do we try stopMaster too "close" to startmaster/startSlave? + } + assertException( + _stopMaster(masterServerHost, masterServerPort, + masterDb), + null); // Implies failover. // OK to continue. + // Appears that failover is NOT done when bigInsert==false && immediateStopMaster== true: + // See below. + + waitForConnect(100L, 200, + masterDb, + masterServerHost, masterServerPort); + + String slaveDb = slaveDatabasePath+FS+slaveDbSubPath+FS+replicatedDb; + if ( bigInsert==false && immediateStopMaster== true ) // UNEXPECTED BEHAVIOUR + { // ..._smallInsert_immediateStopMaster() + waitForSQLState("08004", 100L, 200, // Doing this to reach failover below also in this case! But will fail there! + slaveDb, + slaveServerHost, slaveServerPort); + }else + { // Correctly gets connection, i.e. failover has happened. + waitForConnect(100L, 200, + slaveDb, + slaveServerHost, slaveServerPort); + + // Only if we can connect: + _verifyDatabase(slaveServerHost, slaveServerPort, slaveDb, + tupsInserted); // Will all tuples be transferred to slave here? + } + + // 5 separate test + // slave: "normal" connect to slave db + + // 6 separate test + // slave: 'internal-stopslave=true' + + String expected = "XRE07"; // REPLICATION_NOT_IN_MASTER_MODE is correct when failover did happen above w/stopMaster. + if ( bigInsert==false && immediateStopMaster== true ) expected = null; // UNEXPECTED BEHAVIOUR: null or hang! + assertException( + _failOver(slaveServerHost, slaveServerPort, + slaveDb), + expected); + + waitForConnect(100L, 200, + slaveDb, + slaveServerHost, slaveServerPort); + + connectPing(slaveDb, + slaveServerHost,slaveServerPort, + testClientHost); // + + // verifySlave(); + _verifyDatabase(slaveServerHost, slaveServerPort, slaveDb, + tupsInserted); + + // We should verify the master as well, at least to see that we still can connect. + // verifyMaster(); + _verifyDatabase(masterServerHost, masterServerPort, masterDb, + tupsInserted); + + stopServer(jvmVersion, derbyVersion, + slaveServerHost, slaveServerPort); + + stopServer(jvmVersion, derbyVersion, + masterServerHost, masterServerPort); + + } + public void testReplication_Local_3_p2_StateTests_bigInsert_immediateStopMaster() + throws Exception + { + replication_Local_3_p2_StateTests(true, true); + } + public void testReplication_Local_3_p2_StateTests_smallInsert_immediateStopMaster_DISABLED() + throws Exception + { + // FIXME! ENABLE when DERBY-3617 is RESOLVED - otherwise hangs.... + // ... Now gets connection instead of XRE07! + // And then we experience hang again... + // replication_Local_3_p2_StateTests(false, true); + } + public void testReplication_Local_3_p2_StateTests_bigInsert_sleepBeforeStopMaster() + throws Exception + { + replication_Local_3_p2_StateTests(true, false); + } + public void testReplication_Local_3_p2_StateTests_smallInsert_sleepBeforeStopMaster() + throws Exception + { + replication_Local_3_p2_StateTests(false, false); + } + +} Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p2.java ------------------------------------------------------------------------------ svn:eol-style = native Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p3.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p3.java?rev=704197&view=auto ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p3.java (added) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p3.java Mon Oct 13 11:45:16 2008 @@ -0,0 +1,223 @@ +/* + +Derby - Class org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun_Local_3_p3 + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + */ +package org.apache.derbyTesting.functionTests.tests.replicationTests; + +import junit.framework.Test; +import junit.framework.TestSuite; +import org.apache.derbyTesting.junit.SecurityManagerSetup; + + +/** + * Run a replication test on localhost + * by using default values for master and slave hosts, + * and master and slave ports. + * + */ + +public class ReplicationRun_Local_3_p3 extends ReplicationRun_Local_3 +{ + + /** + * Creates a new instance of ReplicationRun_Local + * @param testcaseName Identifying the test. + */ + public ReplicationRun_Local_3_p3(String testcaseName) + { + super(testcaseName); + } + + protected void setUp() throws Exception + { + super.setUp(); + } + + protected void tearDown() throws Exception + { + super.tearDown(); + } + + public static Test suite() + { + TestSuite suite = new TestSuite("ReplicationRun_Local_3_p3 Suite"); + + suite.addTestSuite( ReplicationRun_Local_3_p3.class ); + + return SecurityManagerSetup.noSecurityManager(suite); + + } + + ////////////////////////////////////////////////////////////// + //// + //// The replication test framework (testReplication()): + //// a) "clean" replication run starting master and slave servers, + //// preparing master and slave databases, + //// starting and stopping replication and doing + //// failover for a "normal"/"failure free" replication + //// test run. + //// + ////////////////////////////////////////////////////////////// + + public void testReplication_Local_3_p3_StateNegativeTests() + throws Exception + { + cleanAllTestHosts(); + + initEnvironment(); + + initMaster(masterServerHost, + replicatedDb); + + masterServer = startServer(masterJvmVersion, derbyMasterVersion, + masterServerHost, + ALL_INTERFACES, // masterServerHost, // "0.0.0.0", // All. or use masterServerHost for interfacesToListenOn, + masterServerPort, + masterDbSubPath); // Distinguishing master/slave + + slaveServer = startServer(slaveJvmVersion, derbySlaveVersion, + slaveServerHost, + ALL_INTERFACES, // slaveServerHost, // "0.0.0.0", // All. or use slaveServerHost for interfacesToListenOn, + slaveServerPort, + slaveDbSubPath); // Distinguishing master/slave + + startServerMonitor(slaveServerHost); + + bootMasterDatabase(jvmVersion, + masterDatabasePath +FS+ masterDbSubPath, + replicatedDb, + masterServerHost, // Where the startreplication command must be given + masterServerPort, // master server interface accepting client requests + null // bootLoad, // The "test" to start when booting db. + ); + + /* In ReplicationRun_Local_3_p1 + // 4 separate test + // master db created... + // slave: connect 'startSlave=true;create=true' + */ + + initSlave(slaveServerHost, + jvmVersion, + replicatedDb); // Trunk and Prototype V2: copy master db to db_slave. + + startSlave(jvmVersion, replicatedDb, + slaveServerHost, // slaveClientInterface // where the slave db runs + slaveServerPort, + slaveServerHost, // for slaveReplInterface + slaveReplPort, + testClientHost); + + startMaster(jvmVersion, replicatedDb, + masterServerHost, // Where the startMaster command must be given + masterServerPort, // master server interface accepting client requests + masterServerHost, // An interface on the master: masterClientInterface (==masterServerHost), + slaveServerPort, // Not used since slave don't allow clients. + slaveServerHost, // for slaveReplInterface + slaveReplPort); + + runTest(null, // Returns immediatly if replicationTest is null. + jvmVersion, + testClientHost, + masterServerHost, masterServerPort, + replicatedDb); + + /* In ReplicationRun_Local_3_p1 + // 1 separate test + // slave: stopSlave + + // 2 separate test + // master: stopSlave + // master: stopMaster + // slave: stopSlave + */ + + // 3 separate test + // stopMaster + // failover on slave + assertException( + _stopMaster(masterServerHost, masterServerPort, + masterDatabasePath + FS + masterDbSubPath + FS + replicatedDb), + null); // Implies failover. // OK to continue. + /* showCurrentState("Post stopMaster +1s", 1000L, + masterDatabasePath + FS + masterDbSubPath + FS + replicatedDb, + masterServerHost, masterServerPort); */ + waitForConnect(100L, 10, + masterDatabasePath + FS + masterDbSubPath + FS + replicatedDb, + masterServerHost, masterServerPort); + /* showCurrentState("Post stopMaster +1s", 0L, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); + showCurrentState("Post stopMaster +5s", 5000L, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); */ + waitForSQLState("08004", 100L, 20, // 08004.C.7 - CANNOT_CONNECT_TO_DB_IN_SLAVE_MODE + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); + /* Got it above... showCurrentState("Post stopMaster +30s", 30000L, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); // 08004 */ + /* Got it above... showCurrentState("Post stopMaster +60s", 30000L, + masterDatabasePath + FS + masterDbSubPath + FS + replicatedDb, + masterServerHost, masterServerPort); // CONNECTED */ + assertException( + _failOver(masterServerHost, masterServerPort, + masterDatabasePath+FS+masterDbSubPath+FS+replicatedDb), + "XRE07"); + /* _p2: assertException( + _failOver(slaveServerHost, slaveServerPort, + slaveDatabasePath+FS+slaveDbSubPath+FS+replicatedDb), + "XRE07"); // Hangs!? even after killMaster server. */ + + // 5 separate test + // slave: "normal" connect to slave db + + // 6 separate test + // slave: 'internal-stopslave=true' + + /* failOver(jvmVersion, + masterDatabasePath, masterDbSubPath, replicatedDb, + masterServerHost, // Where the master db is run. + masterServerPort, + testClientHost); // XRE07 Could not perform operation because the database is not in replication master mode. + */ + + waitForSQLState("08004", 100L, 20, // 08004.C.7 - CANNOT_CONNECT_TO_DB_IN_SLAVE_MODE + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb, + slaveServerHost, slaveServerPort); // _failOver above fails... + /* + connectPing(slaveDatabasePath+FS+slaveDbSubPath+FS+replicatedDb, + slaveServerHost,slaveServerPort, + testClientHost); // + */ + + // Not relevant as we can not connect. verifySlave(); + + // We should verify the master as well, at least to see that we still can connect. + verifyMaster(); + + stopServer(jvmVersion, derbyVersion, + slaveServerHost, slaveServerPort); + + stopServer(jvmVersion, derbyVersion, + masterServerHost, masterServerPort); + + } + +} Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p3.java ------------------------------------------------------------------------------ svn:eol-style = native Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p4.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p4.java?rev=704197&view=auto ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p4.java (added) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p4.java Mon Oct 13 11:45:16 2008 @@ -0,0 +1,216 @@ +/* + +Derby - Class org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun_Local_3_p4 + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + */ +package org.apache.derbyTesting.functionTests.tests.replicationTests; + +import java.sql.Connection; +import java.sql.SQLException; +import junit.framework.Test; +import junit.framework.TestSuite; +import org.apache.derby.jdbc.ClientDataSource; +import org.apache.derbyTesting.junit.SecurityManagerSetup; + + +/** + * Run a replication test on localhost + * by using default values for master and slave hosts, + * and master and slave ports. + * + */ + +public class ReplicationRun_Local_3_p4 extends ReplicationRun +{ + + /** + * Creates a new instance of ReplicationRun_Local + * @param testcaseName Identifying the test. + */ + public ReplicationRun_Local_3_p4(String testcaseName) + { + super(testcaseName); + } + + protected void setUp() throws Exception + { + super.setUp(); + } + + protected void tearDown() throws Exception + { + super.tearDown(); + } + + public static Test suite() + { + TestSuite suite = new TestSuite("ReplicationRun_Local_3_p4 Suite"); + + suite.addTestSuite( ReplicationRun_Local_3_p4.class ); + + return SecurityManagerSetup.noSecurityManager(suite); + + } + + ////////////////////////////////////////////////////////////// + //// + //// The replication test framework (testReplication()): + //// a) "clean" replication run starting master and slave servers, + //// preparing master and slave databases, + //// starting and stopping replication and doing + //// failover for a "normal"/"failure free" replication + //// test run. + //// + ////////////////////////////////////////////////////////////// + + public void testReplication_Local_3_p4_StateNegativeTests() + throws Exception + { + cleanAllTestHosts(); + + initEnvironment(); + + initMaster(masterServerHost, + replicatedDb); + + masterServer = startServer(masterJvmVersion, derbyMasterVersion, + masterServerHost, + ALL_INTERFACES, // masterServerHost, // "0.0.0.0", // All. or use masterServerHost for interfacesToListenOn, + masterServerPort, + masterDbSubPath); // Distinguishing master/slave + + slaveServer = startServer(slaveJvmVersion, derbySlaveVersion, + slaveServerHost, + ALL_INTERFACES, // slaveServerHost, // "0.0.0.0", // All. or use slaveServerHost for interfacesToListenOn, + slaveServerPort, + slaveDbSubPath); // Distinguishing master/slave + + startServerMonitor(slaveServerHost); + + bootMasterDatabase(jvmVersion, + masterDatabasePath +FS+ masterDbSubPath, + replicatedDb, + masterServerHost, // Where the startreplication command must be given + masterServerPort, // master server interface accepting client requests + null // bootLoad, // The "test" to start when booting db. + ); + + initSlave(slaveServerHost, + jvmVersion, + replicatedDb); // Trunk and Prototype V2: copy master db to db_slave. + + startSlave(jvmVersion, replicatedDb, + slaveServerHost, // slaveClientInterface // where the slave db runs + slaveServerPort, + slaveServerHost, // for slaveReplInterface + slaveReplPort, + testClientHost); + + startMaster(jvmVersion, replicatedDb, + masterServerHost, // Where the startMaster command must be given + masterServerPort, // master server interface accepting client requests + masterServerHost, // An interface on the master: masterClientInterface (==masterServerHost), + slaveServerPort, // Not used since slave don't allow clients. + slaveServerHost, // for slaveReplInterface + slaveReplPort); + + + runTest(null, // Returns immediatly if replicationTest is null. + jvmVersion, + testClientHost, + masterServerHost, masterServerPort, + replicatedDb); + + + // 5 separate test + // slave: "normal" connect to slave db + assertException( + _connectToSlave(slaveServerHost, slaveServerPort, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb), + "08004"); + + // 6 separate test + // slave: 'internal_stopslave=true' + assertException( + _internal_stopSlave(slaveServerHost, slaveServerPort, + slaveDatabasePath + FS + slaveDbSubPath + FS + replicatedDb), + "XRE43"); // REPLICATION_STOPSLAVE_NOT_INITIATED + // - Unexpected error when trying to stop replication slave mode. To stop repliation slave mode, use operation 'stopSlave' or 'failover'. + + failOver(jvmVersion, + masterDatabasePath, masterDbSubPath, replicatedDb, + masterServerHost, // Where the master db is run. + masterServerPort, + testClientHost); + + connectPing(slaveDatabasePath+FS+slaveDbSubPath+FS+replicatedDb, + slaveServerHost,slaveServerPort, + testClientHost); + + verifySlave(); + + // We should verify the master as well, at least to see that we still can connect. + verifyMaster(); + + stopServer(jvmVersion, derbyVersion, + slaveServerHost, slaveServerPort); + + stopServer(jvmVersion, derbyVersion, + masterServerHost, masterServerPort); + + } + + private SQLException _connectToSlave(String slaveServerHost, + int slaveServerPort, + String dbPath) { + util.DEBUG("_connectToSlave"); + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(dbPath); + ds.setServerName(slaveServerHost); + ds.setPortNumber(slaveServerPort); + try { + Connection conn = ds.getConnection(); // + conn.close(); + return null; // If successfull - + } catch (SQLException se) { + util.DEBUG(se.getErrorCode()+" "+se.getSQLState()+" "+se.getMessage()); + return se; + } + } + + private SQLException _internal_stopSlave(String slaveServerHost, + int slaveServerPort, + String dbPath) { + util.DEBUG("_internal_stopSlave"); + ClientDataSource ds = new org.apache.derby.jdbc.ClientDataSource(); + ds.setDatabaseName(dbPath); + ds.setServerName(slaveServerHost); + ds.setPortNumber(slaveServerPort); + ds.setConnectionAttributes("internal_stopslave=true"); + try { + Connection conn = ds.getConnection(); // + conn.close(); + return null; // If successfull - + } catch (SQLException se) { + util.DEBUG(se.getErrorCode()+" "+se.getSQLState()+" "+se.getMessage()); + return se; + } + } + + +} Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_3_p4.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_StateTest_part2.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_StateTest_part2.java?rev=704197&r1=704196&r2=704197&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_StateTest_part2.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_StateTest_part2.java Mon Oct 13 11:45:16 2008 @@ -254,13 +254,16 @@ /* No value-adding suggestions here exept that calling startSlave * should hang now. */ - util.DEBUG("_testPostStoppedSlaveServer Not yet implemented"); + util.DEBUG("_testPostStoppedSlave Not yet implemented." + + " No value-adding suggestions here" + + " exept that calling startSlave should hang now."); } private void _testPostStoppedSlaveServer() { /* No value-adding suggestions here */ - util.DEBUG("_testPostStoppedSlave Not yet implemented"); + util.DEBUG("_testPostStoppedSlaveServer Not yet implemented." + + " No value-adding suggestions here."); } private void _testPostStoppedMaster() @@ -268,42 +271,16 @@ /* No value-adding suggestions here since the stopMaster method will * not do anything when called after failover */ - util.DEBUG("_testPostStoppedMaster Not yet implemented"); + util.DEBUG("_testPostStoppedMaster Not yet implemented." + + "No value-adding suggestions here since the stopMaster method" + + " will not do anything when called after failover"); } private void _testPostStoppedServer() { /* No value-adding suggestions here */ - util.DEBUG("_testPostStoppedServer Not yet implemented"); - } - - ////////////////////////////////////////////////////////////////// - // FIXME! The following should be moved to ReplicationRun! - // Use the pattern 'assertException(replCmd()),expectedException);' - // also in the other replication tests! - void assertException(SQLException se, String expectedSqlState) - { - if (se == null ) // Did not get an exception - { - util.DEBUG("Got 'null' exception, expected '" + expectedSqlState + "'"); - assertTrue("Expected exception " + expectedSqlState, - expectedSqlState == null); - return; - } - int ec = se.getErrorCode(); - String ss = se.getSQLState(); - String msg = "Got " + ec + " " + ss + " " + se.getMessage() - + ". Expected " + expectedSqlState; - util.DEBUG(msg); - - if ( expectedSqlState != null ) // We expect an exception - { - assertTrue(msg, ss.equals(expectedSqlState)); - } - else // We do not expect an exception, but got one. - { - assertTrue(msg, false); - } + util.DEBUG("_testPostStoppedServer Not yet implemented." + + " No value-adding suggestions here."); } SQLException startSlave(String slaveServerHost, int slaveServerPort, Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_showStateChange.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_showStateChange.java?rev=704197&view=auto ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_showStateChange.java (added) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_showStateChange.java Mon Oct 13 11:45:16 2008 @@ -0,0 +1,167 @@ +/* + +Derby - Class org.apache.derbyTesting.functionTests.tests.replicationTests.ReplicationRun_Local_showStateChange + +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + + */ +package org.apache.derbyTesting.functionTests.tests.replicationTests; + +import junit.framework.Test; +import junit.framework.TestSuite; +import org.apache.derbyTesting.junit.SecurityManagerSetup; + + +/** + * Run a replication test on localhost + * by using default values for master and slave hosts, + * and master and slave ports. + * This test is intended to be run separatly showing + * state change during a "normal" replication session. + */ + +public class ReplicationRun_Local_showStateChange extends ReplicationRun +{ + + /** + * Creates a new instance of ReplicationRun_Local + * @param testcaseName Identifying the test. + */ + public ReplicationRun_Local_showStateChange(String testcaseName) + { + super(testcaseName); + } + + protected void setUp() throws Exception + { + super.setUp(); + } + + protected void tearDown() throws Exception + { + super.tearDown(); + } + + public static Test suite() + { + TestSuite suite = new TestSuite("ReplicationRun_Local_showStateChange Suite"); + + suite.addTestSuite( ReplicationRun_Local_showStateChange.class ); + + return SecurityManagerSetup.noSecurityManager(suite); + + } + + public void testReplication_Local_showStateChange_showReplState() + throws Exception + { + util.DEBUG(""); // Just to get a nicer print of showCurrentState()... + + cleanAllTestHosts(); + + initEnvironment(); + + initMaster(masterServerHost, + replicatedDb); + + masterServer = startServer(masterJvmVersion, derbyMasterVersion, + masterServerHost, ALL_INTERFACES, masterServerPort, + masterDbSubPath); + + slaveServer = startServer(slaveJvmVersion, derbySlaveVersion, + slaveServerHost, ALL_INTERFACES, slaveServerPort, + slaveDbSubPath); + + final long L=0L;//1000L; + final long S=0L; + boolean outerPrintDebug = util.printDebug; + util.printDebug = true; + String masterDb = masterDatabasePath +FS+masterDbSubPath +FS+ replicatedDb; + String slaveDb = slaveDatabasePath +FS+slaveDbSubPath +FS+ replicatedDb; + showCurrentState("1 started servers",S, masterDb, masterServerHost, masterServerPort); + showCurrentState("1 started servers",S, slaveDb, slaveServerHost, slaveServerPort); + + startServerMonitor(slaveServerHost); + + bootMasterDatabase(jvmVersion, + masterDatabasePath +FS+ masterDbSubPath, replicatedDb, + masterServerHost, masterServerPort, + null // bootLoad, // The "test" to start when booting db. + ); + showCurrentState("2 master booted",S, masterDb, masterServerHost, masterServerPort); + showCurrentState("2 master booted",S, slaveDb, slaveServerHost, slaveServerPort); + + initSlave(slaveServerHost, + jvmVersion, + replicatedDb); + showCurrentState("3 slave filled",S, masterDb, masterServerHost, masterServerPort); + // Causes XRE09 'The database has already been booted' in startSlave - CORRECT?: + // showCurrentState("3 slave filled",S, slaveDb, slaveServerHost, slaveServerPort); + + startSlave(jvmVersion, replicatedDb, + slaveServerHost, slaveServerPort, + slaveServerHost, + slaveReplPort, + testClientHost); + showCurrentState("4 slave started",S, masterDb, masterServerHost, masterServerPort); + // HANGS! on ClientDataSource.getConnection: + // showCurrentState("4 slave started",S, slaveDb, slaveServerHost, slaveServerPort); + + startMaster(jvmVersion, replicatedDb, + masterServerHost, masterServerPort, + masterServerHost, + slaveServerPort, slaveServerHost, + slaveReplPort); + showCurrentState("5 master started",S, masterDb, masterServerHost, masterServerPort); + showCurrentState("5 master started",S, slaveDb, slaveServerHost, slaveServerPort); + + // Replication "load" + util.DEBUG("Running replication load."); + int tuplesToInsert = 10000; + _testInsertUpdateDeleteOnMaster(masterServerHost, masterServerPort, + masterDb, tuplesToInsert); + + failOver(jvmVersion, + masterDatabasePath, masterDbSubPath, replicatedDb, + masterServerHost, masterServerPort, + testClientHost); + waitForSQLState("08004", + 10L, 100, + slaveDb, slaveServerHost, slaveServerPort); + showCurrentState("6 failover initiated",S, masterDb, masterServerHost, masterServerPort); + showCurrentState("6 failover initiated",S, slaveDb, slaveServerHost, slaveServerPort); + waitForConnect(100L, 200, + slaveDb, slaveServerHost, slaveServerPort); + showCurrentState("6 failover initiated + wait..",S, masterDb, masterServerHost, masterServerPort); + showCurrentState("6 failover initiated + wait..",S, slaveDb, slaveServerHost, slaveServerPort); + + connectPing(slaveDb, + slaveServerHost,slaveServerPort, + testClientHost); + + showCurrentState("7 failover completed",S, masterDb, masterServerHost, masterServerPort); + showCurrentState("7 failover completed",S, slaveDb, slaveServerHost, slaveServerPort); + util.printDebug = outerPrintDebug; + // verifySlave(); + _verifyDatabase(slaveServerHost, slaveServerPort, + slaveDb, tuplesToInsert); + // We should verify the master as well, at least to see that we still can connect. + // verifyMaster(); + _verifyDatabase(masterServerHost, masterServerPort, + masterDb, tuplesToInsert); + } + +} Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/ReplicationRun_Local_showStateChange.java ------------------------------------------------------------------------------ svn:eol-style = native 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=704197&r1=704196&r2=704197&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 Mon Oct 13 11:45:16 2008 @@ -57,6 +57,14 @@ suite.addTest(ReplicationRun_Local_StateTest_part2.suite()); + // Run this separatly as it produces extra output: + // suite.addTest(ReplicationRun_Local_showStateChange.suite()); + + suite.addTest(ReplicationRun_Local_3_p1.suite()); + suite.addTest(ReplicationRun_Local_3_p2.suite()); + suite.addTest(ReplicationRun_Local_3_p3.suite()); + suite.addTest(ReplicationRun_Local_3_p4.suite()); + return suite; } } Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/Utils.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/Utils.java?rev=704197&r1=704196&r2=704197&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/Utils.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/replicationTests/Utils.java Mon Oct 13 11:45:16 2008 @@ -96,20 +96,22 @@ { // DEBUG("delete file " + f.getAbsolutePath()); boolean deleted = f.delete(); - // DEBUG("file deleted " + deleted); + if (!deleted) DEBUG("file NOT deleted " + f.getAbsolutePath()); } } if (rmdir) { DEBUG("deleting directory " + dir.getAbsolutePath()); - dir.delete(); + boolean deleted = dir.delete(); + if (!deleted) DEBUG("dir NOT deleted " + dir.getAbsolutePath()); } } else { DEBUG("deleting file " +dir.getAbsolutePath()); - dir.delete(); + boolean deleted = dir.delete(); + if (!deleted) DEBUG("file NOT deleted " + dir.getAbsolutePath()); } }