diff options
| author | Keith Wall <kwall@apache.org> | 2014-06-06 15:43:49 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2014-06-06 15:43:49 +0000 |
| commit | 386c80ed77f3d91903c563e0727dbf2a1b09fc2b (patch) | |
| tree | da4468c2c4f24a487547b3b719ecab0d6ea5b0c2 /qpid/java/bdbstore/src/test | |
| parent | 217f1785cf7def05e296990cde21f9cc74d05022 (diff) | |
| download | qpid-python-386c80ed77f3d91903c563e0727dbf2a1b09fc2b.tar.gz | |
QPID-5801: [Java Broker] Elimination of the BDB facade's initialisation tasks
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1600934 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore/src/test')
3 files changed, 26 insertions, 124 deletions
diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java index 0254cbc909..fd196a28da 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java @@ -193,7 +193,7 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase node.delete(); assertEquals("Unexpected state returned after delete", State.DELETED, node.getState()); assertEquals("Unexpected state", State.DELETED, node.getState()); - assertFalse("Store still exists", _bdbStorePath.exists()); + assertFalse("Store still exists " + _bdbStorePath, _bdbStorePath.exists()); } public void testMutableAttributes() throws Exception diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java index a82bb066e2..5772498ebc 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java @@ -77,38 +77,21 @@ public class StandardEnvironmentFacadeTest extends QpidTestCase assertNull("Environment should be null after facade close", e); } - public void testOpenDatabases() throws Exception + public void testOpenDatabaseReusesCachedHandle() throws Exception { - EnvironmentFacade ef = getEnvironmentFacade(); - DatabaseConfig dbConfig = new DatabaseConfig(); - dbConfig.setTransactional(true); - dbConfig.setAllowCreate(true); - ef.openDatabases(dbConfig, "test1", "test2"); - Database test1 = ef.getOpenDatabase("test1"); - Database test2 = ef.getOpenDatabase("test2"); - - assertEquals("Unexpected name for open database test1", "test1" , test1.getDatabaseName()); - assertEquals("Unexpected name for open database test2", "test2" , test2.getDatabaseName()); - } + DatabaseConfig createIfAbsentDbConfig = DatabaseConfig.DEFAULT.setAllowCreate(true); - public void testGetOpenDatabaseForNonExistingDatabase() throws Exception - { EnvironmentFacade ef = getEnvironmentFacade(); - DatabaseConfig dbConfig = new DatabaseConfig(); - dbConfig.setTransactional(true); - dbConfig.setAllowCreate(true); - ef.openDatabases(dbConfig, "test1"); - Database test1 = ef.getOpenDatabase("test1"); - assertEquals("Unexpected name for open database test1", "test1" , test1.getDatabaseName()); - try - { - ef.getOpenDatabase("test2"); - fail("An exception should be thrown for the non existing database"); - } - catch(IllegalArgumentException e) - { - assertEquals("Unexpected exception message", "Database with name 'test2' has not been opened", e.getMessage()); - } + Database handle1 = ef.openDatabase("myDatabase", createIfAbsentDbConfig); + assertNotNull(handle1); + + Database handle2 = ef.openDatabase("myDatabase", createIfAbsentDbConfig); + assertSame("Database handle should be cached", handle1, handle2); + + ef.closeDatabase("myDatabase"); + + Database handle3 = ef.openDatabase("myDatabase", createIfAbsentDbConfig); + assertNotSame("Expecting a new handle after database closure", handle1, handle3); } EnvironmentFacade getEnvironmentFacade() throws Exception @@ -122,7 +105,7 @@ public class StandardEnvironmentFacadeTest extends QpidTestCase EnvironmentFacade createEnvironmentFacade() { - return new StandardEnvironmentFacade(_storePath.getAbsolutePath(), Collections.<String, String>emptyMap(), null); + return new StandardEnvironmentFacade(_storePath.getAbsolutePath(), Collections.<String, String>emptyMap()); } } diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java index e4f1b62954..b14332ecf6 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java @@ -24,7 +24,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.io.File; -import java.util.EnumSet; import java.util.HashMap; import java.util.Map; import java.util.concurrent.CountDownLatch; @@ -45,7 +44,6 @@ import com.sleepycat.je.Durability; import com.sleepycat.je.Durability.SyncPolicy; import com.sleepycat.je.Environment; import com.sleepycat.je.Transaction; -import com.sleepycat.je.rep.InsufficientReplicasException; import com.sleepycat.je.rep.NodeState; import com.sleepycat.je.rep.ReplicatedEnvironment; import com.sleepycat.je.rep.ReplicatedEnvironment.State; @@ -122,38 +120,21 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase assertNull("Environment should be null after facade close", e); } - public void testOpenDatabases() throws Exception + public void testOpenDatabaseReusesCachedHandle() throws Exception { + DatabaseConfig createIfAbsentDbConfig = DatabaseConfig.DEFAULT.setAllowCreate(true); + EnvironmentFacade ef = createMaster(); - DatabaseConfig dbConfig = new DatabaseConfig(); - dbConfig.setTransactional(true); - dbConfig.setAllowCreate(true); - ef.openDatabases(dbConfig, "test1", "test2"); - Database test1 = ef.getOpenDatabase("test1"); - Database test2 = ef.getOpenDatabase("test2"); + Database handle1 = ef.openDatabase("myDatabase", createIfAbsentDbConfig); + assertNotNull(handle1); - assertEquals("Unexpected name for open database test1", "test1" , test1.getDatabaseName()); - assertEquals("Unexpected name for open database test2", "test2" , test2.getDatabaseName()); - } + Database handle2 = ef.openDatabase("myDatabase", createIfAbsentDbConfig); + assertSame("Database handle should be cached", handle1, handle2); - public void testGetOpenDatabaseForNonExistingDatabase() throws Exception - { - EnvironmentFacade ef = createMaster(); - DatabaseConfig dbConfig = new DatabaseConfig(); - dbConfig.setTransactional(true); - dbConfig.setAllowCreate(true); - ef.openDatabases(dbConfig, "test1"); - Database test1 = ef.getOpenDatabase("test1"); - assertEquals("Unexpected name for open database test1", "test1" , test1.getDatabaseName()); - try - { - ef.getOpenDatabase("test2"); - fail("An exception should be thrown for the non existing database"); - } - catch(IllegalArgumentException e) - { - assertEquals("Unexpected exception message", "Database with name 'test2' has never been requested to be opened", e.getMessage()); - } + ef.closeDatabase("myDatabase"); + + Database handle3 = ef.openDatabase("myDatabase", createIfAbsentDbConfig); + assertNotSame("Expecting a new handle after database closure", handle1, handle3); } public void testGetGroupName() throws Exception @@ -490,59 +471,6 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase assertEquals("Unexpected state " + replicatedEnvironmentFacade.getFacadeState(), ReplicatedEnvironmentFacade.State.CLOSED, replicatedEnvironmentFacade.getFacadeState()); } - public void testEnvironmentRestartOnInsufficientReplicas() throws Exception - { - - ReplicatedEnvironmentFacade master = createMaster(); - - int replica1Port = getNextAvailable(TEST_NODE_PORT + 1); - String replica1NodeName = TEST_NODE_NAME + "_1"; - String replica1NodeHostPort = "localhost:" + replica1Port; - ReplicatedEnvironmentFacade replica1 = createReplica(replica1NodeName, replica1NodeHostPort, new NoopReplicationGroupListener()); - - int replica2Port = getNextAvailable(replica1Port + 1); - String replica2NodeName = TEST_NODE_NAME + "_2"; - String replica2NodeHostPort = "localhost:" + replica2Port; - ReplicatedEnvironmentFacade replica2 = createReplica(replica2NodeName, replica2NodeHostPort, new NoopReplicationGroupListener()); - - String databaseName = "test"; - - DatabaseConfig dbConfig = createDatabase(master, databaseName); - - // close replicas - replica1.close(); - replica2.close(); - - Environment e = master.getEnvironment(); - master.getOpenDatabase(databaseName); - try - { - master.openDatabases(dbConfig, "test2"); - fail("Opening of new database without quorum should fail"); - } - catch(InsufficientReplicasException ex) - { - master.handleDatabaseException(null, ex); - } - - EnumSet<State> states = EnumSet.of(State.MASTER, State.REPLICA); - replica1 = createReplica(replica1NodeName, replica1NodeHostPort, new TestStateChangeListener(states), new NoopReplicationGroupListener()); - replica2 = createReplica(replica2NodeName, replica2NodeHostPort, new TestStateChangeListener(states), new NoopReplicationGroupListener()); - - // Need to poll to await the remote node updating itself - long timeout = System.currentTimeMillis() + 5000; - while(!(State.REPLICA.name().equals(master.getNodeState()) || State.MASTER.name().equals(master.getNodeState()) ) && System.currentTimeMillis() < timeout) - { - Thread.sleep(200); - } - - assertTrue("The node could not rejoin the cluster. State is " + master.getNodeState(), - State.REPLICA.name().equals(master.getNodeState()) || State.MASTER.name().equals(master.getNodeState()) ); - - Environment e2 = master.getEnvironment(); - assertNotSame("Environment has not been restarted", e2, e); - } - public void testEnvironmentAutomaticallyRestartsAndBecomesUnknownOnInsufficientReplicas() throws Exception { final CountDownLatch masterLatch = new CountDownLatch(1); @@ -779,7 +707,7 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase State desiredState, StateChangeListener stateChangeListener, ReplicationGroupListener replicationGroupListener) { ReplicatedEnvironmentConfiguration config = createReplicatedEnvironmentConfiguration(nodeName, nodeHostPort, designatedPrimary); - ReplicatedEnvironmentFacade ref = new ReplicatedEnvironmentFacade(config, null); + ReplicatedEnvironmentFacade ref = new ReplicatedEnvironmentFacade(config); ref.setStateChangeListener(stateChangeListener); ref.setReplicationGroupListener(replicationGroupListener); _nodes.put(nodeName, ref); @@ -791,15 +719,6 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase return addNode(TEST_NODE_NAME, TEST_NODE_HOST_PORT, TEST_DESIGNATED_PRIMARY, desiredState, stateChangeListener, replicationGroupListener); } - private DatabaseConfig createDatabase(ReplicatedEnvironmentFacade environmentFacade, String databaseName) - { - DatabaseConfig dbConfig = new DatabaseConfig(); - dbConfig.setTransactional(true); - dbConfig.setAllowCreate(true); - environmentFacade.openDatabases(dbConfig, databaseName); - return dbConfig; - } - private void waitForCommitter(Committer committer, boolean expected) throws InterruptedException { int counter = 0; |
