You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2007/12/09 05:36:59 UTC
svn commit: r602630 - in /directory/apacheds/branches/bigbang:
core-integ/src/test/java/org/apache/directory/server/core/
core-integ/src/test/java/org/apache/directory/server/core/jndi/
core-unit/src/test/java/org/apache/directory/server/core/
Author: akarasulu
Date: Sat Dec 8 20:36:58 2007
New Revision: 602630
URL: http://svn.apache.org/viewvc?rev=602630&view=rev
Log:
added more tests and renamed some: also moved them around a little bit for efficiently using existing up and running servers
Added:
directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchIT.java (contents, props changed)
- copied, changed from r602604, directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchContextIT.java
directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchWithIndicesITest.java (contents, props changed)
- copied, changed from r602604, directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/SearchOpsITest.java
Removed:
directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchContextIT.java
directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/SearchOpsITest.java
Modified:
directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/StockCoreISuite.java
Modified: directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/StockCoreISuite.java
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/StockCoreISuite.java?rev=602630&r1=602629&r2=602630&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/StockCoreISuite.java (original)
+++ directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/StockCoreISuite.java Sat Dec 8 20:36:58 2007
@@ -68,7 +68,7 @@
ModifyContextIT.class,
RFC2713IT.class,
RootDSEIT.class,
- SearchContextIT.class,
+ SearchIT.class,
UniqueMemberIT.class,
OperationalAttributeServiceIT.class,
PreferencesIT.class,
Copied: directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchIT.java (from r602604, directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchContextIT.java)
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchIT.java?p2=directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchIT.java&p1=directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchContextIT.java&r1=602604&r2=602630&rev=602630&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchContextIT.java (original)
+++ directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchIT.java Sat Dec 8 20:36:58 2007
@@ -25,6 +25,7 @@
import org.apache.directory.server.core.enumeration.SearchResultFilteringEnumeration;
import org.apache.directory.server.core.integ.CiRunner;
import static org.apache.directory.server.core.integ.IntegrationUtils.getSystemContext;
+import static org.apache.directory.server.core.integ.IntegrationUtils.getSchemaContext;
import org.apache.directory.server.core.invocation.Invocation;
import org.apache.directory.shared.ldap.constants.JndiPropertyConstants;
import org.apache.directory.shared.ldap.exception.LdapSizeLimitExceededException;
@@ -32,6 +33,7 @@
import org.apache.directory.shared.ldap.message.AliasDerefMode;
import org.apache.directory.shared.ldap.message.AttributeImpl;
import org.apache.directory.shared.ldap.message.AttributesImpl;
+import org.apache.directory.shared.ldap.message.ModificationItemImpl;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -41,6 +43,8 @@
import javax.naming.directory.*;
import javax.naming.ldap.LdapContext;
import java.util.HashMap;
+import java.util.Set;
+import java.util.HashSet;
/**
@@ -50,7 +54,7 @@
* @version $Rev$
*/
@RunWith ( CiRunner.class )
-public class SearchContextIT
+public class SearchIT
{
private static final String RDN = "cn=Heather Nova";
private static final String FILTER = "(objectclass=*)";
@@ -162,7 +166,6 @@
assertTrue( attribute.contains( "top" ) );
assertTrue( attribute.contains( "organizationalUnit" ) );
-
// Create entry cn=Heather Nova, ou=system
Attributes heather = new AttributesImpl();
Attribute ocls = new AttributeImpl( "objectClass" );
@@ -176,6 +179,49 @@
ctx = ( DirContext ) sysRoot.lookup( RDN );
assertNotNull( ctx );
+
+
+ // -------------------------------------------------------------------
+ // Enable the nis schema
+ // -------------------------------------------------------------------
+
+ // check if nis is disabled
+ LdapContext schemaRoot = getSchemaContext( service );
+ Attributes nisAttrs = schemaRoot.getAttributes( "cn=nis" );
+ boolean isNisDisabled = false;
+ if ( nisAttrs.get( "m-disabled" ) != null )
+ {
+ isNisDisabled = ( ( String ) nisAttrs.get( "m-disabled" ).get() ).equalsIgnoreCase( "TRUE" );
+ }
+
+ // if nis is disabled then enable it
+ if ( isNisDisabled )
+ {
+ Attribute disabled = new AttributeImpl( "m-disabled" );
+ ModificationItemImpl[] mods = new ModificationItemImpl[] {
+ new ModificationItemImpl( DirContext.REMOVE_ATTRIBUTE, disabled ) };
+ schemaRoot.modifyAttributes( "cn=nis", mods );
+ }
+
+ // -------------------------------------------------------------------
+ // Add a bunch of nis groups
+ // -------------------------------------------------------------------
+
+ addNisPosixGroup( "testGroup0", 0 );
+ addNisPosixGroup( "testGroup1", 1 );
+ addNisPosixGroup( "testGroup2", 2 );
+ addNisPosixGroup( "testGroup4", 4 );
+ addNisPosixGroup( "testGroup5", 5 );
+ }
+
+
+ private DirContext addNisPosixGroup( String name, int gid ) throws NamingException
+ {
+ Attributes attrs = new AttributesImpl( "objectClass", "top", true );
+ attrs.get( "objectClass" ).add( "posixGroup" );
+ attrs.put( "cn", name );
+ attrs.put( "gidNumber", String.valueOf( gid ) );
+ return getSystemContext( service ).createSubcontext( "cn="+name+",ou=groups", attrs );
}
@@ -447,7 +493,7 @@
SearchResult result = ( SearchResult ) list.next();
map.put( result.getName(), result.getAttributes() );
}
- assertEquals( "size of results", 14, map.size() );
+ assertEquals( "size of results", 19, map.size() );
assertTrue( "contains ou=testing00,ou=system", map.containsKey( "ou=testing00,ou=system" ) );
assertTrue( "contains ou=testing01,ou=system", map.containsKey( "ou=testing01,ou=system" ) );
assertTrue( "contains ou=testing02,ou=system", map.containsKey( "ou=testing01,ou=system" ) );
@@ -959,4 +1005,187 @@
// assertTrue( "contains uid=admin,ou=system", map.contains( "uid=admin,ou=system" ) );
// assertTrue( "contains cn=administrators,ou=groups,ou=system", map.contains( "cn=administrators,ou=groups,ou=system" ) );
// }
+
+
+
+ /**
+ * Convenience method that performs a one level search using the
+ * specified filter returning their DNs as Strings in a set.
+ *
+ * @param controls the search controls
+ * @param filter the filter expression
+ * @return the set of groups
+ * @throws NamingException if there are problems conducting the search
+ */
+ public Set<String> searchGroups( String filter, SearchControls controls ) throws NamingException
+ {
+ if ( controls == null )
+ {
+ controls = new SearchControls();
+ }
+
+ Set<String> results = new HashSet<String>();
+ NamingEnumeration list = getSystemContext( service ).search( "ou=groups", filter, controls );
+
+ while( list.hasMore() )
+ {
+ SearchResult result = ( SearchResult ) list.next();
+ results.add( result.getName() );
+ }
+
+ return results;
+ }
+
+
+ /**
+ * Convenience method that performs a one level search using the
+ * specified filter returning their DNs as Strings in a set.
+ *
+ * @param filter the filter expression
+ * @return the set of group names
+ * @throws NamingException if there are problems conducting the search
+ */
+ public Set<String> searchGroups( String filter ) throws NamingException
+ {
+ return searchGroups( filter, null );
+ }
+
+
+ @Test
+ public void testSetup() throws Exception
+ {
+ LdapContext sysRoot = getSystemContext( service );
+ createData( sysRoot );
+
+ Set results = searchGroups( "(objectClass=posixGroup)" );
+ assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+ }
+
+
+ @Test
+ public void testLessThanSearch() throws Exception
+ {
+ LdapContext sysRoot = getSystemContext( service );
+ createData( sysRoot );
+
+ Set results = searchGroups( "(gidNumber<=5)" );
+ assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+
+ results = searchGroups( "(gidNumber<=4)" );
+ assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+
+ results = searchGroups( "(gidNumber<=3)" );
+ assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+
+ results = searchGroups( "(gidNumber<=0)" );
+ assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+
+ results = searchGroups( "(gidNumber<=-1)" );
+ assertFalse( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+ }
+
+
+ @Test
+ public void testGreaterThanSearch() throws Exception
+ {
+ LdapContext sysRoot = getSystemContext( service );
+ createData( sysRoot );
+
+ Set results = searchGroups( "(gidNumber>=0)" );
+ assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+
+ results = searchGroups( "(gidNumber>=1)" );
+ assertFalse( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+
+ results = searchGroups( "(gidNumber>=3)" );
+ assertFalse( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+
+ results = searchGroups( "(gidNumber>=6)" );
+ assertFalse( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+ }
+
+
+ @Test
+ public void testNotOperator() throws NamingException
+ {
+ LdapContext sysRoot = getSystemContext( service );
+ createData( sysRoot );
+
+ Set results = searchGroups( "(!(gidNumber=4))" );
+ assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+ }
+
+
+ @Test
+ public void testNotOperatorSubtree() throws NamingException
+ {
+ LdapContext sysRoot = getSystemContext( service );
+ createData( sysRoot );
+
+ SearchControls controls = new SearchControls();
+ controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
+
+ Set results = searchGroups( "(!(gidNumber=4))", controls );
+ assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
+ assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
+ assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
+ }
}
Propchange: directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchIT.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchIT.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Sat Dec 8 20:36:58 2007
@@ -0,0 +1,4 @@
+Rev
+Revision
+Date
+Id
Copied: directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchWithIndicesITest.java (from r602604, directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/SearchOpsITest.java)
URL: http://svn.apache.org/viewvc/directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchWithIndicesITest.java?p2=directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchWithIndicesITest.java&p1=directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/SearchOpsITest.java&r1=602604&r2=602630&rev=602630&view=diff
==============================================================================
--- directory/apacheds/branches/bigbang/core-unit/src/test/java/org/apache/directory/server/core/SearchOpsITest.java (original)
+++ directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchWithIndicesITest.java Sat Dec 8 20:36:58 2007
@@ -17,20 +17,33 @@
* under the License.
*
*/
-package org.apache.directory.server.core;
+package org.apache.directory.server.core.jndi;
+import org.apache.directory.server.core.DefaultDirectoryService;
+import org.apache.directory.server.core.DirectoryService;
+import org.apache.directory.server.core.integ.CiRunner;
+import org.apache.directory.server.core.integ.DirectoryServiceFactory;
+import static org.apache.directory.server.core.integ.IntegrationUtils.getSchemaContext;
+import static org.apache.directory.server.core.integ.IntegrationUtils.getSystemContext;
+import org.apache.directory.server.core.integ.ServiceScope;
+import org.apache.directory.server.core.integ.annotations.Factory;
+import org.apache.directory.server.core.integ.annotations.Scope;
import org.apache.directory.server.core.partition.impl.btree.Index;
import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex;
import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmPartition;
-import org.apache.directory.server.core.unit.AbstractAdminTestCase;
import org.apache.directory.shared.ldap.message.AttributeImpl;
import org.apache.directory.shared.ldap.message.AttributesImpl;
import org.apache.directory.shared.ldap.message.ModificationItemImpl;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.*;
+import javax.naming.ldap.LdapContext;
import java.util.HashSet;
import java.util.Set;
@@ -41,79 +54,93 @@
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
* @version $Rev$
*/
-public class SearchOpsITest extends AbstractAdminTestCase
+@RunWith ( CiRunner.class )
+@Scope ( ServiceScope.TESTCLASS )
+@Factory ( SearchWithIndicesITest.MyFactory.class )
+public class SearchWithIndicesITest
{
- private DirContext addNisPosixGroup( String name, int gid ) throws NamingException
- {
- Attributes attrs = new AttributesImpl( "objectClass", "top", true );
- attrs.get( "objectClass" ).add( "posixGroup" );
- attrs.put( "cn", name );
- attrs.put( "gidNumber", String.valueOf( gid ) );
- return sysRoot.createSubcontext( "cn="+name+",ou=groups", attrs );
- }
-
-
- @SuppressWarnings("unchecked")
- public void setUp() throws Exception
- {
- // -------------------------------------------------------------------
- // Alter the partition configuration to index gidNumber
- // -------------------------------------------------------------------
+ public static DirectoryService service;
- if ( getName().indexOf( "WithIndices" ) != -1 )
- {
- JdbmPartition partition = new JdbmPartition();
- partition.setId( "system" );
- Attributes attrs = new AttributesImpl( "objectClass", "top", true );
- attrs.get( "objectClass" ).add( "organizationalUnit" );
- attrs.put( "ou", "system" );
- partition.setContextEntry( attrs );
- partition.setSuffix( "ou=system" );
-
- Set<Index> indices = new HashSet<Index>();
- indices.addAll( partition.getIndexedAttributes() );
- indices.add( new JdbmIndex( "gidNumber" ) );
- partition.setIndexedAttributes( indices );
- service.setSystemPartition( partition );
- }
-
- super.setUp();
+
+ private void createData() throws NamingException
+ {
// -------------------------------------------------------------------
// Enable the nis schema
// -------------------------------------------------------------------
// check if nis is disabled
+ LdapContext schemaRoot = getSchemaContext( service );
Attributes nisAttrs = schemaRoot.getAttributes( "cn=nis" );
boolean isNisDisabled = false;
if ( nisAttrs.get( "m-disabled" ) != null )
{
isNisDisabled = ( ( String ) nisAttrs.get( "m-disabled" ).get() ).equalsIgnoreCase( "TRUE" );
}
-
+
// if nis is disabled then enable it
if ( isNisDisabled )
{
Attribute disabled = new AttributeImpl( "m-disabled" );
- ModificationItemImpl[] mods = new ModificationItemImpl[] {
+ ModificationItemImpl[] mods = new ModificationItemImpl[] {
new ModificationItemImpl( DirContext.REMOVE_ATTRIBUTE, disabled ) };
schemaRoot.modifyAttributes( "cn=nis", mods );
}
-
+
// -------------------------------------------------------------------
// Add a bunch of nis groups
// -------------------------------------------------------------------
-
+
addNisPosixGroup( "testGroup0", 0 );
addNisPosixGroup( "testGroup1", 1 );
addNisPosixGroup( "testGroup2", 2 );
addNisPosixGroup( "testGroup4", 4 );
addNisPosixGroup( "testGroup5", 5 );
}
+
+
+ private DirContext addNisPosixGroup( String name, int gid ) throws NamingException
+ {
+ Attributes attrs = new AttributesImpl( "objectClass", "top", true );
+ attrs.get( "objectClass" ).add( "posixGroup" );
+ attrs.put( "cn", name );
+ attrs.put( "gidNumber", String.valueOf( gid ) );
+ return getSystemContext( service ).createSubcontext( "cn="+name+",ou=groups", attrs );
+ }
+
+
+ public static class MyFactory implements DirectoryServiceFactory
+ {
+ public DirectoryService newInstance()
+ {
+ DirectoryService service = new DefaultDirectoryService();
+ service.getChangeLog().setEnabled( true );
+
+ // -------------------------------------------------------------------
+ // Alter the partition configuration to index gidNumber
+ // -------------------------------------------------------------------
+
+ JdbmPartition partition = new JdbmPartition();
+ partition.setId( "system" );
+ Attributes attrs = new AttributesImpl( "objectClass", "top", true );
+ attrs.get( "objectClass" ).add( "organizationalUnit" );
+ attrs.put( "ou", "system" );
+ partition.setContextEntry( attrs );
+ partition.setSuffix( "ou=system" );
+
+ Set<Index> indices = new HashSet<Index>();
+ indices.addAll( partition.getIndexedAttributes() );
+ indices.add( new JdbmIndex( "gidNumber" ) );
+ partition.setIndexedAttributes( indices );
+ service.setSystemPartition( partition );
+
+ return service;
+ }
+ }
/**
- * Convenience method that performs a one level search using the
+ * Convenience method that performs a one level search using the
* specified filter returning their DNs as Strings in a set.
*
* @param controls the search controls
@@ -127,22 +154,22 @@
{
controls = new SearchControls();
}
-
+
Set<String> results = new HashSet<String>();
- NamingEnumeration list = sysRoot.search( "ou=groups", filter, controls );
-
+ NamingEnumeration list = getSystemContext( service ).search( "ou=groups", filter, controls );
+
while( list.hasMore() )
{
SearchResult result = ( SearchResult ) list.next();
results.add( result.getName() );
}
-
+
return results;
}
-
-
+
+
/**
- * Convenience method that performs a one level search using the
+ * Convenience method that performs a one level search using the
* specified filter returning their DNs as Strings in a set.
*
* @param filter the filter expression
@@ -153,102 +180,12 @@
{
return searchGroups( filter, null );
}
-
-
- public void testSetup() throws Exception
- {
- Set results = searchGroups( "(objectClass=posixGroup)" );
- assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
- }
-
- public void testLessThanSearch() throws Exception
- {
- Set results = searchGroups( "(gidNumber<=5)" );
- assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
- results = searchGroups( "(gidNumber<=4)" );
- assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
-
- results = searchGroups( "(gidNumber<=3)" );
- assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
-
- results = searchGroups( "(gidNumber<=0)" );
- assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
-
- results = searchGroups( "(gidNumber<=-1)" );
- assertFalse( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
- }
-
-
- public void testGreaterThanSearch() throws Exception
- {
- Set results = searchGroups( "(gidNumber>=0)" );
- assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
-
- results = searchGroups( "(gidNumber>=1)" );
- assertFalse( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
-
- results = searchGroups( "(gidNumber>=3)" );
- assertFalse( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
-
- results = searchGroups( "(gidNumber>=6)" );
- assertFalse( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
- }
-
-
+ @Test
public void testLessThanSearchWithIndices() throws Exception
{
+ createData();
Set results = searchGroups( "(gidNumber<=5)" );
assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
@@ -291,8 +228,10 @@
}
+ @Test
public void testGreaterThanSearchWithIndices() throws Exception
{
+ createData();
Set results = searchGroups( "(gidNumber>=0)" );
assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
@@ -324,32 +263,5 @@
assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
assertFalse( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
- }
-
-
- public void testNotOperator() throws NamingException
- {
- Set results = searchGroups( "(!(gidNumber=4))" );
- assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
- }
-
-
- public void testNotOperatorSubtree() throws NamingException
- {
- SearchControls controls = new SearchControls();
- controls.setSearchScope( SearchControls.SUBTREE_SCOPE );
-
- Set results = searchGroups( "(!(gidNumber=4))", controls );
- assertTrue( results.contains( "cn=testGroup0,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup1,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup2,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup3,ou=groups,ou=system" ) );
- assertFalse( results.contains( "cn=testGroup4,ou=groups,ou=system" ) );
- assertTrue( results.contains( "cn=testGroup5,ou=groups,ou=system" ) );
}
}
Propchange: directory/apacheds/branches/bigbang/core-integ/src/test/java/org/apache/directory/server/core/jndi/SearchWithIndicesITest.java
------------------------------------------------------------------------------
svn:eol-style = native