You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ka...@apache.org on 2009/03/17 11:14:04 UTC
svn commit: r755179 [3/3] - in /labs/bananadb/trunk: ./
src/main/java/org/apache/labs/bananadb/entity/
src/main/java/org/apache/labs/bananadb/entity/isolation/
src/main/java/org/apache/labs/bananadb/entity/serialization/
src/main/java/org/apache/labs/b...
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/LockStressTest.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/LockStressTest.java?rev=755179&r1=754666&r2=755179&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/LockStressTest.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/LockStressTest.java Tue Mar 17 10:14:03 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.lock;
+package org.apache.labs.bananadb.store.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -34,7 +34,7 @@
public static void main(String[] args) throws Exception {
if (args.length != 6) {
- System.out.println("\nUsage: java org.apache.labs.bananadb.lock.LockStressTest myID verifierHostOrIP verifierPort lockFactoryClassName lockDirName sleepTime\n" +
+ System.out.println("\nUsage: java org.apache.labs.bananadb.store.lock.LockStressTest myID verifierHostOrIP verifierPort lockFactoryClassName lockDirName sleepTime\n" +
"\n" +
" myID = int from 0 .. 255 (should be unique for test process)\n" +
" verifierHostOrIP = host name or IP address where LockVerifyServer is running\n" +
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/LockVerifyServer.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/LockVerifyServer.java?rev=755179&r1=754666&r2=755179&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/LockVerifyServer.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/LockVerifyServer.java Tue Mar 17 10:14:03 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.lock;
+package org.apache.labs.bananadb.store.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -42,7 +42,7 @@
public static void main(String[] args) throws IOException {
if (args.length != 1) {
- System.out.println("\nUsage: java org.apache.labs.bananadb.lock.LockVerifyServer port\n");
+ System.out.println("\nUsage: java org.apache.labs.bananadb.store.lock.LockVerifyServer port\n");
System.exit(1);
}
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NativeFSLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NativeFSLockFactory.java?rev=755179&r1=754666&r2=755179&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NativeFSLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NativeFSLockFactory.java Tue Mar 17 10:14:03 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.lock;
+package org.apache.labs.bananadb.store.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -148,9 +148,9 @@
public void clearLock(String lockName) throws IOException {
// Note that this isn't strictly required anymore
- // because the existence of these files does not mean
+ // because the existence of these file does not mean
// they are locked, but, still do this in case people
- // really want to see the files go away:
+ // really want to see the file go away:
if (lockDir.exists()) {
if (lockPrefix != null) {
lockName = lockPrefix + "-n-" + lockName;
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NoLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NoLockFactory.java?rev=755179&r1=754666&r2=755179&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NoLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NoLockFactory.java Tue Mar 17 10:14:03 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.lock;
+package org.apache.labs.bananadb.store.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NoSuchDirectoryException.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NoSuchDirectoryException.java?rev=755179&r1=754666&r2=755179&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NoSuchDirectoryException.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/NoSuchDirectoryException.java Tue Mar 17 10:14:03 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.lock;
+package org.apache.labs.bananadb.store.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/SimpleFSLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/SimpleFSLockFactory.java?rev=755179&r1=754666&r2=755179&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/SimpleFSLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/SimpleFSLockFactory.java Tue Mar 17 10:14:03 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.lock;
+package org.apache.labs.bananadb.store.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/SingleInstanceLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/SingleInstanceLockFactory.java?rev=755179&r1=754666&r2=755179&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/SingleInstanceLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/SingleInstanceLockFactory.java Tue Mar 17 10:14:03 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.lock;
+package org.apache.labs.bananadb.store.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/VerifyingLockFactory.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/VerifyingLockFactory.java?rev=755179&r1=754666&r2=755179&view=diff
==============================================================================
--- labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/VerifyingLockFactory.java (original)
+++ labs/bananadb/trunk/src/main/java/org/apache/labs/bananadb/store/lock/VerifyingLockFactory.java Tue Mar 17 10:14:03 2009
@@ -1,4 +1,4 @@
-package org.apache.labs.bananadb.lock;
+package org.apache.labs.bananadb.store.lock;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
Modified: labs/bananadb/trunk/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/site/apt/index.apt?rev=755179&r1=755178&r2=755179&view=diff
==============================================================================
--- labs/bananadb/trunk/src/site/apt/index.apt (original)
+++ labs/bananadb/trunk/src/site/apt/index.apt Tue Mar 17 10:14:03 2009
@@ -1,42 +1,57 @@
-----
- Hashtable persistent on filesystem.
+ embedded key/value pair database for java
BananaDB
- BananaDB is a persistent Hashtable for Java that resides on the filesystem.
+ BananaDB is a small (100k) embedded key/value pair database for Java
+ featuring an API similar to working with any Map<K, V>
+
+* Main features
-* Features
+ * Thread safe and write locking over multiple JVMs
- * Thread safe, even when read/write accessed from multiple JVMs
+ * Atomic access
- * Optionally transactional with multiple isolation level strategies
+ * Transactional access with multiple isolation level strategies
- * Relative speedy, depending on persistencey hardware
+ * Annotational API
- * Normally ~3ms to put and ~0.1ms to get() when file cache is available
+ * Pluggable serialization strategies (java.io.Serialization as default)
- * Depends on IO seek, i.e. SSD can make even a huge DB fair to use
-* Features planned for the future include
+* Upcoming features
- * Annotational API
+ * Secondary indices
+
+ * Incrementing sequences for key postings
- * Automatic serialization of key and value classes
+ * Generic serialization
- * Secondary indices
- * Top level API to handle multiple hashtable instances
- * Transactions spanning multiple hashtables
+* Speed and size limitations
+
+ * Relies heavy on media I/O seek
+
+ * Normally ~3ms to put and ~0.1ms to get() when file cache is available
+
+ * Relies on IO seek, i.e. SSD can make even a huge DB fair to use
+
+ * No speed penalty for deleting or updating key/value postings
+
+ * No limit on number of key/value postings in database.
+
+ * Up to 180 petabytes of value postings data
+
+ * Up to 140 petabytes of key postings dat
- * Et c
* Releases
- There are no official releases! You'll need to check it out from the Apache SVN, compile and install it by your self.
+ There is no official release! You'll have to check it out from SVN, compile and install:
+-------------------------------+
@@ -51,20 +66,73 @@
+-------------------------------+
-Example use
+API examples
+-------------------------------+
-Hashtable<Integer, String> hashtable = new Hashtable<Integer, String>(
- new ConfigurationImpl<Integer, String>(new File("./bananadb"), new IntegerHandler(), new StringValueHandler()));
+{
+ EntityStore store = new EntityStore(new File("./bananadb"));
+
+ PrimaryIndex<Long, User> users = store.getPrimaryIndex(Long.class, User.class);
+ PrimaryIndex<Long, Message> messages = store.getPrimaryIndex(Long.class, Message.class);
+
+ store.getTxn().begin();
+
+ User user = new User();
+ user.setPK(0l);
+ user.setEmailAdress("foo@bar.org");
+ user.setPassword("secret");
+
+ users.put(user);
+ assert users.containsKey(0l);
+
+ Message message = new Message();
+ message.setPK(0l);
+ message.setFromUserFK(0l);
+ message.setToUserFK(1l);
+ message.setSubject("Hello, world.");
+
+ messages.put(message);
+ store.getTxn().commit();
+
+ store.getTxn().begin();
+ assert store.getMessages(0l).getToUserFK() == 1l;
+ store.getTxn().abort();
+
+}
+
+@Entity
+public static class User implements Serializable {
+
+private static final long serialVersionUID = 1l;
+
+ @PrimaryKey
+ private Long PK;
+
+ private String emailAdress;
+ private String password;
+
+ public Long getPK() {
+ return PK;
+
+ ...
+}
+
+@Entity
+public static class Message implements Serializable {
+
+ private static final long serialVersionUID = 1l;
+
+ @PrimaryKey
+ private Long PK;
+
+ private Long fromUserFK;
+ private Long toUserFK;
+ private String subject;
+ private String text;
-hashtable.getTxn().begin();
-hashtable.put(0, "Hello, world");
-hashtable.getTxn().commit();
-
-hashtable.getTxn().begin();
-System.out.println(hashtable.getTxn().get(0));
-hashtable.getTxn().abort();
+ ...
+}
+-------------------------------+
Added: labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/entity/TestEntityStore.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/entity/TestEntityStore.java?rev=755179&view=auto
==============================================================================
--- labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/entity/TestEntityStore.java (added)
+++ labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/entity/TestEntityStore.java Tue Mar 17 10:14:03 2009
@@ -0,0 +1,179 @@
+package org.apache.labs.bananadb.entity;
+
+/*
+ * 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.
+ */
+
+
+import org.apache.labs.bananadb.store.StoreTest;
+import org.junit.Test;
+
+import java.io.Serializable;
+
+/**
+ * @author kalle
+ * @since 2009-mar-17 07:13:35
+ */
+public class TestEntityStore extends StoreTest {
+
+ @Test
+ public void testSimple() throws Exception {
+
+ EntityStore store = new EntityStore(getDirectory("entityStore/testSimple"));
+
+ PrimaryIndex<Long, User> users = store.getPrimaryIndex(Long.class, User.class);
+ PrimaryIndex<Long, Message> messages = store.getPrimaryIndex(Long.class, Message.class);
+
+ store.getTxn().begin();
+
+ User user = new User();
+ user.setPK(0l);
+ user.setEmailAdress("foo@bar.org");
+ user.setPassword("secret");
+
+ assertNull(users.put(user));
+
+ user.setPassword("new secret");
+
+ User oldUser = users.put(user);
+
+ assertEquals(new Long(0l), oldUser.getPK());
+ assertEquals("foo@bar.org", oldUser.getEmailAdress());
+ assertEquals("secret", oldUser.getPassword());
+
+ store.getTxn().commit();
+
+ store.getTxn().begin();
+ assertEquals("foo@bar.org", users.get(0l).getEmailAdress());
+ assertEquals("new secret", users.get(0l).getPassword());
+ store.getTxn().abort();
+
+ store.getTxn().begin();
+
+ Message message = new Message();
+ message.setPK(0l);
+ message.setFromUserFK(0l);
+ message.setToUserFK(1l);
+ message.setSubject("A second index containg an entity with the same PK as the first index.");
+ message.setText("After commiting this there should be no problems still reading from both indices.");
+ assertNull(messages.put(message));
+
+ assertEquals("new secret", users.get(0l).getPassword());
+ assertEquals(new Long(1l), messages.get(0l).getToUserFK());
+
+ store.getTxn().commit();
+
+ store.getTxn().begin();
+ assertEquals("new secret", users.get(0l).getPassword());
+ assertEquals(new Long(1l), messages.get(0l).getToUserFK());
+ store.getTxn().abort();
+
+ store.close();
+ }
+
+ @Entity
+ public static class User implements Serializable {
+
+ private static final long serialVersionUID = 1l;
+
+ @PrimaryKey
+ private Long PK;
+
+ private String emailAdress;
+ private String password;
+
+ public Long getPK() {
+ return PK;
+ }
+
+ public void setPK(Long PK) {
+ this.PK = PK;
+ }
+
+ public String getEmailAdress() {
+ return emailAdress;
+ }
+
+ public void setEmailAdress(String emailAdress) {
+ this.emailAdress = emailAdress;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+ }
+
+ @Entity
+ public static class Message implements Serializable {
+
+ private static final long serialVersionUID = 1l;
+
+ @PrimaryKey
+ private Long PK;
+
+ private Long fromUserFK;
+ private Long toUserFK;
+ private String subject;
+ private String text;
+
+
+ public Long getPK() {
+ return PK;
+ }
+
+ public void setPK(Long PK) {
+ this.PK = PK;
+ }
+
+ public Long getFromUserFK() {
+ return fromUserFK;
+ }
+
+ public void setFromUserFK(Long fromUserFK) {
+ this.fromUserFK = fromUserFK;
+ }
+
+ public Long getToUserFK() {
+ return toUserFK;
+ }
+
+ public void setToUserFK(Long toUserFK) {
+ this.toUserFK = toUserFK;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+ }
+
+
+}
Added: labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/store/StoreTest.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/store/StoreTest.java?rev=755179&view=auto
==============================================================================
--- labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/store/StoreTest.java (added)
+++ labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/store/StoreTest.java Tue Mar 17 10:14:03 2009
@@ -0,0 +1,53 @@
+package org.apache.labs.bananadb.store;
+
+/*
+ * 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.
+ */
+
+
+import junit.framework.TestCase;
+
+import java.io.File;
+
+import org.apache.commons.io.FileUtils;
+
+/**
+ * @author kalle
+ * @since 2009-mar-17 00:59:03
+ */
+public abstract class StoreTest extends TestCase {
+
+ private File path;
+
+ protected StoreTest() {
+ path = new File("target/test-data/stores");
+ if (!path.exists() && !path.mkdirs()) {
+ throw new RuntimeException("Could not create path " + path);
+ }
+ }
+
+ protected File getDirectory(String name) {
+ File path = new File(this.path, name);
+ if (path.exists()) {
+ FileUtils.deleteQuietly(path);
+ }
+ if (!path.mkdirs()) {
+ throw new RuntimeException("Could not create path " + path);
+ }
+ return path;
+ }
+
+}
Added: labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/store/TestStore.java
URL: http://svn.apache.org/viewvc/labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/store/TestStore.java?rev=755179&view=auto
==============================================================================
--- labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/store/TestStore.java (added)
+++ labs/bananadb/trunk/src/test/java/org/apache/labs/bananadb/store/TestStore.java Tue Mar 17 10:14:03 2009
@@ -0,0 +1,128 @@
+package org.apache.labs.bananadb.store;
+
+/*
+ * 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.
+ */
+
+
+import org.junit.Test;
+
+import java.io.IOException;
+import java.util.Arrays;
+
+/**
+ * @author kalle
+ * @since 2009-mar-17 00:48:33
+ */
+public class TestStore extends StoreTest {
+
+ @Test
+ public void testSimple() throws IOException {
+
+ Configuration configuration = new Configuration(getDirectory("testSimple"));
+ Store store = new Store(configuration);
+ store.open();
+
+ Accessor accessor;
+
+ // set read only
+ try {
+ store.createAccessor(true);
+ fail("Accessor is set read only! Store should be be created");
+ } catch (IOException ioe) {
+ // all good
+ }
+
+ // create the store
+ accessor = store.createAccessor(false);
+ accessor.close();
+
+ byte[] key;
+ long hash;
+ byte[] value;
+
+
+ key = new byte[10];
+ Arrays.fill(key, (byte) 1);
+ hash = 10l;
+ value = new byte[100];
+ Arrays.fill(value, (byte) 2);
+
+
+ // open read only again
+ accessor = store.createAccessor(true);
+
+ assertFalse(store.containsKey(accessor, key, hash));
+ try {
+ assertNull(store.put(accessor, key, hash, value));
+ fail("Accessor is set read only and should not be able to add entiteis!");
+ } catch (IOException ioe) {
+ // all good
+ accessor.close();
+ }
+
+ // open read/write
+ accessor = store.createAccessor(false);
+
+ // simple general put/get/containsKey/remove tests
+
+ assertNull(store.put(accessor, key, hash, value));
+ assertTrue(store.containsKey(accessor, key, hash));
+ assertTrue(Arrays.equals(value, store.get(accessor, key, hash)));
+ // add again with alternative values
+ byte[] value2 = new byte[100];
+ Arrays.fill(value2, (byte)3);
+ assertTrue(Arrays.equals(value, store.put(accessor, key, hash, value2)));
+ assertTrue("It is probable that the byte array in ValuePartition.Posting (value2) was attempted to be cached and thus overwritten",
+ Arrays.equals(value2, store.remove(accessor, key, hash)));
+ assertFalse(store.containsKey(accessor, key, hash));
+
+ assertNull(store.put(accessor, key, hash, value2));
+ assertTrue(store.containsKey(accessor, key, hash));
+
+ // alternative values, new hash
+
+ key = new byte[10];
+ Arrays.fill(key, (byte) 4);
+ hash = 11l;
+ value = new byte[100];
+ Arrays.fill(value, (byte) 5);
+
+ assertFalse(store.containsKey(accessor, key, hash));
+ assertNull(store.put(accessor, key, hash, value));
+ assertTrue(store.containsKey(accessor, key, hash));
+ assertTrue(Arrays.equals(value, store.get(accessor, key, hash)));
+
+
+ key = new byte[10];
+ Arrays.fill(key, (byte) 5);
+ hash = 12l;
+ value = new byte[100];
+ Arrays.fill(value, (byte) 6);
+
+ assertFalse(store.containsKey(accessor, key, hash));
+ assertNull(store.put(accessor, key, hash, value));
+ assertTrue(store.containsKey(accessor, key, hash));
+ assertTrue(Arrays.equals(value, store.get(accessor, key, hash)));
+ assertTrue(Arrays.equals(value, store.remove(accessor, key, hash)));
+ assertFalse(store.containsKey(accessor, key, hash));
+
+
+ store.close();
+
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org