summaryrefslogtreecommitdiff
path: root/qpid/java/bdbstore/src/test
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2014-06-06 15:43:49 +0000
committerKeith Wall <kwall@apache.org>2014-06-06 15:43:49 +0000
commit386c80ed77f3d91903c563e0727dbf2a1b09fc2b (patch)
treeda4468c2c4f24a487547b3b719ecab0d6ea5b0c2 /qpid/java/bdbstore/src/test
parent217f1785cf7def05e296990cde21f9cc74d05022 (diff)
downloadqpid-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')
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java2
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/StandardEnvironmentFacadeTest.java43
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java105
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;