You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2017/10/11 21:04:52 UTC
svn commit: r1811891 -
/directory/mavibot/branches/single-value/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerTest.java
Author: elecharny
Date: Wed Oct 11 21:04:52 2017
New Revision: 1811891
URL: http://svn.apache.org/viewvc?rev=1811891&view=rev
Log:
Fixed compilation errors, removed useless tests
Modified:
directory/mavibot/branches/single-value/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerTest.java
Modified: directory/mavibot/branches/single-value/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerTest.java
URL: http://svn.apache.org/viewvc/directory/mavibot/branches/single-value/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerTest.java?rev=1811891&r1=1811890&r2=1811891&view=diff
==============================================================================
--- directory/mavibot/branches/single-value/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerTest.java (original)
+++ directory/mavibot/branches/single-value/mavibot/src/test/java/org/apache/directory/mavibot/btree/RecordManagerTest.java Wed Oct 11 21:04:52 2017
@@ -24,7 +24,6 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import java.io.File;
import java.io.IOException;
@@ -36,6 +35,7 @@ import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.apache.directory.mavibot.btree.exception.BTreeAlreadyManagedException;
+import org.apache.directory.mavibot.btree.exception.CursorException;
import org.apache.directory.mavibot.btree.exception.KeyNotFoundException;
import org.apache.directory.mavibot.btree.serializer.LongSerializer;
import org.apache.directory.mavibot.btree.serializer.StringSerializer;
@@ -212,49 +212,58 @@ public class RecordManagerTest
// Now, add some elements in the BTree
for ( long i = 1L; i < 32L; i++ )
{
- btree.insert( i, "V" + i );
+ try ( WriteTransaction writeTransaction = recordManager.beginWriteTransaction() )
+ {
+ btree.insert( writeTransaction, i, "V" + i );
+ }
}
for ( long i = 1L; i < 32L; i++ )
{
- if ( !btree.hasKey( i ) )
+ try ( Transaction transaction = recordManager.beginReadTransaction() )
{
- System.out.println( "Not found !!! " + i );
+ if ( !btree.hasKey( transaction, i ) )
+ {
+ System.out.println( "Not found !!! " + i );
+ }
+ assertTrue( btree.hasKey( transaction, i ) );
+ assertEquals( "V" + i, btree.get( transaction, i ) );
}
- assertTrue( btree.hasKey( i ) );
- assertEquals( "V" + i, btree.get( i ) );
}
// Now, try to reload the file back
openRecordManagerAndBtree();
- assertEquals( 1, recordManager.getNbManagedTrees() );
+ assertEquals( 3, recordManager.getNbManagedTrees( recordManager.getCurrentRecordManagerHeader() ) );
Set<String> managedBTrees = recordManager.getManagedTrees();
assertEquals( 1, managedBTrees.size() );
assertTrue( managedBTrees.contains( "test" ) );
- BTree<Long, String> btree1 = recordManager.getBtree( "test" );
+ try ( Transaction transaction = recordManager.beginReadTransaction() )
+ {
+ BTree<Long, String> btree1 = recordManager.getBtree( transaction, "test" );
- assertNotNull( btree1 );
- assertEquals( btree.getKeyComparator().getClass().getName(), btree1.getKeyComparator().getClass().getName() );
- assertEquals( btree.getKeySerializer().getClass().getName(), btree1.getKeySerializer().getClass().getName() );
- assertEquals( btree.getName(), btree1.getName() );
- assertEquals( btree.getNbElems(), btree1.getNbElems() );
- assertEquals( btree.getPageSize(), btree1.getPageSize() );
- assertEquals( btree.getRevision(), btree1.getRevision() );
- assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
+ assertNotNull( btree1 );
+ assertEquals( btree.getKeyComparator().getClass().getName(), btree1.getKeyComparator().getClass().getName() );
+ assertEquals( btree.getKeySerializer().getClass().getName(), btree1.getKeySerializer().getClass().getName() );
+ assertEquals( btree.getName(), btree1.getName() );
+ assertEquals( btree.getNbElems(), btree1.getNbElems() );
+ assertEquals( btree.getBtreeInfo().getPageNbElem(), btree1.getBtreeInfo().getPageNbElem() );
+ assertEquals( btree.getBtreeHeader().getRevision(), btree1.getBtreeHeader().getRevision() );
+ assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
- // Check the stored element
- for ( long i = 1L; i < 32L; i++ )
- {
- if ( !btree1.hasKey( i ) )
+ // Check the stored element
+ for ( long i = 1L; i < 32L; i++ )
{
- System.out.println( "Not found " + i );
+ if ( !btree1.hasKey( transaction, i ) )
+ {
+ System.out.println( "Not found " + i );
+ }
+ assertTrue( btree1.hasKey( transaction, i ) );
+ assertEquals( "V" + i, btree1.get( transaction, i ) );
}
- assertTrue( btree1.hasKey( i ) );
- assertEquals( "V" + i, btree1.get( i ) );
}
}
@@ -282,7 +291,11 @@ public class RecordManagerTest
for ( Long i = 0L; i < nbElems; i++ )
{
String value = "V" + i;
- btree.insert( i, value );
+
+ try ( WriteTransaction writeTransaction = recordManager.beginWriteTransaction() )
+ {
+ btree.insert( writeTransaction, i, value );
+ }
/*
if ( !recordManager1.check() )
@@ -306,83 +319,89 @@ public class RecordManagerTest
System.out.println( "Size after insertion of 100 000 elements : " + fileSize );
System.out.println( "Time taken to write 100 000 elements : " + ( t1 - t0 ) );
System.out.println( " Nb elem/s : " + ( ( nbElems * 1000 ) / ( t1 - t0 ) ) );
- System.out.println( "Nb created page " + recordManager.nbCreatedPages.get() );
- System.out.println( "Nb allocated page " + recordManager.nbReusedPages.get() );
- System.out.println( "Nb page we have freed " + recordManager.nbFreedPages.get() );
+ //System.out.println( "Nb created page " + recordManager.nbCreatedPages.get() );
+ //System.out.println( "Nb allocated page " + recordManager.nbReusedPages.get() );
+ //System.out.println( "Nb page we have freed " + recordManager.nbFreedPages.get() );
System.out.println( recordManager );
// Now, try to reload the file back
openRecordManagerAndBtree();
- assertEquals( 1, recordManager.getNbManagedTrees() );
+ assertEquals( 1, recordManager.getNbManagedTrees( recordManager.getCurrentRecordManagerHeader() ) );
Set<String> managedBTrees = recordManager.getManagedTrees();
assertEquals( 1, managedBTrees.size() );
assertTrue( managedBTrees.contains( "test" ) );
- BTree<Long, String> btree1 = recordManager.getBtree( "test" );
-
- assertNotNull( btree1 );
- assertEquals( btree.getKeyComparator().getClass().getName(), btree1.getKeyComparator().getClass().getName() );
- assertEquals( btree.getKeySerializer().getClass().getName(), btree1.getKeySerializer().getClass().getName() );
- assertEquals( btree.getName(), btree1.getName() );
- assertEquals( btree.getNbElems(), btree1.getNbElems() );
- assertEquals( btree.getPageSize(), btree1.getPageSize() );
- assertEquals( btree.getRevision(), btree1.getRevision() );
- assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
-
- // Check the stored element
- long t2 = System.currentTimeMillis();
- for ( long i = 0L; i < nbElems; i++ )
- {
- //assertTrue( btree1.exist( i ) );
- assertEquals( "V" + i, btree1.get( i ) );
- }
- long t3 = System.currentTimeMillis();
- System.out.println( "Time taken to verify 100 000 elements : " + ( t3 - t2 ) );
-
- // Check the stored element a second time
- long t4 = System.currentTimeMillis();
- for ( long i = 0L; i < nbElems; i++ )
+ try ( Transaction transaction = recordManager.beginReadTransaction() )
{
- //assertTrue( btree1.exist( i ) );
- assertEquals( "V" + i, btree1.get( i ) );
+ BTree<Long, String> btree1 = recordManager.getBtree( transaction, "test" );
+
+ assertNotNull( btree1 );
+ assertEquals( btree.getKeyComparator().getClass().getName(), btree1.getKeyComparator().getClass().getName() );
+ assertEquals( btree.getKeySerializer().getClass().getName(), btree1.getKeySerializer().getClass().getName() );
+ assertEquals( btree.getName(), btree1.getName() );
+ assertEquals( btree.getNbElems(), btree1.getNbElems() );
+ assertEquals( btree.getBtreeInfo().getPageNbElem(), btree1.getBtreeInfo().getPageNbElem() );
+ assertEquals( btree.getBtreeHeader().getRevision(), btree1.getBtreeHeader().getRevision() );
+ assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
+
+ // Check the stored element
+ long t2 = System.currentTimeMillis();
+ for ( long i = 0L; i < nbElems; i++ )
+ {
+ //assertTrue( btree1.exist( i ) );
+ assertEquals( "V" + i, btree1.get( transaction, i ) );
+ }
+ long t3 = System.currentTimeMillis();
+ System.out.println( "Time taken to verify 100 000 elements : " + ( t3 - t2 ) );
+
+ // Check the stored element a second time
+ long t4 = System.currentTimeMillis();
+ for ( long i = 0L; i < nbElems; i++ )
+ {
+ //assertTrue( btree1.exist( i ) );
+ assertEquals( "V" + i, btree1.get( transaction, i ) );
+ }
+ long t5 = System.currentTimeMillis();
+ System.out.println( "Time taken to verify 100 000 elements : " + ( t5 - t4 ) );
}
- long t5 = System.currentTimeMillis();
- System.out.println( "Time taken to verify 100 000 elements : " + ( t5 - t4 ) );
}
private void checkBTreeRevisionBrowse( BTree<Long, String> btree, long revision, long... values )
throws IOException,
- KeyNotFoundException
+ KeyNotFoundException, CursorException
{
- TupleCursor<Long, String> cursor = btree.browse( revision );
- List<Long> expected = new ArrayList<Long>( values.length );
- Set<Long> found = new HashSet<Long>( values.length );
-
- for ( long value : values )
- {
- expected.add( value );
- }
-
- int nb = 0;
-
- while ( cursor.hasNext() )
+ try ( Transaction transaction = recordManager.beginReadTransaction() )
{
- Tuple<Long, String> res = cursor.next();
-
- long key = res.getKey();
- assertEquals( expected.get( nb ), ( Long ) key );
- assertFalse( found.contains( key ) );
- found.add( key );
- assertEquals( "V" + key, res.getValue() );
- nb++;
+ TupleCursor<Long, String> cursor = btree.browse( transaction );
+ List<Long> expected = new ArrayList<Long>( values.length );
+ Set<Long> found = new HashSet<Long>( values.length );
+
+ for ( long value : values )
+ {
+ expected.add( value );
+ }
+
+ int nb = 0;
+
+ while ( cursor.hasNext() )
+ {
+ Tuple<Long, String> res = cursor.next();
+
+ long key = res.getKey();
+ assertEquals( expected.get( nb ), ( Long ) key );
+ assertFalse( found.contains( key ) );
+ found.add( key );
+ assertEquals( "V" + key, res.getValue() );
+ nb++;
+ }
+
+ assertEquals( values.length, nb );
+ cursor.close();
}
-
- assertEquals( values.length, nb );
- cursor.close();
}
@@ -390,478 +409,48 @@ public class RecordManagerTest
throws IOException,
KeyNotFoundException
{
- TupleCursor<Long, String> cursor = btree.browseFrom( revision, from );
- List<Long> expected = new ArrayList<Long>( values.length );
- Set<Long> found = new HashSet<Long>( values.length );
-
- for ( long value : values )
- {
- expected.add( value );
- }
-
- int nb = 0;
-
- while ( cursor.hasNext() )
+ try ( Transaction transaction = recordManager.beginReadTransaction() )
{
- Tuple<Long, String> res = cursor.next();
-
- long key = res.getKey();
- assertEquals( expected.get( nb ), ( Long ) key );
- assertFalse( found.contains( key ) );
- found.add( key );
- assertEquals( "V" + key, res.getValue() );
- nb++;
+ TupleCursor<Long, String> cursor = btree.browseFrom( transaction, from );
+ List<Long> expected = new ArrayList<Long>( values.length );
+ Set<Long> found = new HashSet<Long>( values.length );
+
+ for ( long value : values )
+ {
+ expected.add( value );
+ }
+
+ int nb = 0;
+
+ while ( cursor.hasNext() )
+ {
+ Tuple<Long, String> res = cursor.next();
+
+ long key = res.getKey();
+ assertEquals( expected.get( nb ), ( Long ) key );
+ assertFalse( found.contains( key ) );
+ found.add( key );
+ assertEquals( "V" + key, res.getValue() );
+ nb++;
+ }
+
+ assertEquals( values.length, nb );
+ cursor.close();
}
-
- assertEquals( values.length, nb );
- cursor.close();
-
}
- /**
- * Test the creation of a RecordManager with a BTree containing data, where we keep the revisions,
- * and browse the BTree.
- */
@Test
- public void testRecordManagerBrowseWithKeepRevisions() throws IOException, BTreeAlreadyManagedException,
- KeyNotFoundException
- {
- recordManager.setKeepRevisions( true );
-
- // Now, add some elements in the BTree
- btree.insert( 3L, "V3" );
- long rev1 = btree.getRevision();
-
- btree.insert( 1L, "V1" );
- long rev2 = btree.getRevision();
-
- btree.insert( 5L, "V5" );
- long rev3 = btree.getRevision();
-
- // Check that we can browse each revision
- // revision 1
- checkBTreeRevisionBrowse( btree, rev1, 3L );
-
- // Revision 2
- checkBTreeRevisionBrowse( btree, rev2, 1L, 3L );
-
- // Revision 3
- checkBTreeRevisionBrowse( btree, rev3, 1L, 3L, 5L );
-
- // Now, try to reload the file back
- openRecordManagerAndBtree();
-
- assertEquals( 1, recordManager.getNbManagedTrees() );
-
- Set<String> managedBTrees = recordManager.getManagedTrees();
-
- assertEquals( 1, managedBTrees.size() );
- assertTrue( managedBTrees.contains( "test" ) );
-
- BTree<Long, String> btree1 = recordManager.getBtree( "test" );
-
- assertNotNull( btree1 );
- assertEquals( btree.getKeyComparator().getClass().getName(), btree1.getKeyComparator().getClass().getName() );
- assertEquals( btree.getKeySerializer().getClass().getName(), btree1.getKeySerializer().getClass().getName() );
- assertEquals( btree.getName(), btree1.getName() );
- assertEquals( btree.getNbElems(), btree1.getNbElems() );
- assertEquals( btree.getPageSize(), btree1.getPageSize() );
- assertEquals( btree.getRevision(), btree1.getRevision() );
- assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
-
- // Check the stored element
- assertTrue( btree1.hasKey( 1L ) );
- assertTrue( btree1.hasKey( 3L ) );
- assertTrue( btree1.hasKey( 5L ) );
- assertEquals( "V1", btree1.get( 1L ) );
- assertEquals( "V3", btree1.get( 3L ) );
- assertEquals( "V5", btree1.get( 5L ) );
-
- // Check that we can read the revision again
- // revision 1
- checkBTreeRevisionBrowse( btree, rev1 );
-
- // Revision 2
- checkBTreeRevisionBrowse( btree, rev2 );
-
- // Revision 3
- checkBTreeRevisionBrowse( btree, rev3, 1L, 3L, 5L );
- }
-
-
- /**
- * Test the creation of a RecordManager with a BTree containing data, where we keep the revision, and
- * we browse from a key
- */
- @Test
- public void testRecordManagerBrowseFromWithRevision() throws IOException, BTreeAlreadyManagedException,
- KeyNotFoundException
- {
- recordManager.setKeepRevisions( true );
-
- // Now, add some elements in the BTree
- btree.insert( 3L, "V3" );
- long rev1 = btree.getRevision();
-
- btree.insert( 1L, "V1" );
- long rev2 = btree.getRevision();
-
- btree.insert( 5L, "V5" );
- long rev3 = btree.getRevision();
-
- // Check that we can browse each revision
- // revision 1
- checkBTreeRevisionBrowseFrom( btree, rev1, 3L, 3L );
-
- // Revision 2
- checkBTreeRevisionBrowseFrom( btree, rev2, 3L, 3L );
-
- // Revision 3
- checkBTreeRevisionBrowseFrom( btree, rev3, 3L, 3L, 5L );
-
- // Now, try to reload the file back
- openRecordManagerAndBtree();
-
- assertEquals( 1, recordManager.getNbManagedTrees() );
-
- Set<String> managedBTrees = recordManager.getManagedTrees();
-
- assertEquals( 1, managedBTrees.size() );
- assertTrue( managedBTrees.contains( "test" ) );
-
- BTree<Long, String> btree1 = recordManager.getBtree( "test" );
-
- assertNotNull( btree1 );
- assertEquals( btree.getKeyComparator().getClass().getName(), btree1.getKeyComparator().getClass().getName() );
- assertEquals( btree.getKeySerializer().getClass().getName(), btree1.getKeySerializer().getClass().getName() );
- assertEquals( btree.getName(), btree1.getName() );
- assertEquals( btree.getNbElems(), btree1.getNbElems() );
- assertEquals( btree.getPageSize(), btree1.getPageSize() );
- assertEquals( btree.getRevision(), btree1.getRevision() );
- assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
-
- // Check the stored element
- assertTrue( btree1.hasKey( 1L ) );
- assertTrue( btree1.hasKey( 3L ) );
- assertTrue( btree1.hasKey( 5L ) );
- assertEquals( "V1", btree1.get( 1L ) );
- assertEquals( "V3", btree1.get( 3L ) );
- assertEquals( "V5", btree1.get( 5L ) );
-
- // Check that we can read the revision again
- // revision 1
- checkBTreeRevisionBrowseFrom( btree, rev1, 3L );
-
- // Revision 2
- checkBTreeRevisionBrowseFrom( btree, rev2, 3L );
-
- // Revision 3
- checkBTreeRevisionBrowseFrom( btree, rev3, 3L, 3L, 5L );
- }
-
-
- /**
- * Test a get() from a given revision
- */
- @Test
- public void testGetWithRevision() throws IOException, BTreeAlreadyManagedException,
- KeyNotFoundException
+ public void testAdds() throws IOException, BTreeAlreadyManagedException, KeyNotFoundException
{
- recordManager.setKeepRevisions( true );
-
- // Now, add some elements in the BTree
- btree.insert( 3L, "V3" );
- long rev1 = btree.getRevision();
-
- btree.insert( 1L, "V1" );
- long rev2 = btree.getRevision();
-
- btree.insert( 5L, "V5" );
- long rev3 = btree.getRevision();
-
- // Delete one element
- btree.delete( 3L );
- long rev4 = btree.getRevision();
-
- // Check that we can get a value from each revision
- // revision 1
- assertEquals( "V3", btree.get( rev1, 3L ) );
-
- // revision 2
- assertEquals( "V1", btree.get( rev2, 1L ) );
- assertEquals( "V3", btree.get( rev2, 3L ) );
-
- // revision 3
- assertEquals( "V1", btree.get( rev3, 1L ) );
- assertEquals( "V3", btree.get( rev3, 3L ) );
- assertEquals( "V5", btree.get( rev3, 5L ) );
-
- // revision 4
- assertEquals( "V1", btree.get( rev4, 1L ) );
- assertEquals( "V5", btree.get( rev4, 5L ) );
-
- try
- {
- btree.get( rev4, 3L );
- fail();
- }
- catch ( KeyNotFoundException knfe )
- {
- // expected
- }
-
- // Now, try to reload the file back
- openRecordManagerAndBtree();
-
- assertEquals( 1, recordManager.getNbManagedTrees() );
-
- Set<String> managedBTrees = recordManager.getManagedTrees();
-
- assertEquals( 1, managedBTrees.size() );
- assertTrue( managedBTrees.contains( "test" ) );
-
- BTree<Long, String> btree1 = recordManager.getBtree( "test" );
-
- assertNotNull( btree1 );
- assertEquals( btree.getKeyComparator().getClass().getName(), btree1.getKeyComparator().getClass().getName() );
- assertEquals( btree.getKeySerializer().getClass().getName(), btree1.getKeySerializer().getClass().getName() );
- assertEquals( btree.getName(), btree1.getName() );
- assertEquals( btree.getNbElems(), btree1.getNbElems() );
- assertEquals( btree.getPageSize(), btree1.getPageSize() );
- assertEquals( btree.getRevision(), btree1.getRevision() );
- assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
-
- // Check the stored element
- assertTrue( btree1.hasKey( 1L ) );
- assertFalse( btree1.hasKey( 3L ) );
- assertTrue( btree1.hasKey( 5L ) );
- assertEquals( "V1", btree1.get( 1L ) );
- assertEquals( "V5", btree1.get( 5L ) );
-
- // Check that we can get a value from each revision
- // revision 1
- checkBTreeRevisionBrowse( btree, rev1 );
-
- // revision 2
- checkBTreeRevisionBrowse( btree, rev2 );
-
- // revision 3
- checkBTreeRevisionBrowse( btree, rev3 );
-
- // revision 4
- checkBTreeRevisionBrowse( btree, rev4, 1L, 5L );
-
- try
- {
- btree.get( rev4, 3L );
- fail();
- }
- catch ( KeyNotFoundException knfe )
+ try ( WriteTransaction writeTransaction = recordManager.beginWriteTransaction() )
{
- // expected
+ btree.insert( writeTransaction, 1L, "V1" );
+ btree.insert( writeTransaction, 2L, "V2" );
}
}
- /**
- * Test a contain() from a given revision
- */
- @Test
- public void testContainWithRevision() throws IOException, BTreeAlreadyManagedException,
- KeyNotFoundException
- {
- recordManager.setKeepRevisions( true );
-
- // Now, add some elements in the BTree
- btree.insert( 3L, "V3" );
- long rev1 = btree.getRevision();
-
- btree.insert( 1L, "V1" );
- long rev2 = btree.getRevision();
-
- btree.insert( 5L, "V5" );
- long rev3 = btree.getRevision();
-
- // Delete one element
- btree.delete( 3L );
- long rev4 = btree.getRevision();
-
- // Check that we can get a value from each revision
- // revision 1
- assertFalse( btree.contains( rev1, 1L, "V1" ) );
- assertTrue( btree.contains( rev1, 3L, "V3" ) );
- assertFalse( btree.contains( rev1, 5L, "V5" ) );
-
- // revision 2
- assertTrue( btree.contains( rev2, 1L, "V1" ) );
- assertTrue( btree.contains( rev2, 3L, "V3" ) );
- assertFalse( btree.contains( rev2, 5L, "V5" ) );
-
- // revision 3
- assertTrue( btree.contains( rev3, 1L, "V1" ) );
- assertTrue( btree.contains( rev3, 3L, "V3" ) );
- assertTrue( btree.contains( rev3, 5L, "V5" ) );
-
- // revision 4
- assertTrue( btree.contains( rev4, 1L, "V1" ) );
- assertFalse( btree.contains( rev4, 3L, "V3" ) );
- assertTrue( btree.contains( rev4, 5L, "V5" ) );
-
- // Now, try to reload the file back
- openRecordManagerAndBtree();
-
- assertEquals( 1, recordManager.getNbManagedTrees() );
-
- Set<String> managedBTrees = recordManager.getManagedTrees();
-
- assertEquals( 1, managedBTrees.size() );
- assertTrue( managedBTrees.contains( "test" ) );
-
- BTree<Long, String> btree1 = recordManager.getBtree( "test" );
-
- assertNotNull( btree1 );
- assertEquals( btree.getKeyComparator().getClass().getName(), btree1.getKeyComparator().getClass().getName() );
- assertEquals( btree.getKeySerializer().getClass().getName(), btree1.getKeySerializer().getClass().getName() );
- assertEquals( btree.getName(), btree1.getName() );
- assertEquals( btree.getNbElems(), btree1.getNbElems() );
- assertEquals( btree.getPageSize(), btree1.getPageSize() );
- assertEquals( btree.getRevision(), btree1.getRevision() );
- assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
-
- // Check the stored element
- assertTrue( btree1.hasKey( 1L ) );
- assertFalse( btree1.hasKey( 3L ) );
- assertTrue( btree1.hasKey( 5L ) );
- assertEquals( "V1", btree1.get( 1L ) );
- assertEquals( "V5", btree1.get( 5L ) );
-
- // Check that we can get a value from each revision
- // revision 1
- assertFalse( btree.contains( rev1, 1L, "V1" ) );
- assertFalse( btree.contains( rev1, 3L, "V3" ) );
- assertFalse( btree.contains( rev1, 5L, "V5" ) );
-
- // revision 2
- assertFalse( btree.contains( rev2, 1L, "V1" ) );
- assertFalse( btree.contains( rev2, 3L, "V3" ) );
- assertFalse( btree.contains( rev2, 5L, "V5" ) );
-
- // revision 3
- assertFalse( btree.contains( rev3, 1L, "V1" ) );
- assertFalse( btree.contains( rev3, 3L, "V3" ) );
- assertFalse( btree.contains( rev3, 5L, "V5" ) );
-
- // revision 4
- assertTrue( btree.contains( rev4, 1L, "V1" ) );
- assertFalse( btree.contains( rev4, 3L, "V3" ) );
- assertTrue( btree.contains( rev4, 5L, "V5" ) );
- }
-
-
- /**
- * Test a hasKey() from a given revision
- */
- @Test
- public void testHasKeyWithRevision() throws IOException, BTreeAlreadyManagedException,
- KeyNotFoundException
- {
- recordManager.setKeepRevisions( true );
-
- // Now, add some elements in the BTree
- btree.insert( 3L, "V3" );
- long rev1 = btree.getRevision();
-
- btree.insert( 1L, "V1" );
- long rev2 = btree.getRevision();
-
- btree.insert( 5L, "V5" );
- long rev3 = btree.getRevision();
-
- // Delete one element
- btree.delete( 3L );
- long rev4 = btree.getRevision();
-
- // Check that we can get a value from each revision
- // revision 1
- assertFalse( btree.hasKey( rev1, 1L ) );
- assertTrue( btree.hasKey( rev1, 3L ) );
- assertFalse( btree.hasKey( rev1, 5L ) );
-
- // revision 2
- assertTrue( btree.hasKey( rev2, 1L ) );
- assertTrue( btree.hasKey( rev2, 3L ) );
- assertFalse( btree.hasKey( rev2, 5L ) );
-
- // revision 3
- assertTrue( btree.hasKey( rev3, 1L ) );
- assertTrue( btree.hasKey( rev3, 3L ) );
- assertTrue( btree.hasKey( rev3, 5L ) );
-
- // revision 4
- assertTrue( btree.hasKey( rev4, 1L ) );
- assertFalse( btree.hasKey( rev4, 3L ) );
- assertTrue( btree.hasKey( rev4, 5L ) );
-
- // Now, try to reload the file back
- openRecordManagerAndBtree();
-
- assertEquals( 1, recordManager.getNbManagedTrees() );
-
- Set<String> managedBTrees = recordManager.getManagedTrees();
-
- assertEquals( 1, managedBTrees.size() );
- assertTrue( managedBTrees.contains( "test" ) );
-
- BTree<Long, String> btree1 = recordManager.getBtree( "test" );
-
- assertNotNull( btree1 );
- assertEquals( btree.getKeyComparator().getClass().getName(), btree1.getKeyComparator().getClass().getName() );
- assertEquals( btree.getKeySerializer().getClass().getName(), btree1.getKeySerializer().getClass().getName() );
- assertEquals( btree.getName(), btree1.getName() );
- assertEquals( btree.getNbElems(), btree1.getNbElems() );
- assertEquals( btree.getPageSize(), btree1.getPageSize() );
- assertEquals( btree.getRevision(), btree1.getRevision() );
- assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
-
- // Check the stored element
- assertTrue( btree1.hasKey( 1L ) );
- assertFalse( btree1.hasKey( 3L ) );
- assertTrue( btree1.hasKey( 5L ) );
- assertEquals( "V1", btree1.get( 1L ) );
- assertEquals( "V5", btree1.get( 5L ) );
-
- // Check that we can get a value from each revision
- // revision 1
- assertFalse( btree.hasKey( rev1, 1L ) );
- assertFalse( btree.hasKey( rev1, 3L ) );
- assertFalse( btree.hasKey( rev1, 5L ) );
-
- // revision 2
- assertFalse( btree.hasKey( rev2, 1L ) );
- assertFalse( btree.hasKey( rev2, 3L ) );
- assertFalse( btree.hasKey( rev2, 5L ) );
-
- // revision 3
- assertFalse( btree.hasKey( rev3, 1L ) );
- assertFalse( btree.hasKey( rev3, 3L ) );
- assertFalse( btree.hasKey( rev3, 5L ) );
-
- // revision 4
- assertTrue( btree.hasKey( rev4, 1L ) );
- assertFalse( btree.hasKey( rev4, 3L ) );
- assertTrue( btree.hasKey( rev4, 5L ) );
- }
-
-
- @Test
- public void testAdds() throws IOException, BTreeAlreadyManagedException, KeyNotFoundException
- {
- btree.insert( 1L, "V1" );
- btree.insert( 2L, "V2" );
- }
-
-
@Ignore
@Test
public void testAddInTxns() throws IOException, BTreeAlreadyManagedException, KeyNotFoundException
@@ -875,41 +464,41 @@ public class RecordManagerTest
System.out.println( "Test start" );
*/
- recordManager.beginTransaction();
- /*
- System.out.println( "Before V1" );
- for ( Long key : recordManager.writeCounter.keySet() )
- {
- System.out.println( "Page " + Long.toHexString( key ) + " written " + recordManager.writeCounter.get( key )
- + " times" );
- }
- */
- btree.insert( 1L, "V1" );
- /*
- for ( Long key : recordManager.writeCounter.keySet() )
- {
- System.out.println( "Page " + Long.toHexString( key ) + " written " + recordManager.writeCounter.get( key )
- + " times" );
- }
-
- System.out.println( "After V1" );
- */
-
- //System.out.println( "Before V2" );
- btree.insert( 2L, "V2" );
- //System.out.println( "After V2" );
-
- //System.out.println( "Before V3" );
- btree.insert( 3L, "V3" );
- /*
- for ( Long key : recordManager.writeCounter.keySet() )
+ try ( WriteTransaction writeTransaction = recordManager.beginWriteTransaction() )
{
- System.out.println( "Page " + Long.toHexString( key ) + " written " + recordManager.writeCounter.get( key )
- + " times" );
+ /*
+ System.out.println( "Before V1" );
+ for ( Long key : recordManager.writeCounter.keySet() )
+ {
+ System.out.println( "Page " + Long.toHexString( key ) + " written " + recordManager.writeCounter.get( key )
+ + " times" );
+ }
+ */
+ btree.insert( writeTransaction, 1L, "V1" );
+ /*
+ for ( Long key : recordManager.writeCounter.keySet() )
+ {
+ System.out.println( "Page " + Long.toHexString( key ) + " written " + recordManager.writeCounter.get( key )
+ + " times" );
+ }
+
+ System.out.println( "After V1" );
+ */
+
+ //System.out.println( "Before V2" );
+ btree.insert( writeTransaction, 2L, "V2" );
+ //System.out.println( "After V2" );
+
+ //System.out.println( "Before V3" );
+ btree.insert( writeTransaction, 3L, "V3" );
+ /*
+ for ( Long key : recordManager.writeCounter.keySet() )
+ {
+ System.out.println( "Page " + Long.toHexString( key ) + " written " + recordManager.writeCounter.get( key )
+ + " times" );
+ }
+ */
}
- */
-
- recordManager.commit();
/*
for ( Long key : recordManager.writeCounter.keySet() )