You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2010/05/01 21:43:56 UTC

svn commit: r940097 - in /directory/apacheds/trunk: avl-partition/src/main/java/org/apache/directory/server/core/partition/avl/ jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/ xdbm-base/src/main/java/org/apache/dire...

Author: seelmann
Date: Sat May  1 19:43:55 2010
New Revision: 940097

URL: http://svn.apache.org/viewvc?rev=940097&view=rev
Log:
Use UUID index for walking all entries. Adapted tests as UUID index doesn't garantee insert time ordering.

Modified:
    directory/apacheds/trunk/avl-partition/src/main/java/org/apache/directory/server/core/partition/avl/AvlStore.java
    directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmStore.java
    directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java
    directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/Tuple.java
    directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/GreaterEqTest.java
    directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/LessEqTest.java
    directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NestedFilterTest.java
    directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NotCursorTest.java
    directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/PresenceTest.java

Modified: directory/apacheds/trunk/avl-partition/src/main/java/org/apache/directory/server/core/partition/avl/AvlStore.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/avl-partition/src/main/java/org/apache/directory/server/core/partition/avl/AvlStore.java?rev=940097&r1=940096&r2=940097&view=diff
==============================================================================
--- directory/apacheds/trunk/avl-partition/src/main/java/org/apache/directory/server/core/partition/avl/AvlStore.java (original)
+++ directory/apacheds/trunk/avl-partition/src/main/java/org/apache/directory/server/core/partition/avl/AvlStore.java Sat May  1 19:43:55 2010
@@ -164,14 +164,5 @@ public class AvlStore<E> extends Abstrac
     {
         return 0L;
     }
-
-    /**
-     * {@inheritDoc}
-     */
-    public Index<String, E, Long> getNdnIndex()
-    {
-        // FIXME should this be entryUuidIdx?
-        return getEntryCsnIndex();
-    }
     
 }

Modified: directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmStore.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmStore.java?rev=940097&r1=940096&r2=940097&view=diff
==============================================================================
--- directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmStore.java (original)
+++ directory/apacheds/trunk/jdbm-store/src/main/java/org/apache/directory/server/core/partition/impl/btree/jdbm/JdbmStore.java Sat May  1 19:43:55 2010
@@ -68,7 +68,8 @@ public class JdbmStore<E> extends Abstra
     {
         return 1L;
     };
-    
+
+
     @Override
     protected Long getRootId()
     {
@@ -236,7 +237,7 @@ public class JdbmStore<E> extends Abstra
     protected Index<?, E, Long> convertAndInit( Index<?, E, Long> index ) throws Exception
     {
         JdbmIndex<?, E> jdbmIndex;
-        if( index.getAttributeId().equals( ApacheSchemaConstants.APACHE_RDN_AT_OID ) )
+        if ( index.getAttributeId().equals( ApacheSchemaConstants.APACHE_RDN_AT_OID ) )
         {
             jdbmIndex = new JdbmRdnIndex();
             jdbmIndex.setAttributeId( ApacheSchemaConstants.APACHE_RDN_AT_OID );
@@ -264,37 +265,4 @@ public class JdbmStore<E> extends Abstra
         return jdbmIndex;
     }
 
-
-    /**
-     * {@inheritDoc}
-     */
-    public Index<String, E, Long> getNdnIndex()
-    {
-        // FIXME should this be entryUuidIdx?
-        return getEntryCsnIndex();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    
-
-
 }

Modified: directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java?rev=940097&r1=940096&r2=940097&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java (original)
+++ directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/AbstractStore.java Sat May  1 19:43:55 2010
@@ -553,7 +553,7 @@ public abstract class AbstractStore<E, I
     @SuppressWarnings("unchecked")
     public Index<String, E, ID> getNdnIndex()
     {
-        return ( Index<String, E, ID> ) systemIndices.get( ApacheSchemaConstants.APACHE_N_DN_AT_OID );
+        return getEntryUuidIndex();
     }
 
 

Modified: directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/Tuple.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/Tuple.java?rev=940097&r1=940096&r2=940097&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/Tuple.java (original)
+++ directory/apacheds/trunk/xdbm-base/src/main/java/org/apache/directory/server/xdbm/Tuple.java Sat May  1 19:43:55 2010
@@ -137,6 +137,59 @@ public class Tuple<K, V>
     }
 
 
+    @Override
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ( ( key == null ) ? 0 : key.hashCode() );
+        result = prime * result + ( ( value == null ) ? 0 : value.hashCode() );
+        return result;
+    }
+
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        if ( obj == null )
+        {
+            return false;
+        }
+        if ( getClass() != obj.getClass() )
+        {
+            return false;
+        }
+        Tuple other = ( Tuple ) obj;
+        if ( key == null )
+        {
+            if ( other.key != null )
+            {
+                return false;
+            }
+        }
+        else if ( !key.equals( other.key ) )
+        {
+            return false;
+        }
+        if ( value == null )
+        {
+            if ( other.value != null )
+            {
+                return false;
+            }
+        }
+        else if ( !value.equals( other.value ) )
+        {
+            return false;
+        }
+        return true;
+    }
+
+
     public String toString()
     {
         StringBuilder buf = new StringBuilder();

Modified: directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/GreaterEqTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/GreaterEqTest.java?rev=940097&r1=940096&r2=940097&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/GreaterEqTest.java (original)
+++ directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/GreaterEqTest.java Sat May  1 19:43:55 2010
@@ -28,7 +28,9 @@ import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.UUID;
 
 import org.apache.commons.io.FileUtils;
@@ -36,6 +38,7 @@ import org.apache.directory.server.core.
 import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmStore;
 import org.apache.directory.server.xdbm.ForwardIndexEntry;
 import org.apache.directory.server.xdbm.Store;
+import org.apache.directory.server.xdbm.Tuple;
 import org.apache.directory.server.xdbm.tools.StoreUtils;
 import org.apache.directory.shared.ldap.constants.SchemaConstants;
 import org.apache.directory.shared.ldap.csn.CsnFactory;
@@ -421,28 +424,20 @@ public class GreaterEqTest
 
         // ---------- test beforeFirst() ----------
 
+        Set<Tuple<String, Long>> set = new HashSet<Tuple<String, Long>>();
         cursor.beforeFirst();
         assertFalse( cursor.available() );
 
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 5L, ( long ) cursor.get().getId() );
-        assertEquals( "3", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 6L, ( long ) cursor.get().getId() );
-        assertEquals( "4", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 7L, ( long ) cursor.get().getId() );
-        assertEquals( "5", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 8L, ( long ) cursor.get().getId() );
-        assertEquals( "6", cursor.get().getValue() );
+        while ( cursor.next() )
+        {
+            assertTrue( cursor.available() );
+            set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
+        }
+        assertEquals( 4, set.size() );
+        assertTrue( set.contains( new Tuple<String, Long>( "3", 5L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "4", 6L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "5", 7L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "6", 8L ) ) );
 
         assertFalse( cursor.next() );
         assertFalse( cursor.available() );
@@ -452,28 +447,23 @@ public class GreaterEqTest
 
         // ---------- test first() ----------
 
+        set.clear();
         cursor = new GreaterEqCursor( store, evaluator );
-        cursor.beforeFirst();
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 5L, ( long ) cursor.get().getId() );
-        assertEquals( "3", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 6L, ( long ) cursor.get().getId() );
-        assertEquals( "4", cursor.get().getValue() );
+        cursor.first();
 
-        assertTrue( cursor.next() );
         assertTrue( cursor.available() );
-        assertEquals( 7L, ( long ) cursor.get().getId() );
-        assertEquals( "5", cursor.get().getValue() );
+        set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
 
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 8L, ( long ) cursor.get().getId() );
-        assertEquals( "6", cursor.get().getValue() );
+        while ( cursor.next() )
+        {
+            assertTrue( cursor.available() );
+            set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
+        }
+        assertEquals( 4, set.size() );
+        assertTrue( set.contains( new Tuple<String, Long>( "3", 5L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "4", 6L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "5", 7L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "6", 8L ) ) );
 
         assertFalse( cursor.next() );
         assertFalse( cursor.available() );
@@ -483,56 +473,44 @@ public class GreaterEqTest
 
         // ---------- test afterLast() ----------
 
+        set.clear();
         cursor = new GreaterEqCursor( store, evaluator );
         cursor.afterLast();
         assertFalse( cursor.available() );
 
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 8L, ( long ) cursor.get().getId() );
-        assertEquals( "6", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 7L, ( long ) cursor.get().getId() );
-        assertEquals( "5", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 6L, ( long ) cursor.get().getId() );
-        assertEquals( "4", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 5L, ( long ) cursor.get().getId() );
-        assertEquals( "3", cursor.get().getValue() );
+        while ( cursor.previous() )
+        {
+            assertTrue( cursor.available() );
+            set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
+        }
+        assertEquals( 4, set.size() );
+        assertTrue( set.contains( new Tuple<String, Long>( "3", 5L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "4", 6L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "5", 7L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "6", 8L ) ) );
 
         assertFalse( cursor.previous() );
         assertFalse( cursor.available() );
 
         // ---------- test last() ----------
 
+        set.clear();
         cursor = new GreaterEqCursor( store, evaluator );
         cursor.last();
 
         assertTrue( cursor.available() );
-        assertEquals( 8L, ( long ) cursor.get().getId() );
-        assertEquals( "6", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 7L, ( long ) cursor.get().getId() );
-        assertEquals( "5", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 6L, ( long ) cursor.get().getId() );
-        assertEquals( "4", cursor.get().getValue() );
+        set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
 
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 5L, ( long ) cursor.get().getId() );
-        assertEquals( "3", cursor.get().getValue() );
+        while ( cursor.previous() )
+        {
+            assertTrue( cursor.available() );
+            set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
+        }
+        assertEquals( 4, set.size() );
+        assertTrue( set.contains( new Tuple<String, Long>( "3", 5L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "4", 6L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "5", 7L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "6", 8L ) ) );
 
         assertFalse( cursor.previous() );
         assertFalse( cursor.available() );

Modified: directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/LessEqTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/LessEqTest.java?rev=940097&r1=940096&r2=940097&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/LessEqTest.java (original)
+++ directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/LessEqTest.java Sat May  1 19:43:55 2010
@@ -28,7 +28,9 @@ import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.UUID;
 
 import org.apache.commons.io.FileUtils;
@@ -36,13 +38,14 @@ import org.apache.directory.server.core.
 import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmStore;
 import org.apache.directory.server.xdbm.ForwardIndexEntry;
 import org.apache.directory.server.xdbm.Store;
+import org.apache.directory.server.xdbm.Tuple;
 import org.apache.directory.server.xdbm.tools.StoreUtils;
 import org.apache.directory.shared.ldap.constants.SchemaConstants;
 import org.apache.directory.shared.ldap.csn.CsnFactory;
 import org.apache.directory.shared.ldap.cursor.InvalidCursorPositionException;
 import org.apache.directory.shared.ldap.entry.DefaultEntry;
-import org.apache.directory.shared.ldap.entry.StringValue;
 import org.apache.directory.shared.ldap.entry.Entry;
+import org.apache.directory.shared.ldap.entry.StringValue;
 import org.apache.directory.shared.ldap.filter.LessEqNode;
 import org.apache.directory.shared.ldap.name.DN;
 import org.apache.directory.shared.ldap.schema.AttributeType;
@@ -441,33 +444,21 @@ public class LessEqTest
 
         // ---------- test beforeFirst() ----------
 
+        Set<Tuple<String, Long>> set = new HashSet<Tuple<String, Long>>();
         cursor.beforeFirst();
         assertFalse( cursor.available() );
 
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 1L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 2L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 3L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 4L, ( long ) cursor.get().getId() );
-        assertEquals( "2", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 5L, ( long ) cursor.get().getId() );
-        assertEquals( "3", cursor.get().getValue() );
+        while ( cursor.next() )
+        {
+            assertTrue( cursor.available() );
+            set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
+        }
+        assertEquals( 5, set.size() );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 1L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 2L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 3L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "2", 4L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "3", 5L ) ) );
 
         assertFalse( cursor.next() );
         assertFalse( cursor.available() );
@@ -477,32 +468,24 @@ public class LessEqTest
 
         // ---------- test beforeFirst() ----------
 
+        set.clear();
         cursor = new LessEqCursor( store, evaluator );
         cursor.first();
 
         assertTrue( cursor.available() );
-        assertEquals( 1L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
+        set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
 
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 2L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
-        
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 3L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 4L, ( long ) cursor.get().getId() );
-        assertEquals( "2", cursor.get().getValue() );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 5L, ( long ) cursor.get().getId() );
-        assertEquals( "3", cursor.get().getValue() );
+        while ( cursor.next() )
+        {
+            assertTrue( cursor.available() );
+            set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
+        }
+        assertEquals( 5, set.size() );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 1L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 2L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 3L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "2", 4L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "3", 5L ) ) );
 
         assertFalse( cursor.next() );
         assertFalse( cursor.available() );
@@ -512,66 +495,46 @@ public class LessEqTest
 
         // ---------- test afterLast() ----------
 
+        set.clear();
         cursor = new LessEqCursor( store, evaluator );
         cursor.afterLast();
         assertFalse( cursor.available() );
 
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 5L, ( long ) cursor.get().getId() );
-        assertEquals( "3", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 4L, ( long ) cursor.get().getId() );
-        assertEquals( "2", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 3L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 2L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 1L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
+        while ( cursor.previous() )
+        {
+            assertTrue( cursor.available() );
+            set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
+        }
+        assertEquals( 5, set.size() );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 1L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 2L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 3L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "2", 4L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "3", 5L ) ) );
 
         assertFalse( cursor.previous() );
         assertFalse( cursor.available() );
 
         // ---------- test last() ----------
 
+        set.clear();
         cursor = new LessEqCursor( store, evaluator );
         cursor.last();
 
         assertTrue( cursor.available() );
-        assertEquals( 5L, ( long ) cursor.get().getId() );
-        assertEquals( "3", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 4L, ( long ) cursor.get().getId() );
-        assertEquals( "2", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 3L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 2L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
+        set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
 
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 1L, ( long ) cursor.get().getId() );
-        assertEquals( "1", cursor.get().getValue() );
+        while ( cursor.previous() )
+        {
+            assertTrue( cursor.available() );
+            set.add( new Tuple<String, Long>( cursor.get().getValue(), cursor.get().getId() ) );
+        }
+        assertEquals( 5, set.size() );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 1L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 2L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "1", 3L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "2", 4L ) ) );
+        assertTrue( set.contains( new Tuple<String, Long>( "3", 5L ) ) );
 
         assertFalse( cursor.previous() );
         assertFalse( cursor.available() );

Modified: directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NestedFilterTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NestedFilterTest.java?rev=940097&r1=940096&r2=940097&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NestedFilterTest.java (original)
+++ directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NestedFilterTest.java Sat May  1 19:43:55 2010
@@ -26,12 +26,15 @@ import static org.junit.Assert.assertTru
 import static org.junit.Assert.fail;
 
 import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex;
 import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmStore;
 import org.apache.directory.server.xdbm.IndexCursor;
 import org.apache.directory.server.xdbm.Store;
+import org.apache.directory.server.xdbm.Tuple;
 import org.apache.directory.server.xdbm.search.Optimizer;
 import org.apache.directory.server.xdbm.tools.StoreUtils;
 import org.apache.directory.shared.ldap.constants.SchemaConstants;
@@ -46,6 +49,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.shared.ldap.schema.normalizers.ConcreteNameComponentNormalizer;
 import org.apache.directory.shared.ldap.schema.syntaxCheckers.CsnSyntaxChecker;
+import org.apache.directory.shared.ldap.schema.syntaxCheckers.UuidSyntaxChecker;
 import org.apache.directory.shared.ldap.util.ExceptionUtils;
 import org.junit.After;
 import org.junit.Before;
@@ -215,22 +219,23 @@ public class NestedFilterTest
     {
         String filter = "(&(|(postalCode=5)(postalCode=6))(!(ou=sales)))";
 
-        CsnSyntaxChecker csnSynChecker = new CsnSyntaxChecker();
-        
+        UuidSyntaxChecker uuidSynChecker = new UuidSyntaxChecker();
+
         ExprNode exprNode = FilterParser.parse( filter );
         optimizer.annotate( exprNode );
 
         IndexCursor<?, Entry, Long> cursor = cursorBuilder.build( exprNode );
 
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 7, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 8, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
+        Set<Long> set = new HashSet<Long>();
+        while ( cursor.next() )
+        {
+            assertTrue( cursor.available() );
+            set.add( cursor.get().getId() );
+            assertTrue( uuidSynChecker.isValidSyntax( cursor.get().getValue() ) );
+        }
+        assertEquals( 2, set.size() );
+        assertTrue( set.contains( 7L ) );
+        assertTrue( set.contains( 8L ) );
 
         assertFalse( cursor.next() );
     }

Modified: directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NotCursorTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NotCursorTest.java?rev=940097&r1=940096&r2=940097&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NotCursorTest.java (original)
+++ directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/NotCursorTest.java Sat May  1 19:43:55 2010
@@ -26,6 +26,8 @@ import static org.junit.Assert.assertTru
 import static org.junit.Assert.fail;
 
 import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex;
@@ -50,6 +52,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.schema.manager.impl.DefaultSchemaManager;
 import org.apache.directory.shared.ldap.schema.syntaxCheckers.CsnSidSyntaxChecker;
 import org.apache.directory.shared.ldap.schema.syntaxCheckers.CsnSyntaxChecker;
+import org.apache.directory.shared.ldap.schema.syntaxCheckers.UuidSyntaxChecker;
 import org.apache.directory.shared.ldap.util.ExceptionUtils;
 import org.junit.After;
 import org.junit.Before;
@@ -70,8 +73,8 @@ public class NotCursorTest
 {
     private static final Logger LOG = LoggerFactory.getLogger( NotCursorTest.class.getSimpleName() );
 
-    CsnSyntaxChecker csnSynChecker = new CsnSyntaxChecker();
-    
+    UuidSyntaxChecker uuidSynChecker = new UuidSyntaxChecker();
+
     File wkdir;
     Store<Entry, Long> store;
     static SchemaManager schemaManager = null;
@@ -174,31 +177,19 @@ public class NotCursorTest
 
         cursor.beforeFirst();
 
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 1, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 2, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 3, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 4, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 7, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
+        Set<Long> set = new HashSet<Long>();
+        while ( cursor.next() )
+        {
+            assertTrue( cursor.available() );
+            set.add( cursor.get().getId() );
+            assertTrue( uuidSynChecker.isValidSyntax( cursor.get().getValue() ) );
+        }
+        assertEquals( 5, set.size() );
+        assertTrue( set.contains( 1L ) );
+        assertTrue( set.contains( 2L ) );
+        assertTrue( set.contains( 3L ) );
+        assertTrue( set.contains( 4L ) );
+        assertTrue( set.contains( 7L ) );
 
         assertFalse( cursor.next() );
         assertFalse( cursor.available() );
@@ -214,69 +205,45 @@ public class NotCursorTest
         NotNode notNode = new NotNode();
 
         ExprNode exprNode = new SubstringNode( "cn", "J", null );
-        Evaluator<? extends ExprNode, Entry, Long> eval = new SubstringEvaluator( ( SubstringNode ) exprNode,
-            store, schemaManager );
+        Evaluator<? extends ExprNode, Entry, Long> eval = new SubstringEvaluator( ( SubstringNode ) exprNode, store,
+            schemaManager );
         notNode.addNode( exprNode );
 
         NotCursor<String, Long> cursor = new NotCursor( store, eval ); //cursorBuilder.build( andNode );
+        cursor.beforeFirst();
 
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 1, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        cursor.first();
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 2, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 3, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 4, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 7, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
+        Set<Long> set = new HashSet<Long>();
+        while ( cursor.next() )
+        {
+            assertTrue( cursor.available() );
+            set.add( cursor.get().getId() );
+            assertTrue( uuidSynChecker.isValidSyntax( cursor.get().getValue() ) );
+        }
+        assertEquals( 5, set.size() );
+        assertTrue( set.contains( 1L ) );
+        assertTrue( set.contains( 2L ) );
+        assertTrue( set.contains( 3L ) );
+        assertTrue( set.contains( 4L ) );
+        assertTrue( set.contains( 7L ) );
 
         assertFalse( cursor.next() );
         assertFalse( cursor.available() );
 
         cursor.afterLast();
 
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 7, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        cursor.last();
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 4, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 3, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 2, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
-
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( 1, ( long ) cursor.get().getId() );
-        assertTrue( csnSynChecker.isValidSyntax( cursor.get().getValue() ) );
+        set.clear();
+        while ( cursor.previous() )
+        {
+            assertTrue( cursor.available() );
+            set.add( cursor.get().getId() );
+            assertTrue( uuidSynChecker.isValidSyntax( cursor.get().getValue() ) );
+        }
+        assertEquals( 5, set.size() );
+        assertTrue( set.contains( 1L ) );
+        assertTrue( set.contains( 2L ) );
+        assertTrue( set.contains( 3L ) );
+        assertTrue( set.contains( 4L ) );
+        assertTrue( set.contains( 7L ) );
 
         assertFalse( cursor.previous() );
         assertFalse( cursor.available() );

Modified: directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/PresenceTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/PresenceTest.java?rev=940097&r1=940096&r2=940097&view=diff
==============================================================================
--- directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/PresenceTest.java (original)
+++ directory/apacheds/trunk/xdbm-search/src/test/java/org/apache/directory/server/xdbm/search/impl/PresenceTest.java Sat May  1 19:43:55 2010
@@ -27,7 +27,9 @@ import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex;
@@ -301,15 +303,19 @@ public class PresenceTest
         assertTrue( cursor.isElementReused() );
 
         cursor.beforeFirst();
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 5, ( long ) cursor.get().getId() );
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 6, ( long ) cursor.get().getId() );
-        assertTrue( cursor.next() );
-        assertTrue( cursor.available() );
-        assertEquals( 8, ( long ) cursor.get().getId() );
+
+        Set<Long> set = new HashSet<Long>();
+        while ( cursor.next() )
+        {
+            assertTrue( cursor.available() );
+            assertEquals( SchemaConstants.SN_AT_OID, cursor.get().getValue() );
+            set.add( cursor.get().getId() );
+        }
+        assertEquals( 3, set.size() );
+        assertTrue( set.contains( 5L ) );
+        assertTrue( set.contains( 6L ) );
+        assertTrue( set.contains( 8L ) );
+
         assertFalse( cursor.next() );
         assertFalse( cursor.available() );
 
@@ -331,23 +337,20 @@ public class PresenceTest
         assertEquals( SchemaConstants.SN_AT_OID, cursor.get().getValue() );
 
         // test afterLast()
+        set.clear();
         cursor.afterLast();
         assertFalse( cursor.available() );
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( SchemaConstants.SN_AT_OID, cursor.get().getValue() );
-        assertEquals( 8, ( long ) cursor.get().getId() );
-
-        // keep testing previous
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( SchemaConstants.SN_AT_OID, cursor.get().getValue() );
-        assertEquals( 6, ( long ) cursor.get().getId() );
 
-        assertTrue( cursor.previous() );
-        assertTrue( cursor.available() );
-        assertEquals( SchemaConstants.SN_AT_OID, cursor.get().getValue() );
-        assertEquals( 5, ( long ) cursor.get().getId() );
+        while ( cursor.previous() )
+        {
+            assertTrue( cursor.available() );
+            assertEquals( SchemaConstants.SN_AT_OID, cursor.get().getValue() );
+            set.add( cursor.get().getId() );
+        }
+        assertEquals( 3, set.size() );
+        assertTrue( set.contains( 5L ) );
+        assertTrue( set.contains( 6L ) );
+        assertTrue( set.contains( 8L ) );
 
         assertFalse( cursor.previous() );
         assertFalse( cursor.available() );