You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by el...@apache.org on 2013/03/15 14:48:46 UTC

svn commit: r1456954 - in /labs/mavibot/trunk/mavibot/src: main/java/org/apache/mavibot/btree/store/RecordManager.java test/java/org/apache/mavibot/btree/store/RecordManagerTest.java

Author: elecharny
Date: Fri Mar 15 13:48:46 2013
New Revision: 1456954

URL: http://svn.apache.org/r1456954
Log:
o Added more than one value in a page, stored the btree, and read it back
o Fixed a NPE when writing data in a page : when the data was filling the last page completely, that was generating a NPE.

Modified:
    labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java
    labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/store/RecordManagerTest.java

Modified: labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java?rev=1456954&r1=1456953&r2=1456954&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java (original)
+++ labs/mavibot/trunk/mavibot/src/main/java/org/apache/mavibot/btree/store/RecordManager.java Fri Mar 15 13:48:46 2013
@@ -34,12 +34,12 @@ import java.util.Set;
 
 import org.apache.mavibot.btree.BTree;
 import org.apache.mavibot.btree.BTreeFactory;
+import org.apache.mavibot.btree.ElementHolder;
 import org.apache.mavibot.btree.Leaf;
 import org.apache.mavibot.btree.MemoryHolder;
 import org.apache.mavibot.btree.Node;
 import org.apache.mavibot.btree.Page;
 import org.apache.mavibot.btree.ReferenceHolder;
-import org.apache.mavibot.btree.ElementHolder;
 import org.apache.mavibot.btree.exception.BTreeAlreadyManagedException;
 import org.apache.mavibot.btree.exception.EndOfFileExceededException;
 import org.apache.mavibot.btree.serializer.IntSerializer;
@@ -1256,6 +1256,13 @@ public class RecordManager
                     pageData.put( bytes, bytes.length - nbStored, remaining );
                     pageData.reset();
                     pageNb++;
+
+                    if ( pageNb == pageIos.length )
+                    {
+                        // We can stop here : we have reach the end of the page
+                        break;
+                    }
+
                     pageData = pageIos[pageNb].getData();
                     pagePos = LINK_SIZE;
                     nbStored -= remaining;

Modified: labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/store/RecordManagerTest.java
URL: http://svn.apache.org/viewvc/labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/store/RecordManagerTest.java?rev=1456954&r1=1456953&r2=1456954&view=diff
==============================================================================
--- labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/store/RecordManagerTest.java (original)
+++ labs/mavibot/trunk/mavibot/src/test/java/org/apache/mavibot/btree/store/RecordManagerTest.java Fri Mar 15 13:48:46 2013
@@ -30,6 +30,7 @@ import java.util.Set;
 
 import org.apache.mavibot.btree.BTree;
 import org.apache.mavibot.btree.exception.BTreeAlreadyManagedException;
+import org.apache.mavibot.btree.exception.KeyNotFoundException;
 import org.apache.mavibot.btree.serializer.LongSerializer;
 import org.apache.mavibot.btree.serializer.StringSerializer;
 import org.junit.Test;
@@ -92,9 +93,10 @@ public class RecordManagerTest
 
     /**
      * Test the creation of a RecordManager with a BTree containing data.
+     * @throws KeyNotFoundException 
      */
     @Test
-    public void testRecordManagerWithBTree() throws IOException, BTreeAlreadyManagedException
+    public void testRecordManagerWithBTree() throws IOException, BTreeAlreadyManagedException, KeyNotFoundException
     {
         File tempFile = File.createTempFile( "mavibot", ".db" );
         String tempFileName = tempFile.getAbsolutePath();
@@ -110,8 +112,10 @@ public class RecordManagerTest
         // And make it managed by the RM
         recordManager.manage( btree );
 
-        // Now, add some elemnts in the BTree
+        // Now, add some elements in the BTree
+        btree.insert( 3L, "V3" );
         btree.insert( 1L, "V1" );
+        btree.insert( 5L, "V5" );
 
         // Close the recordManager
         recordManager.close();
@@ -126,7 +130,7 @@ public class RecordManagerTest
         assertEquals( 1, managedBTrees.size() );
         assertTrue( managedBTrees.contains( "test" ) );
 
-        BTree btree1 = recordManager1.getManagedTree( "test" );
+        BTree<Long, String> btree1 = recordManager1.getManagedTree( "test" );
 
         assertNotNull( btree1 );
         assertEquals( btree.getComparator().getClass().getName(), btree1.getComparator().getClass().getName() );
@@ -137,5 +141,13 @@ public class RecordManagerTest
         assertEquals( btree.getPageSize(), btree1.getPageSize() );
         assertEquals( btree.getRevision(), btree1.getRevision() );
         assertEquals( btree.getValueSerializer().getClass().getName(), btree1.getValueSerializer().getClass().getName() );
+
+        // Check the stord element
+        assertTrue( btree1.exist( 1L ) );
+        assertTrue( btree1.exist( 3L ) );
+        assertTrue( btree1.exist( 5L ) );
+        assertEquals( "V1", btree1.get( 1L ) );
+        assertEquals( "V3", btree1.get( 3L ) );
+        assertEquals( "V5", btree1.get( 5L ) );
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org