Package org.apache.directory.mavibot.btree

Examples of org.apache.directory.mavibot.btree.RecordManager


    {
        File tempFile = tempFolder.newFile( "mavibot.db" );
        String tempFileName = tempFile.getAbsolutePath();

        // Create page size of 32 only
        RecordManager recordManager = new RecordManager( tempFileName, 32 );
        Method storeMethod = RecordManager.class.getDeclaredMethod( "store", long.class, int.class, PageIO[].class );
        Method readIntMethod = RecordManager.class.getDeclaredMethod( "readInt", PageIO[].class, long.class );
        storeMethod.setAccessible( true );
        readIntMethod.setAccessible( true );

        // Allocate some Pages
        PageIO[] pageIos = new PageIO[2];
        pageIos[0] = new PageIO();
        pageIos[0].setData( ByteBuffer.allocate( recordManager.getPageSize() ) );
        pageIos[1] = new PageIO();
        pageIos[1].setData( ByteBuffer.allocate( recordManager.getPageSize() ) );

        // Set the int at the beginning
        storeMethod.invoke( recordManager, 0, 0x12345678, pageIos );

        // Read it back
        int readValue = ( Integer ) readIntMethod.invoke( recordManager, pageIos, 0 );

        assertEquals( 0x12345678, readValue );

        // Set the int at the end of the first page
        storeMethod.invoke( recordManager, 16, 0x12345678, pageIos );

        // Read it back
        readValue = ( Integer ) readIntMethod.invoke( recordManager, pageIos, 16 );

        assertEquals( 0x12345678, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 1 byte overlapping
        storeMethod.invoke( recordManager, 17, 0x12345678, pageIos );

        // Read it back
        readValue = ( Integer ) readIntMethod.invoke( recordManager, pageIos, 17 );

        assertEquals( 0x12345678, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 2 bytes overlapping
        storeMethod.invoke( recordManager, 18, 0x12345678, pageIos );

        // Read it back
        readValue = ( Integer ) readIntMethod.invoke( recordManager, pageIos, 18 );

        assertEquals( 0x12345678, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 3 bytes overlapping
        storeMethod.invoke( recordManager, 19, 0x12345678, pageIos );

        // Read it back
        readValue = ( Integer ) readIntMethod.invoke( recordManager, pageIos, 19 );

        assertEquals( 0x12345678, readValue );

        // Set the int at the beginning of the second page
        storeMethod.invoke( recordManager, 20, 0x12345678, pageIos );

        // Read it back
        readValue = ( Integer ) readIntMethod.invoke( recordManager, pageIos, 20 );

        recordManager.close();
    }
View Full Code Here


    {
        File tempFile = tempFolder.newFile( "mavibot.db" );
        String tempFileName = tempFile.getAbsolutePath();

        // Create page size of 32 only
        RecordManager recordManager = new RecordManager( tempFileName, 32 );
        Method storeMethod = RecordManager.class.getDeclaredMethod( "store", long.class, long.class, PageIO[].class );
        Method readLongMethod = RecordManager.class.getDeclaredMethod( "readLong", PageIO[].class, long.class );
        storeMethod.setAccessible( true );
        readLongMethod.setAccessible( true );

        // Allocate some Pages
        PageIO[] pageIos = new PageIO[2];
        pageIos[0] = new PageIO();
        pageIos[0].setData( ByteBuffer.allocate( recordManager.getPageSize() ) );
        pageIos[1] = new PageIO();
        pageIos[1].setData( ByteBuffer.allocate( recordManager.getPageSize() ) );

        // Set the int at the beginning
        storeMethod.invoke( recordManager, 0, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        long readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 0 );

        assertEquals( 0x0123456789ABCDEFL, readValue );

        // Set the int at the end of the first page
        storeMethod.invoke( recordManager, 12, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 12 );

        assertEquals( 0x0123456789ABCDEFL, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 1 byte overlapping
        storeMethod.invoke( recordManager, 13, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 13 );

        assertEquals( 0x0123456789ABCDEFL, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 2 bytes overlapping
        storeMethod.invoke( recordManager, 14, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 14 );

        assertEquals( 0x0123456789ABCDEFL, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 3 bytes overlapping
        storeMethod.invoke( recordManager, 15, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 15 );

        assertEquals( 0x0123456789ABCDEFL, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 4 bytes overlapping
        storeMethod.invoke( recordManager, 16, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 16 );

        assertEquals( 0x0123456789ABCDEFL, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 5 bytes overlapping
        storeMethod.invoke( recordManager, 17, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 17 );

        assertEquals( 0x0123456789ABCDEFL, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 6 bytes overlapping
        storeMethod.invoke( recordManager, 18, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 18 );

        assertEquals( 0x0123456789ABCDEFL, readValue );

        // Set the int at the end of the first page and overlapping on the second page
        // 7 bytes overlapping
        storeMethod.invoke( recordManager, 19, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 19 );

        assertEquals( 0x0123456789ABCDEFL, readValue );

        // Set the int at the beginning of the second page
        storeMethod.invoke( recordManager, 20, 0x0123456789ABCDEFL, pageIos );

        // Read it back
        readValue = ( Long ) readLongMethod.invoke( recordManager, pageIos, 20 );

        recordManager.close();
    }
View Full Code Here

    {
        File tempFile = tempFolder.newFile( "mavibot.db" );
        String tempFileName = tempFile.getAbsolutePath();

        // We use smaller pages
        RecordManager recordManager = new RecordManager( tempFileName, 32 );
        Method storeMethod = RecordManager.class.getDeclaredMethod( "store", long.class, byte[].class, PageIO[].class );
        Method readBytesMethod = RecordManager.class.getDeclaredMethod( "readBytes", PageIO[].class, long.class );
        storeMethod.setAccessible( true );
        readBytesMethod.setAccessible( true );

        // Allocate some Pages
        PageIO[] pageIos = new PageIO[4];
        pageIos[0] = new PageIO();
        pageIos[0].setData( ByteBuffer.allocate( recordManager.getPageSize() ) );
        pageIos[1] = new PageIO();
        pageIos[1].setData( ByteBuffer.allocate( recordManager.getPageSize() ) );
        pageIos[2] = new PageIO();
        pageIos[2].setData( ByteBuffer.allocate( recordManager.getPageSize() ) );
        pageIos[3] = new PageIO();
        pageIos[3].setData( ByteBuffer.allocate( recordManager.getPageSize() ) );

        // We start with 4 bytes
        byte[] bytes = new byte[]
            { 0x01, 0x23, 0x45, 0x67 };

        // Set the bytes at the beginning
        storeMethod.invoke( recordManager, 0L, bytes, pageIos );

        // Read the bytes back
        ByteBuffer readBytes = ( ByteBuffer ) readBytesMethod.invoke( recordManager, pageIos, 0L );

        // The byte length
        assertNotNull( readBytes );
        assertEquals( 4, readBytes.limit() );
        // The data
        assertEquals( 0x01, readBytes.get() );
        assertEquals( 0x23, readBytes.get() );
        assertEquals( 0x45, readBytes.get() );
        assertEquals( 0x67, readBytes.get() );

        // Set the bytes at the end of the first page
        storeMethod.invoke( recordManager, 12L, bytes, pageIos );

        // Read the bytes back
        readBytes = ( ByteBuffer ) readBytesMethod.invoke( recordManager, pageIos, 12L );

        // The byte length
        assertNotNull( readBytes );
        assertEquals( 4, readBytes.limit() );
        // The data
        assertEquals( 0x01, readBytes.get() );
        assertEquals( 0x23, readBytes.get() );
        assertEquals( 0x45, readBytes.get() );
        assertEquals( 0x67, readBytes.get() );

        // Set A full page of bytes in the first page
        bytes = new byte[16];

        for ( int i = 0; i < 16; i++ )
        {
            bytes[i] = ( byte ) ( i + 1 );
        }

        storeMethod.invoke( recordManager, 0L, bytes, pageIos );

        // Read the bytes back
        readBytes = ( ByteBuffer ) readBytesMethod.invoke( recordManager, pageIos, 0L );

        // The byte length
        assertNotNull( readBytes );
        assertEquals( 16, readBytes.limit() );

        // The data
        for ( int i = 0; i < 16; i++ )
        {
            assertEquals( i + 1, readBytes.get() );
        }

        // Write the bytes over 2 pages
        storeMethod.invoke( recordManager, 15L, bytes, pageIos );

        // Read the bytes back
        readBytes = ( ByteBuffer ) readBytesMethod.invoke( recordManager, pageIos, 15L );

        // The byte length
        assertNotNull( readBytes );
        assertEquals( 16, readBytes.limit() );
        // The data
        for ( int i = 0; i < 16; i++ )
        {
            assertEquals( i + 1, readBytes.get() );
        }

        // Write the bytes over 4 pages
        bytes = new byte[80];

        for ( int i = 0; i < 80; i++ )
        {
            bytes[i] = ( byte ) ( i + 1 );
        }

        storeMethod.invoke( recordManager, 2L, bytes, pageIos );

        // Read the bytes back
        readBytes = ( ByteBuffer ) readBytesMethod.invoke( recordManager, pageIos, 2L );

        // The byte length
        assertNotNull( readBytes );
        assertEquals( 80, readBytes.limit() );

        // The data
        for ( int i = 0; i < 80; i++ )
        {
            assertEquals( i + 1, readBytes.get() );
        }

        recordManager.close();
    }
View Full Code Here

    public void createRecordManager() throws Exception
    {
        dataDir = tempFolder.newFolder( UUID.randomUUID().toString() );

        // Now, try to reload the file back
        recordManager = new RecordManager( dataDir.getAbsolutePath(), 32 );

        // Create a new BTree
        btree = recordManager.addBTree( "test", new LongSerializer(), new StringSerializer(), false );
    }
View Full Code Here

            {
                recordManager.close();
            }

            // Now, try to reload the file back
            recordManager = new RecordManager( dataDir.getAbsolutePath() );

            // load the last created btree
            btree = recordManager.getManagedTree( "test" );
        }
        catch ( Exception e )
View Full Code Here

            {
                recordManager1.close();
            }

            // Now, try to reload the file back
            recordManager1 = new RecordManager( dataDir.getAbsolutePath() );

            // load the last created btree
            if ( btree != null )
            {
                btree = recordManager1.getManagedTree( btree.getName() );
View Full Code Here

        }

        File file = File.createTempFile( "managedbtreebuilder", ".data" );
        file.deleteOnExit();

        RecordManager rm = new RecordManager( file.getAbsolutePath() );

        IntSerializer ser = new IntSerializer();
        PersistedBTreeBuilder<Integer, Integer> bb = new PersistedBTreeBuilder<Integer, Integer>( rm, "master", 4, ser,
            ser );

        // contains 1, 2, 3, 4, 5, 6, 7
        BTree<Integer, Integer> btree = bb.build( sortedTuple.iterator() );

        rm.close();

        rm = new RecordManager( file.getAbsolutePath() );
        btree = rm.getManagedTree( "master" );

        assertEquals( 1, btree.getRootPage().getNbElems() );

        assertEquals( 7, btree.getRootPage().findRightMost().getKey().intValue() );
View Full Code Here

            {
                recordManager1.close();
            }

            // Now, try to reload the file back
            recordManager1 = new RecordManager( dataDir.getAbsolutePath() );

            // load the last created btree
            if ( btree != null )
            {
                btree = recordManager1.getManagedTree( btree.getName() );
View Full Code Here

            {
                recordManager.close();
            }

            // Now, try to reload the file back
            recordManager = new RecordManager( dataDir.getAbsolutePath() );

            // load the last created btree
            if ( btree != null )
            {
                btree = recordManager.getManagedTree( btree.getName() );
View Full Code Here

        config.setValueSerializer( new StringSerializer() );
       
        BTree<Entry, String> btree = BTreeFactory.createPersistedBTree( config );
       
        File file = File.createTempFile( btree.getName(), ".sorted-data" );
        RecordManager recMan = new RecordManager( file.getAbsolutePath() );
       
        try
        {
            recMan.manage( btree );
        }
        catch( BTreeAlreadyManagedException e )
        {
            throw new LdapException( e );
        }
View Full Code Here

TOP

Related Classes of org.apache.directory.mavibot.btree.RecordManager

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.