Search in sources :

Example 6 with INode

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);
}
Also used : INode(jetbrains.exodus.tree.INode) Test(org.junit.Test)

Example 7 with INode

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);
}
Also used : INode(jetbrains.exodus.tree.INode) Test(org.junit.Test)

Example 8 with INode

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();
}
Also used : INode(jetbrains.exodus.tree.INode) Test(org.junit.Test)

Example 9 with INode

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));
    }
}
Also used : INode(jetbrains.exodus.tree.INode)

Example 10 with INode

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);
}
Also used : INode(jetbrains.exodus.tree.INode) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Aggregations

INode (jetbrains.exodus.tree.INode)18 Test (org.junit.Test)17 ArrayList (java.util.ArrayList)6 ByteIterable (jetbrains.exodus.ByteIterable)1