directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From akaras...@apache.org
Subject svn commit: r604677 - in /directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src: main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/ test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/ test/resou...
Date Sun, 16 Dec 2007 19:53:08 GMT
Author: akarasulu
Date: Sun Dec 16 11:53:07 2007
New Revision: 604677

URL: http://svn.apache.org/viewvc?rev=604677&view=rev
Log:
more tests, log file, new key cursor

Added:
    directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursor.java
  (contents, props changed)
      - copied, changed from r604489, directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/BTreeCursor.java
    directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/TupleCursor.java
      - copied, changed from r604489, directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/BTreeTupleCursor.java
    directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursorTest.java
    directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/resources/
    directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/resources/log4j.properties
  (with props)

Copied: directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursor.java
(from r604489, directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/BTreeCursor.java)
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursor.java?p2=directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursor.java&p1=directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/BTreeCursor.java&r1=604489&r2=604677&rev=604677&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/BTreeCursor.java
(original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursor.java
Sun Dec 16 11:53:07 2007
@@ -16,28 +16,34 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.directory.server.core.partition.impl.btree.jdbm;
+package org.apache.directory.server.core.partition.impl.btree.jdbm.cursor;
 
 
 import jdbm.btree.BTree;
 import jdbm.helper.Tuple;
 import jdbm.helper.TupleBrowser;
+
 import org.apache.directory.server.core.cursor.AbstractCursor;
 import org.apache.directory.server.core.cursor.InconsistentCursorStateException;
 import org.apache.directory.server.core.cursor.InvalidCursorPositionException;
+import org.apache.directory.shared.ldap.NotImplementedException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 
 
 /**
- * @TODO you better test me man!!!
+ * Cursor over the keys of a JDBM BTree.  Obviously does not return duplicate
+ * keys since JDBM does not natively support multiple values for the same key.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
  */
-public class BTreeCursor extends AbstractCursor
+public class KeyCursor<E> extends AbstractCursor<E>
 {
-    private final jdbm.helper.Tuple jdbmTuple = new Tuple();
+    private static final Logger LOG = LoggerFactory.getLogger( KeyCursor.class );
+    private final Tuple jdbmTuple = new Tuple();
 
     private BTree btree;
     private TupleBrowser browser;
@@ -48,13 +54,37 @@
     private boolean success;
 
 
-    BTreeCursor( BTree btree ) throws IOException
+    /**
+     * Creates a Cursor over the keys of a JDBM BTree.
+     *
+     * @param btree the JDBM BTree
+     * @throws IOException of there are problems accessing the BTree
+     */
+    KeyCursor( BTree btree ) throws IOException
     {
         this.btree = btree;
         beforeFirst();
     }
 
 
+    public void before( E element ) throws IOException
+    {
+        browser = btree.browse( element );
+        pos = UNDEFINED;
+        success = false;
+        afterLast = false;
+        beforeFirst = false;
+        jdbmTuple.setKey( null );
+        jdbmTuple.setValue( null );
+    }
+
+
+    public void after( E element ) throws IOException
+    {
+        throw new NotImplementedException();
+    }
+
+
     public void beforeFirst() throws IOException
     {
         if ( ! beforeFirst )
@@ -83,71 +113,6 @@
     }
 
 
-    public boolean absolute( int absolutePosition ) throws IOException
-    {
-        // -------------------------------------------------------------------
-        // Special cases under or above the valid range puts the cursor
-        // respectively before the first or after the last position
-        // -------------------------------------------------------------------
-
-        if ( absolutePosition >= size )
-        {
-            afterLast();
-            return false;
-        }
-
-        if ( absolutePosition < 0 )
-        {
-            beforeFirst();
-            return false;
-        }
-
-        // -------------------------------------------------------------------
-        // Special case where position is valid and that's the new position
-        // -------------------------------------------------------------------
-
-        if ( absolutePosition == pos )
-        {
-            return success;
-        }
-
-        // -------------------------------------------------------------------
-        // Special easy to get to cases where we don't have to walk the tree
-        // -------------------------------------------------------------------
-
-        if ( absolutePosition == 0 && beforeFirst )
-        {
-            return next();
-        }
-
-        if ( ( absolutePosition == size - 1  ) && afterLast )
-        {
-            return previous();
-        }
-
-        // -------------------------------------------------------------------
-        // Cases we have to walk the tree forward or backwards to get to target
-        // -------------------------------------------------------------------
-
-        if ( absolutePosition > pos )
-        {
-            while ( success && pos < absolutePosition )
-            {
-                next();
-            }
-        }
-        else
-        {
-            while ( success && pos > absolutePosition )
-            {
-                previous();
-            }
-        }
-
-        return success;
-    }
-
-
     public boolean relative( int relativePosition ) throws IOException
     {
         // -------------------------------------------------------------------
@@ -338,7 +303,7 @@
 
 
 
-    public Object get() throws IOException
+    public E get() throws IOException
     {
         if ( ! inRangeOnValue() )
         {
@@ -347,7 +312,8 @@
 
         if ( success )
         {
-            return jdbmTuple.getKey();
+            //noinspection unchecked
+            return ( E ) jdbmTuple.getKey();
         }
         else
         {

Propchange: directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursor.java
------------------------------------------------------------------------------
    svn:executable = *

Copied: directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/TupleCursor.java
(from r604489, directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/BTreeTupleCursor.java)
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/TupleCursor.java?p2=directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/TupleCursor.java&p1=directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/BTreeTupleCursor.java&r1=604489&r2=604677&rev=604677&view=diff
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/BTreeTupleCursor.java
(original)
+++ directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/TupleCursor.java
Sun Dec 16 11:53:07 2007
@@ -16,55 +16,54 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.directory.server.core.partition.impl.btree.jdbm;
+package org.apache.directory.server.core.partition.impl.btree.jdbm.cursor;
 
 
-import org.apache.directory.server.core.cursor.Cursor;
-import org.apache.directory.server.core.cursor.AbstractCursor;
-import org.apache.directory.server.core.partition.impl.btree.Tuple;
-import org.apache.directory.server.core.partition.impl.btree.TupleBrowserFactory;
-import org.apache.directory.server.core.partition.impl.btree.TupleBrowser;
 import org.apache.directory.shared.ldap.NotImplementedException;
+import org.apache.directory.server.core.cursor.AbstractCursor;
 
 import java.io.IOException;
 import java.util.Comparator;
 
+import jdbm.helper.Tuple;
+import jdbm.helper.TupleBrowser;
+import jdbm.btree.BTree;
+
 
 /**
- * Document me!
+ * Cursor over the Tuples of a JDBM BTree.  Duplicate keys are not supported
+ * by JDBM natively so you will not see duplicate keys.
  *
  * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
  * @version $Rev$, $Date$
  */
-public class BTreeTupleCursor extends AbstractCursor<Tuple>
+public class TupleCursor extends AbstractCursor<Tuple>
 {
     private final Object key;
-    private final Tuple tuple = new Tuple();
-    private final TupleBrowserFactory factory;
     private final Comparator comparator;
+    private final BTree btree;
 
-    private jdbm.helper.Tuple jdbmTuple = new jdbm.helper.Tuple();
+    private Tuple tuple = new Tuple();
     private TupleBrowser browser;
     private boolean success;
 
 
-
-    public BTreeTupleCursor( TupleBrowserFactory factory, Object key, Comparator comparator
)
+    public TupleCursor( BTree btree, Object key, Comparator comparator )
             throws IOException
     {
         this.key = key;
-        this.factory = factory;
+        this.btree = btree;
         this.comparator = comparator;
     }
 
 
-    public boolean before( Tuple element ) throws IOException
+    public void before( Tuple element ) throws IOException
     {
         throw new NotImplementedException();
     }
 
 
-    public boolean after( Tuple element ) throws IOException
+    public void after( Tuple element ) throws IOException
     {
         throw new NotImplementedException();
     }

Added: directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursorTest.java
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursorTest.java?rev=604677&view=auto
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursorTest.java
(added)
+++ directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/java/org/apache/directory/server/core/partition/impl/btree/jdbm/cursor/KeyCursorTest.java
Sun Dec 16 11:53:07 2007
@@ -0,0 +1,272 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.directory.server.core.partition.impl.btree.jdbm.cursor;
+
+
+import org.junit.*;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
+import static org.junit.Assert.assertNull;
+
+import org.apache.directory.server.core.cursor.Cursor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import jdbm.RecordManager;
+import jdbm.helper.StringComparator;
+import jdbm.helper.TupleBrowser;
+import jdbm.helper.Tuple;
+import jdbm.btree.BTree;
+import jdbm.recman.BaseRecordManager;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Comparator;
+
+
+
+/**
+ * Document me!
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class KeyCursorTest
+{
+    private static final Logger LOG = LoggerFactory.getLogger( KeyCursorTest.class.getSimpleName()
);
+    private static final byte[] EMPTY_BYTES = new byte[0];
+    private static final String TEST_OUTPUT_PATH = "test.output.path";
+
+    File dbFile;
+    RecordManager recman;
+    BTree bt;
+    Comparator comparator;
+
+    KeyCursor<String> cursor;
+
+
+    @Before
+    public void createCursor() throws Exception
+    {
+        File tmpDir = null;
+        if ( System.getProperty( TEST_OUTPUT_PATH, null ) != null )
+        {
+            tmpDir = new File( System.getProperty( TEST_OUTPUT_PATH ) );
+        }
+
+        dbFile = File.createTempFile( KeyCursorTest.class.getName(), "db", tmpDir );
+        recman = new BaseRecordManager( dbFile.getAbsolutePath() );
+        comparator = new StringComparator();
+        bt = BTree.createInstance( recman, comparator );
+
+        // add some data to it
+        bt.insert( "0", EMPTY_BYTES, true );
+        bt.insert( "1", EMPTY_BYTES, true );
+        bt.insert( "2", EMPTY_BYTES, true );
+        bt.insert( "3", EMPTY_BYTES, true );
+        bt.insert( "4", EMPTY_BYTES, true );
+        bt.insert( "5", EMPTY_BYTES, true );
+        bt.insert( "6", EMPTY_BYTES, true );
+        bt.insert( "7", EMPTY_BYTES, true );
+        bt.insert( "8", EMPTY_BYTES, true );
+        bt.insert( "9", EMPTY_BYTES, true );
+
+        cursor = new KeyCursor<String>( bt );
+    }
+
+
+    @After
+    public void destryCursor() throws Exception
+    {
+        recman.close();
+        recman = null;
+        dbFile.deleteOnExit();
+        dbFile = null;
+    }
+
+
+    @Test
+    @Ignore ( "Messed up now after removing absolute() method." )
+    public void testCursorAdvance() throws Exception
+    {
+        assertNotNull( cursor );
+
+        // test before changing newly created cursor
+        assertTrue( "New default Cursor should be before first element.", cursor.isBeforeFirst()
);
+        assertFalse( "New default Cursor should NOT be at the first element", cursor.isFirst()
);
+        assertFalse( "New default Cursor should NOT be after last element", cursor.isAfterLast()
);
+        assertFalse( "New default Cursor should NOT be at the last element", cursor.isLast()
);
+        assertInvalid( cursor );
+
+        // move to first position and test
+        assertTrue( "New default Cursor should be able to goto next position", cursor.next()
);
+        assertEquals( "First value should be recovered", "0", cursor.get() );
+        assertTrue( "After cursor.next() we should be above the first element", cursor.isFirst()
);
+        assertFalse( "After next() Cursor should be NOT before first element.", cursor.isBeforeFirst()
);
+        assertTrue( "After first next() Cursor should be at the first element", cursor.isFirst()
);
+        assertFalse( "After first next() Cursor should NOT be after last element", cursor.isAfterLast()
);
+        assertFalse( "After first next() Cursor should NOT be at the last element", cursor.isLast()
);
+
+        // move forward to 5th position over the "5"
+        assertTrue( "Cursor advance to index 5 should work.", cursor.relative( 4 ) );
+        assertEquals( "Cursor advance to index 5 should be \"5\"", "5", cursor.get() );
+        assertFalse( "Cursor @5th pos should NOT be before first element.", cursor.isBeforeFirst()
);
+        assertFalse( "Cursor @5th pos should NOT be at the first element", cursor.isFirst()
);
+        assertFalse( "Cursor @5th pos should NOT be after last element", cursor.isAfterLast()
);
+        assertFalse( "Cursor @5th pos should NOT be at the last element", cursor.isLast()
);
+
+        // move backwards to 2nd position over the "2"
+        assertTrue( "Cursor advance to index 2 should work.", cursor.relative( 2 ) );
+        assertEquals( "Element at index 2 value should be \"2\"", "2", cursor.get() );
+        assertFalse( "Cursor @2nd pos should NOT be before first element.", cursor.isBeforeFirst()
);
+        assertFalse( "Cursor @2nd pos should NOT be at the first element", cursor.isFirst()
);
+        assertFalse( "Cursor @2nd pos should NOT be after last element", cursor.isAfterLast()
);
+        assertFalse( "Cursor @2nd pos should NOT be at the last element", cursor.isLast()
);
+
+        // move backwards to 2nd position over the "9"
+        assertTrue( "Cursor advance to index 2 should work.", cursor.relative( 2 ) );
+        assertEquals( "Element at index 2 value should be \"2\"", "2", cursor.get() );
+        assertFalse( "Cursor @2nd pos should NOT be before first element.", cursor.isBeforeFirst()
);
+        assertFalse( "Cursor @2nd pos should NOT be at the first element", cursor.isFirst()
);
+        assertFalse( "Cursor @2nd pos should NOT be after last element", cursor.isAfterLast()
);
+        assertFalse( "Cursor @2nd pos should NOT be at the last element", cursor.isLast()
);
+
+        while ( cursor.next() )
+        {
+            System.out.println( cursor.get() );
+        }
+    }
+
+
+    @Test
+    public void testJdbmBehaviorBrowse() throws Exception
+    {
+        bt.remove( "0" );
+        bt.remove( "5" );
+        bt.remove( "6" );
+        bt.remove( "7" );
+        bt.remove( "9" );
+
+        assertNull( bt.find( "0" ) );
+        assertNotNull( bt.find( "1" ) );
+        assertNotNull( bt.find( "2" ) );
+        assertNotNull( bt.find( "3" ) );
+        assertNotNull( bt.find( "4" ) );
+        assertNull( bt.find( "5" ) );
+        assertNull( bt.find( "6" ) );
+        assertNull( bt.find( "7" ) );
+        assertNotNull( bt.find( "8" ) );
+        assertNull( bt.find( "9" ) );
+
+        // browse will position us right after "4" and getNext() will return 8
+        // since "5", "6", and "7" do not exist
+        TupleBrowser browser = bt.browse( "5" );
+        assertNotNull( browser );
+        Tuple tuple = new Tuple();
+        browser.getNext( tuple );
+        assertEquals( "8", tuple.getKey() );
+
+        // browse will position us right after "1" and getNext() will return 2
+        // since "2" exists.
+        browser = bt.browse( "2" );
+        assertNotNull( browser );
+        tuple = new Tuple();
+        browser.getNext( tuple );
+        assertEquals( "2", tuple.getKey() );
+
+        // browse will position us right after "8" and getNext() will null
+        // since nothing else exists past 8.  We've come to the end.
+        browser = bt.browse( "9" );
+        assertNotNull( browser );
+        tuple = new Tuple();
+        browser.getNext( tuple );
+        assertNull( tuple.getKey() );
+
+        // browse will position us right before "1" and getPrevious() will
+        // null since nothing else exists before 1.  We've come to the end.
+        // getNext() will however return "1".
+        browser = bt.browse( "0" );
+        assertNotNull( browser );
+        tuple = new Tuple();
+        browser.getPrevious( tuple );
+        assertNull( tuple.getKey() );
+        browser.getNext( tuple );
+        assertEquals( "1", tuple.getKey() );
+    }
+
+
+    @Test
+    @Ignore ( "This is a performance test and takes a while to run." )
+    public void testCostOfAdvances() throws Exception
+    {
+        final int capacity = 100000;
+        long startTime = System.nanoTime();
+        long startTimeMs = System.currentTimeMillis();
+
+        // fill up the BTree with a lot of data
+        for ( int ii = 10; ii < capacity; ii++ )
+        {
+            bt.insert( String.valueOf( ii ), EMPTY_BYTES, true );
+        }
+
+        long insertTime = System.nanoTime() - startTime;
+        long insertTimeMs = System.currentTimeMillis() - startTimeMs;
+        LOG.debug( "insertion of {} btree records took {} nano seconds", capacity, insertTime
);
+        LOG.debug( "insertion of {} btree records took {} milli seconds", capacity, insertTimeMs
);
+
+        cursor = new KeyCursor<String>( bt );
+        startTime = System.nanoTime();
+        startTimeMs = System.currentTimeMillis();
+        int advanceTo = capacity - 3;
+        assertTrue( cursor.relative( advanceTo ) );
+        long advanceTime = System.nanoTime() - startTime;
+        long advanceTimeMs = System.currentTimeMillis() - startTimeMs;
+        LOG.debug( "advance from before first to {}th record took {} nano seconds", advanceTo,
advanceTime );
+        LOG.debug( "advance from before first to {}th record took {} milli seconds", advanceTo,
advanceTimeMs );
+        assertEquals( String.valueOf( advanceTo ), cursor.get() );
+
+        startTime = System.nanoTime();
+        startTimeMs = System.currentTimeMillis();
+        TupleBrowser browser = bt.browse( String.valueOf( advanceTo ) );
+        Tuple tuple = new Tuple();
+        browser.getNext( tuple );
+        long byKeyTime = System.nanoTime() - startTime;
+        long byKeyTimeMs = System.currentTimeMillis() - startTimeMs;
+        LOG.debug( "advance by key to {}th record took {} nano seconds", advanceTo, byKeyTime
);
+        LOG.debug( "advance by key to {}th record took {} milli seconds", advanceTo, byKeyTimeMs
);
+        assertEquals( String.valueOf( advanceTo ), tuple.getKey() );
+    }
+
+
+    private void assertInvalid( Cursor<String> cursor )
+    {
+        try
+        {
+            cursor.get();
+            fail( "Invalid Cursor should not return valid value from get()" );
+        }
+        catch ( IOException e )
+        {
+            assertNotNull( e );
+        }
+    }
+}
\ No newline at end of file

Added: directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/resources/log4j.properties?rev=604677&view=auto
==============================================================================
--- directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/resources/log4j.properties
(added)
+++ directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/resources/log4j.properties
Sun Dec 16 11:53:07 2007
@@ -0,0 +1,22 @@
+#############################################################################
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#    the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+#############################################################################
+log4j.rootCategory=ERROR, stdout
+
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %p [%c] - %m%n
+

Propchange: directory/sandbox/akarasulu/bigbang/apacheds/jdbm-cursor/src/test/resources/log4j.properties
------------------------------------------------------------------------------
    svn:executable = *



Mime
View raw message