package org.apache.jdbm;
import java.util.Map;
import java.util.Set;
public class DBCacheTest extends TestCaseWithTestFile {
// https://github.com/jankotek/JDBM3/issues/11
public void test_Issue_11_soft_cache_record_disappear(){
long MAX = (long) 1e6;
String file = newTestFile();
DB d = DBMaker.openFile(file)
.disableTransactions()
.enableSoftCache()
.make();
Set<Integer> set = d.createHashSet("1");
for(Integer i = 0;i<MAX;i++){
set.add(i);
}
d.close();
d = DBMaker.openFile(file)
.disableTransactions()
.enableSoftCache()
.make();
set = d.getHashSet("1");
for(Integer i = 0;i<MAX;i++){
assertTrue(set.contains(i));
}
}
public void test_issue_xyz(){
org.apache.jdbm.DB db = DBMaker.openFile(newTestFile())
.enableSoftCache()
.make();
Map m = db.createTreeMap("test");
for(int i=0;i<1e5;i++){
m.put("test"+i,"test"+i);
}
db.close();
//
// problem in cache, throws;
// java.lang.IllegalArgumentException: Argument 'recid' is invalid: 0
// at org.apache.jdbm.DBStore.fetch(DBStore.java:356)
// at org.apache.jdbm.DBCache.fetch(DBCache.java:292)
// at org.apache.jdbm.BTreeNode.loadNode(BTreeNode.java:833)
// at org.apache.jdbm.BTreeNode.insert(BTreeNode.java:391)
// at org.apache.jdbm.BTreeNode.insert(BTreeNode.java:392)
// at org.apache.jdbm.BTreeNode.insert(BTreeNode.java:392)
// at org.apache.jdbm.BTree.insert(BTree.java:281)
// at org.apache.jdbm.BTreeMap.put(BTreeMap.java:285)
// at org.apache.jdbm.DBCacheTest.test_some_random_shit(DBCacheTest.java:48)
//
}
}