Search in sources :

Example 1 with Transactional

use of org.apache.jena.dboe.transaction.Transactional in project jena by apache.

the class TestBPlusTreeTxn method bptree_txn_05.

// Two transactions, second an insert no-op.
// Relies on all blocks not being full and so not being
// split on the way down due to the early split algorithm.
@Test
public void bptree_txn_05() {
    BPlusTree bpt = createBPTree();
    int outerRootIdx1 = bpt.getRootId();
    Transactional thing = transactional(bpt);
    Txn.executeWrite(thing, () -> {
        IndexTestLib.add(bpt, 1, 2, 3);
    });
    int outerRootIdx2 = bpt.getRootId();
    assertNotEquals("After txn(1)", outerRootIdx1, outerRootIdx2);
    Txn.executeWrite(thing, () -> {
        IndexTestLib.add(bpt, 1, 2);
    });
    int outerRootIdx3 = bpt.getRootId();
    assertNotEquals("After txn (2)", outerRootIdx1, outerRootIdx3);
    assertEquals("After txn (3)", outerRootIdx2, outerRootIdx3);
}
Also used : Transactional(org.apache.jena.dboe.transaction.Transactional) Test(org.junit.Test)

Example 2 with Transactional

use of org.apache.jena.dboe.transaction.Transactional in project jena by apache.

the class TestBPlusTreeTxn method bptree_txn_11.

@Test
public void bptree_txn_11() {
    BPlusTree bpt1 = createBPTree();
    BPlusTree bpt2 = createBPTree();
    assertNotEquals(bpt1.getComponentId(), bpt2.getComponentId());
    Transactional thing = transactional(bpt1, bpt2);
    // Commit 1
    Txn.executeWrite(thing, () -> {
        IndexTestLib.add(bpt1, 2, 1);
        IndexTestLib.add(bpt2, 3, 4, 5);
    });
    Txn.executeRead(thing, () -> {
        IndexTestLib.testIndexContents(bpt2, 3, 4, 5);
        IndexTestLib.testIndexContents(bpt1, 1, 2);
    });
    // Abort
    thing.begin(ReadWrite.WRITE);
    IndexTestLib.add(bpt1, 9, 10);
    IndexTestLib.delete(bpt2, 3, 11);
    thing.abort();
    Txn.executeRead(thing, () -> {
        IndexTestLib.testIndexContents(bpt2, 3, 4, 5);
        IndexTestLib.testIndexContents(bpt1, 1, 2);
    });
    // Commit 2
    Txn.executeWrite(thing, () -> {
        IndexTestLib.delete(bpt1, 1, 3);
        IndexTestLib.add(bpt1, 4);
        IndexTestLib.add(bpt2, 11, 12, 13);
    });
    Txn.executeRead(thing, () -> {
        IndexTestLib.testIndexContents(bpt2, 3, 4, 5, 11, 12, 13);
        IndexTestLib.testIndexContents(bpt1, 2, 4);
    });
}
Also used : Transactional(org.apache.jena.dboe.transaction.Transactional) Test(org.junit.Test)

Example 3 with Transactional

use of org.apache.jena.dboe.transaction.Transactional in project jena by apache.

the class TestBPlusTreeTxn method bptree_txn_02.

// Commit - only the first changes the root.
@Test
public void bptree_txn_02() {
    BPlusTree bpt = createBPTree();
    int outerRootIdx1 = bpt.getRootId();
    Transactional thing = transactional(bpt);
    Txn.executeWrite(thing, () -> {
        int rootIdx1 = bpt.getRootId();
        assertEquals("Inside txn (1)", outerRootIdx1, rootIdx1);
        IndexTestLib.add(bpt, 1);
        int rootIdx2 = bpt.getRootId();
        assertNotEquals("Inside txn (2)", rootIdx1, rootIdx2);
        IndexTestLib.add(bpt, 2, 3, 4);
        int rootIdx3 = bpt.getRootId();
        assertEquals("Inside txn (3)", rootIdx2, rootIdx3);
    });
    int outerRootIdx2 = bpt.getRootId();
    assertNotEquals("After txn", outerRootIdx1, outerRootIdx2);
}
Also used : Transactional(org.apache.jena.dboe.transaction.Transactional) Test(org.junit.Test)

Example 4 with Transactional

use of org.apache.jena.dboe.transaction.Transactional in project jena by apache.

the class TestBPlusTreeTxn method bptree_txn_06.

// Two transactions, second a delete no-op.
// Relies on all blocks not being min0size so not rebalanced.
@Test
public void bptree_txn_06() {
    BPlusTree bpt = createBPTree();
    int outerRootIdx1 = bpt.getRootId();
    Transactional thing = transactional(bpt);
    Txn.executeWrite(thing, () -> {
        IndexTestLib.add(bpt, 1, 2, 3);
    });
    int outerRootIdx2 = bpt.getRootId();
    assertNotEquals("After txn(1)", outerRootIdx1, outerRootIdx2);
    Txn.executeWrite(thing, () -> {
        IndexTestLib.delete(bpt, 5, 6);
    });
    int outerRootIdx3 = bpt.getRootId();
    assertNotEquals("After txn (2)", outerRootIdx1, outerRootIdx3);
    assertEquals("After txn (3)", outerRootIdx2, outerRootIdx3);
}
Also used : Transactional(org.apache.jena.dboe.transaction.Transactional) Test(org.junit.Test)

Example 5 with Transactional

use of org.apache.jena.dboe.transaction.Transactional in project jena by apache.

the class TestTransBlobPersistent method transBlobFile_1.

@Test
public void transBlobFile_1() throws Exception {
    Journal journal = Journal.create(Location.create(DIR));
    BufferChannel chan = BufferChannelFile.create(DATA);
    ComponentId cid = ComponentId.allocLocal();
    TransBlob transBlob = new TransBlob(cid, chan);
    Transactional transactional = TransactionalFactory.createTransactional(journal, transBlob);
    String str = "Hello";
    TestTransBlob.write(transactional, transBlob, str);
    chan.close();
    journal.close();
    String s = FileUtils.readWholeFileAsUTF8(DATA);
    assertEquals(str, s);
}
Also used : BufferChannel(org.apache.jena.dboe.base.file.BufferChannel) Journal(org.apache.jena.dboe.transaction.txn.journal.Journal) ComponentId(org.apache.jena.dboe.transaction.txn.ComponentId) Transactional(org.apache.jena.dboe.transaction.Transactional)

Aggregations

Transactional (org.apache.jena.dboe.transaction.Transactional)10 Test (org.junit.Test)8 BufferChannel (org.apache.jena.dboe.base.file.BufferChannel)2 ComponentId (org.apache.jena.dboe.transaction.txn.ComponentId)2 Journal (org.apache.jena.dboe.transaction.txn.journal.Journal)2