use of jetbrains.exodus.tree.INode in project xodus by JetBrains.
the class BTreeStructureIdTest method testStructureIdSave.
@Test
public void testStructureIdSave() {
BTreeMutable firstTree = new BTreeEmpty(log, createTestSplittingPolicy(), false, 42).getMutableCopy();
BTreeMutable secondTree = new BTreeEmpty(log, createTestSplittingPolicy(), false, 142).getMutableCopy();
for (INode node : createLNs("v", 100)) {
firstTree.put(node);
secondTree.put(node);
}
checkTree(firstTree, 100).run();
checkTree(secondTree, 100).run();
log.beginWrite();
long first = firstTree.save();
long second = secondTree.save();
log.flush();
log.endWrite();
assertContains(42, first);
assertContains(142, second);
assertStructureIdNotEqual(first, second);
}
use of jetbrains.exodus.tree.INode in project xodus by JetBrains.
the class BTreeStructureIdTest method testStructureIdModify.
@Test
public void testStructureIdModify() {
BTreeMutable firstTree = new BTreeEmpty(log, createTestSplittingPolicy(), false, 42).getMutableCopy();
BTreeMutable secondTree = new BTreeEmpty(log, createTestSplittingPolicy(), false, 142).getMutableCopy();
for (INode node : createLNs("v", 100)) {
firstTree.put(node);
secondTree.put(node);
}
checkTree(firstTree, 100).run();
checkTree(secondTree, 100).run();
log.beginWrite();
long first = firstTree.save();
long second = secondTree.save();
log.flush();
log.endWrite();
assertContains(42, first);
assertContains(142, second);
assertStructureIdNotEqual(first, second);
firstTree = new BTree(log, first, false, 42).getMutableCopy();
secondTree = new BTree(log, second, false, 142).getMutableCopy();
for (INode node : createLNs("vvv", 100)) {
firstTree.put(node);
secondTree.put(node);
}
checkTree(firstTree, "vvv", 100).run();
checkTree(secondTree, "vvv", 100).run();
log.beginWrite();
first = firstTree.save();
second = secondTree.save();
log.flush();
log.endWrite();
assertContains(42, first);
assertContains(142, second);
assertStructureIdNotEqual(first, second);
}
use of jetbrains.exodus.tree.INode in project xodus by JetBrains.
the class BTreeTest method testPutOverwriteTreeWithoutDuplicates.
@Test
public void testPutOverwriteTreeWithoutDuplicates() throws IOException {
// add existing key to tree that supports duplicates
tm = new BTreeEmpty(log, createTestSplittingPolicy(), false, 1).getMutableCopy();
for (int i = 0; i < 100; i++) {
getTreeMutable().put(kv(i, "v" + i));
}
checkTree(getTreeMutable(), 100).run();
// put must add 100 new values
for (int i = 0; i < 100; i++) {
final INode ln = kv(i, "vv" + i);
getTreeMutable().put(ln);
}
checkTree(getTreeMutable(), "vv", 100).run();
long rootAddress = saveTree();
checkTree(getTreeMutable(), "vv", 100).run();
reopen();
t = new BTree(log, rootAddress, true, 1);
checkTree(getTreeMutable(), "vv", 100).run();
}
use of jetbrains.exodus.tree.INode in project xodus by JetBrains.
the class BTreeTest method putNoOverwrite.
private void putNoOverwrite(boolean duplicates) {
tm = new BTreeEmpty(log, createTestSplittingPolicy(), duplicates, 1).getMutableCopy();
for (int i = 0; i < 100; i++) {
getTreeMutable().put(kv(i, "v" + i));
}
checkTree(getTreeMutable(), 100).run();
for (int i = 0; i < 100; i++) {
final INode ln = kv(i, "vv" + i);
assertFalse(getTreeMutable().add(ln));
}
}
use of jetbrains.exodus.tree.INode in project xodus by JetBrains.
the class BTreeTest method testPutOverwriteTreeWithDuplicates.
@Test
public void testPutOverwriteTreeWithDuplicates() throws IOException {
// add existing key to tree that supports duplicates
tm = new BTreeEmpty(log, createTestSplittingPolicy(), true, 1).getMutableCopy();
for (int i = 0; i < 100; i++) {
getTreeMutable().put(kv(i, "v" + i));
}
checkTree(getTreeMutable(), 100).run();
// put must add 100 new values
for (int i = 0; i < 100; i++) {
final INode ln = kv(i, "vv" + i);
getTreeMutable().put(ln);
}
// expected nodes
List<INode> l = new ArrayList<>();
for (int i = 0; i < 100; i++) {
l.add(kv(i, "v" + i));
l.add(kv(i, "vv" + i));
}
assertMatchesIterator(tm, l);
long rootAddress = saveTree();
assertMatchesIterator(tm, l);
reopen();
t = new BTree(log, rootAddress, true, 1);
assertMatchesIterator(tm, l);
}
Aggregations