Package jdbm

Examples of jdbm.RecordManager


    public void insert()
        throws IOException
    {

        BTree    btree;
        RecordManager  recman;
        long           start, finish;
        Properties     props;
       
        props = new Properties();
        recman = RecordManagerFactory.createRecordManager( "TestInsertPref-" + System.currentTimeMillis(),
                                                           props);
        btree = BTree.createInstance( recman);
       
        // Note:  One can use specialized serializers for better performance / database size
        // btree = BTree.createInstance( recman, new LongComparator(),
        //                               LongSerializer.INSTANCE, IntegerSerializer.INSTANCE );

        start = System.currentTimeMillis();
        for (int i = 0; i < _numberOfObjects; i++) {
            btree.insert( new Long( i ), new Integer( i ), false );
        }
        recman.commit();
        finish = System.currentTimeMillis();
       
        System.out.println( "It took " + (finish - start) + " ms to insert "
                            + _numberOfObjects +" objects." );
                               
View Full Code Here


         recman.close();
   }
   
    public void testRecordListener() throws IOException{
        RecordManager recman = newRecordManager();
        BTree<Integer,String> tree = BTree.createInstance( recman);
        final List<SimpleEntry<Integer,String>> dels = new ArrayList();
        final List<SimpleEntry<Integer,String>> ins = new ArrayList();
        final List<SimpleEntry<Integer,String>> updNew = new ArrayList();
        final List<SimpleEntry<Integer,String>> updOld = new ArrayList();
View Full Code Here

   
  }


  public void testSecondaryHashMapManyToOne() throws IOException{
    RecordManager r = newRecordManager();
    PrimaryTreeMap<Integer, String> m = r.treeMap("aa");
    SecondaryHashMap<Integer, Integer, String> s = m.secondaryHashMapManyToOne("bb",
        new SecondaryKeyExtractor<Iterable<Integer>, Integer, String>() {

      public List<Integer> extractSecondaryKey(Integer key, String value) {       
        return list(value.length(),10+value.length());
View Full Code Here

     * We are also going to test to make sure the recman file doesn't grow (leak) if we repeat the
     * process a number of times.
     * @throws Exception
     */
    public void testDeleteAllNodes() throws Exception {
        RecordManager  recman;
        BTree<String, Serializable>          tree;
       
        // we are going to run this test without object cache enabled.  If it is turned on,
        // we will have problems with using a different deserializer for BPages than the standard
        // serializer.
        Properties props = new Properties();
        props.setProperty(RecordManagerOptions.CACHE_TYPE, "none");

        String recordManagerBasename = newTestFile();
        String recordManagerDBname = recordManagerBasename+".dbr.0";
       
        long previousRecmanSize = 0;
        for (int i = 0; i < 5; i++){
            recman = RecordManagerFactory.createRecordManager( recordManagerBasename, props );
     
            try{
                tree = BTree.createInstance( recman);
                String[] keys = new String[1000];
                for (int count = 0; count < 1000; count++){
                    keys[count] = "num" + count;
                }     
         
                // put enough data into the tree so we definitely have multiple pages
                for (int count = 0; count < 1000; count++){
                    tree.insert(keys[count],new Integer(count),false);
                    if (count % 100 == 0)
                        recman.commit();
                }
                recman.commit();
               
                long currentRecmanSize = new File(recordManagerDBname).length();
                assertTrue("file size too small "+ currentRecmanSize, currentRecmanSize > 0);

               
                // now remove it all
               
                for (int count = 0; count < 1000; count++){
                    tree.remove(keys[count]);
                    if (count % 100 == 0)
                        recman.commit();
                }
                recman.commit();
               
                BPage root = tree.getRoot();
                assertNull(root);
               
            } finally {
                recman.close();
                long currentRecmanSize = new File(recordManagerDBname).length();
                assertTrue("file size too small "+ currentRecmanSize, currentRecmanSize > 0);
                if (previousRecmanSize != 0){
                    assertTrue(currentRecmanSize == previousRecmanSize);
                }
View Full Code Here

    assertEquals(s.get(12), null);
   
  }
 
  public void testInverseHashView() throws IOException{
    RecordManager r = newRecordManager();
    PrimaryTreeMap<Integer, String> m = r.treeMap("aa");
    InverseHashView<Integer, String> inverse = m.inverseHashView("aaInverse");   
    m.put(1, "a");
    m.put(2, "ab");
    m.put(3, "abc");
   
View Full Code Here

  }

  static final class NoHashObject implements Serializable{}
 
  public void testInverseHashIdentityCheck() throws IOException{
    RecordManager r = newRecordManager();
    PrimaryTreeMap<Integer, Object> m = r.treeMap("aa");
    InverseHashView<Integer, Object> inverse = m.inverseHashView("aaInverse");
    try{
      for(int i =0; i<1000;i++){
        m.put(i, new NoHashObject());
      }
View Full Code Here

* handleException().
*/
  public void testMultithreadAccess()
    throws IOException
  {
        RecordManager  recman;
        BTree          tree;

        if ( DEBUG )
            System.out.println("TestBTree.testMultithreadAccess");

        recman = newRecordManager();
        tree = BTree.createInstance( recman);

        TestThread[] thread_pool = new TestThread[THREAD_NUMBER];
        String name;
        Map content;

        // create content for the tree, different content for different threads!
        for (int thread_count = 0; thread_count < THREAD_NUMBER; thread_count++) {
            name = "thread"+thread_count;
            content = new TreeMap();
            for(int content_count = 0; content_count < THREAD_CONTENT_SIZE; content_count++) {
                // guarantee, that keys and values do not overleap,
                // otherwise one thread removes some keys/values of
                // other threads!
                content.put( name+"_"+content_count,
                             new Integer(thread_count*THREAD_CONTENT_SIZE+content_count) );
            }
            thread_pool[thread_count] = new TestThread(name,tree,content);
            thread_pool[thread_count].start();
        }

        try {
            Thread.sleep(THREAD_RUNTIME);
        } catch( InterruptedException ignore ) {
            ignore.printStackTrace();
        }

        // stop threads:
        for (int thread_count = 0; thread_count < THREAD_NUMBER; thread_count++) {
            if ( DEBUG ) System.out.println("Stop threads");
            thread_pool[thread_count].setStop();
        }
        // wait until the threads really stop:
        try {
            for (int thread_count = 0; thread_count < THREAD_NUMBER; thread_count++) {
                if ( DEBUG ) System.out.println("Join thread " + thread_count );
                thread_pool[thread_count].join();
                if ( DEBUG ) System.out.println("Joined thread " + thread_count );
            }
        } catch( InterruptedException ignore ) {
            ignore.printStackTrace();
        }
        recman.close();
    }
View Full Code Here

    /**
     *  Basic tests
     */
    public void testBasics() throws IOException {
        RecordManager recman;
        String test, test1, test2, test3;

        test = "test";
        test1 = "test1";
        test2 = "test2";
        test3 = "test3";

        recman = newRecordManager();



        BTree tree = BTree.createInstance( recman);

        BPage page = new BPage( tree, test, test );

        TupleBrowser browser;
        Tuple tuple = new Tuple();

        // test insertion
        page.insert( 1, test2, test2, false );
        page.insert( 1, test3, test3, false );
        page.insert( 1, test1, test1, false );

        // test binary search
        browser = page.find( 1, test2 );
        if ( browser.getNext( tuple ) == false ) {
            throw new IllegalStateException( "Browser didn't have 'test2'" );
        }
        if ( ! tuple.getKey().equals( test2 ) ) {
            throw new IllegalStateException( "Tuple key is not 'test2'" );
        }
        if ( ! tuple.getValue().equals( test2 ) ) {
            throw new IllegalStateException( "Tuple value is not 'test2'" );
        }

        recman.close();
        recman = null;
    }
View Full Code Here

     *  Test constructor
     */
    public void testCtor()
        throws Exception
    {
        RecordManager recman;

        recman = newRecordManager();
        recman.close();
    }
View Full Code Here

     *  Test basics
     */
    public void testBasics()
        throws Exception
    {
        RecordManager recman;

        recman = newRecordManager();

        // insert a 10,000 byte record.
        byte[] data = UtilTT.makeRecord(10000, (byte) 1);
        long rowid = recman.insert(data);
        assertTrue("check data1",
               UtilTT.checkRecord((byte[]) recman.fetch(rowid), 10000, (byte) 1) );

        // update it as a 20,000 byte record.
        data = UtilTT.makeRecord(20000, (byte) 2);
        recman.update(rowid, data);
        assertTrue("check data2",
               UtilTT.checkRecord((byte[]) recman.fetch(rowid), 20000, (byte) 2) );

        // insert a third record.
        data = UtilTT.makeRecord(20, (byte) 3);
        long rowid2 = recman.insert(data);
        assertTrue("check data3",
               UtilTT.checkRecord((byte[]) recman.fetch(rowid2), 20, (byte) 3) );

        // now, grow the first record again
        data = UtilTT.makeRecord(30000, (byte) 4);
        recman.update(rowid, data);
        assertTrue("check data4",
               UtilTT.checkRecord((byte[]) recman.fetch(rowid), 30000, (byte) 4) );


        // delete the record
        recman.delete(rowid);

        // close the file
        recman.close();
    }
View Full Code Here

TOP

Related Classes of jdbm.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.