You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2013/05/21 03:01:02 UTC
svn commit: r1484631 -
/directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/search/ClientSearchRequestTest.java
Author: elecharny
Date: Tue May 21 01:01:02 2013
New Revision: 1484631
URL: http://svn.apache.org/r1484631
Log:
Made the test working by correctly trying to read all the results.
Modified:
directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/search/ClientSearchRequestTest.java
Modified: directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/search/ClientSearchRequestTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/search/ClientSearchRequestTest.java?rev=1484631&r1=1484630&r2=1484631&view=diff
==============================================================================
--- directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/search/ClientSearchRequestTest.java (original)
+++ directory/apacheds/trunk/ldap-client-test/src/test/java/org/apache/directory/shared/client/api/operations/search/ClientSearchRequestTest.java Tue May 21 01:01:02 2013
@@ -22,6 +22,7 @@ package org.apache.directory.shared.clie
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -90,297 +91,303 @@ import org.junit.runner.RunWith;
})
public class ClientSearchRequestTest extends AbstractLdapTestUnit
{
- private LdapNetworkConnection connection;
-
-
- @Before
- public void setup() throws Exception
- {
- connection = ( LdapNetworkConnection ) LdapApiIntegrationUtils.getPooledAdminConnection( getLdapServer() );
- }
-
-
- @After
- public void shutdown() throws Exception
+private LdapNetworkConnection connection;
+
+
+@Before
+public void setup() throws Exception
+{
+ connection = ( LdapNetworkConnection ) LdapApiIntegrationUtils.getPooledAdminConnection( getLdapServer() );
+}
+
+
+@After
+public void shutdown() throws Exception
+{
+ LdapApiIntegrationUtils.releasePooledAdminConnection( connection, getLdapServer() );
+}
+
+
+@Test
+public void testSimpleSearch() throws Exception
+{
+ EntryCursor cursor = connection.search( "ou=system", "(objectclass=*)", SearchScope.ONELEVEL );
+ int count = 0;
+
+ while ( cursor.next() )
{
- LdapApiIntegrationUtils.releasePooledAdminConnection( connection, getLdapServer() );
+ Entry entry = cursor.get();
+ assertNotNull( entry );
+ count++;
}
-
-
- @Test
- public void testSimpleSearch() throws Exception
+
+ SearchResultDone done = cursor.getSearchResultDone();
+
+ assertNotNull( done );
+ assertEquals( ResultCodeEnum.SUCCESS, done.getLdapResult().getResultCode() );
+ assertEquals( 5, count );
+ cursor.close();
+}
+
+
+@Test
+public void testSimpleSearchWithControl() throws Exception
+{
+ SearchRequest searchRequest = new SearchRequestImpl().setBase( new Dn( "ou=system" ) )
+ .setFilter( "(objectclass=*)" )
+ .setScope( SearchScope.ONELEVEL ).addControl( new ManageDsaITImpl() );
+ SearchCursor cursor = connection.search( searchRequest );
+ int count = 0;
+
+ while ( cursor.next() )
{
- EntryCursor cursor = connection.search( "ou=system", "(objectclass=*)", SearchScope.ONELEVEL );
- int count = 0;
-
- while ( cursor.next() )
+ Response response = cursor.get();
+ assertNotNull( response );
+
+ if ( response instanceof SearchResultEntry )
{
- Entry entry = cursor.get();
+ Entry entry = ( ( SearchResultEntry ) response ).getEntry();
assertNotNull( entry );
- count++;
}
-
- SearchResultDone done = cursor.getSearchResultDone();
-
- assertNotNull( done );
- assertEquals( ResultCodeEnum.SUCCESS, done.getLdapResult().getResultCode() );
- assertEquals( 5, count );
- cursor.close();
+
+ count++;
}
-
-
- @Test
- public void testSimpleSearchWithControl() throws Exception
+
+ SearchResultDone done = cursor.getSearchResultDone();
+
+ assertNotNull( done );
+ assertEquals( ResultCodeEnum.SUCCESS, done.getLdapResult().getResultCode() );
+ assertEquals( 5, count );
+ cursor.close();
+}
+
+
+@Test
+public void testSearch() throws Exception
+{
+ EntryCursor cursor = connection.search( "ou=system", "(objectclass=*)",
+ SearchScope.ONELEVEL,
+ "*", "+" );
+ int count = 0;
+
+ while ( cursor.next() )
{
- SearchRequest searchRequest = new SearchRequestImpl().setBase( new Dn( "ou=system" ) )
- .setFilter( "(objectclass=*)" )
- .setScope( SearchScope.ONELEVEL ).addControl( new ManageDsaITImpl() );
- SearchCursor cursor = connection.search( searchRequest );
- int count = 0;
-
- while ( cursor.next() )
- {
- Response response = cursor.get();
- assertNotNull( response );
-
- if ( response instanceof SearchResultEntry )
- {
- Entry entry = ( ( SearchResultEntry ) response ).getEntry();
- assertNotNull( entry );
- }
-
- count++;
- }
-
- SearchResultDone done = cursor.getSearchResultDone();
-
- assertNotNull( done );
- assertEquals( ResultCodeEnum.SUCCESS, done.getLdapResult().getResultCode() );
- assertEquals( 5, count );
- cursor.close();
+ assertNotNull( cursor.get() );
+ count++;
}
-
-
- @Test
- public void testSearch() throws Exception
+
+ SearchResultDone done = cursor.getSearchResultDone();
+
+ assertNotNull( done );
+ assertEquals( ResultCodeEnum.SUCCESS, done.getLdapResult().getResultCode() );
+ assertEquals( 5, count );
+ cursor.close();
+}
+
+
+@Test
+public void testSearchEquality() throws Exception
+{
+ EntryCursor cursor = connection.search( "ou=system", "(objectclass=organizationalUnit)",
+ SearchScope.ONELEVEL, "*", "+" );
+ int count = 0;
+
+ while ( cursor.next() )
{
- EntryCursor cursor = connection.search( "ou=system", "(objectclass=*)",
- SearchScope.ONELEVEL,
- "*", "+" );
- int count = 0;
-
- while ( cursor.next() )
+ Entry entry = cursor.get();
+ assertNotNull( entry );
+ count++;
+ }
+
+ assertEquals( 4, count );
+ cursor.close();
+}
+
+
+@Test
+public void testAsyncSearch() throws Exception
+{
+ SearchFuture searchFuture = connection.searchAsync( "ou=system", "(objectclass=*)", SearchScope.ONELEVEL, "*",
+ "+" );
+ int count = 0;
+ Response searchResponse = null;
+
+ do
+ {
+ searchResponse = searchFuture.get( 1000, TimeUnit.MILLISECONDS );
+ assertNotNull( searchResponse );
+ if ( !( searchResponse instanceof SearchResultDone ) )
{
- assertNotNull( cursor.get() );
count++;
}
-
- SearchResultDone done = cursor.getSearchResultDone();
-
- assertNotNull( done );
- assertEquals( ResultCodeEnum.SUCCESS, done.getLdapResult().getResultCode() );
- assertEquals( 5, count );
- cursor.close();
}
-
-
- @Test
- public void testSearchEquality() throws Exception
+ while ( !( searchResponse instanceof SearchResultDone ) );
+
+ assertEquals( 5, count );
+}
+
+
+/**
+ * Test a search with a Substring filter
+ * @throws Exception
+ */
+@Test
+public void testSearchPersonSubstring() throws Exception
+{
+ SearchFuture searchFuture = connection.searchAsync( "ou=system", "(objectclass=*ers*)", SearchScope.SUBTREE,
+ "*", "+" );
+ int count = 0;
+ Response searchResponse = null;
+
+ do
{
- EntryCursor cursor = connection.search( "ou=system", "(objectclass=organizationalUnit)",
- SearchScope.ONELEVEL, "*", "+" );
- int count = 0;
-
- while ( cursor.next() )
+ searchResponse = searchFuture.get( 100000, TimeUnit.MILLISECONDS );
+ assertNotNull( searchResponse );
+
+ if ( !( searchResponse instanceof SearchResultDone ) )
{
- Entry entry = cursor.get();
- assertNotNull( entry );
count++;
}
-
- assertEquals( 4, count );
- cursor.close();
}
-
-
- @Test
- public void testAsyncSearch() throws Exception
+ while ( !( searchResponse instanceof SearchResultDone ) );
+
+ assertEquals( 3, count );
+}
+
+
+@Test
+public void testSearchWithDerefAlias() throws Exception
+{
+ SearchRequest searchRequest = new SearchRequestImpl();
+ searchRequest.setBase( new Dn( "ou=users,ou=system" ) );
+ searchRequest.setFilter( "(objectClass=*)" );
+ searchRequest.setScope( SearchScope.ONELEVEL );
+ searchRequest.addAttributes( "*" );
+
+ int count = 0;
+ Cursor<Response> cursor = connection.search( searchRequest );
+
+ while ( cursor.next() )
{
- SearchFuture searchFuture = connection.searchAsync( "ou=system", "(objectclass=*)", SearchScope.ONELEVEL, "*",
- "+" );
- int count = 0;
- Response searchResponse = null;
-
- do
- {
- searchResponse = searchFuture.get( 1000, TimeUnit.MILLISECONDS );
- assertNotNull( searchResponse );
- if ( !( searchResponse instanceof SearchResultDone ) )
- {
- count++;
- }
- }
- while ( !( searchResponse instanceof SearchResultDone ) );
-
- assertEquals( 5, count );
+ count++;
}
-
-
- /**
- * Test a search with a Substring filter
- * @throws Exception
- */
- @Test
- public void testSearchPersonSubstring() throws Exception
+ cursor.close();
+
+ // due to dereferencing of aliases we get only one entry
+ assertEquals( 2, count );
+
+ count = 0;
+ searchRequest.setDerefAliases( AliasDerefMode.NEVER_DEREF_ALIASES );
+ cursor = connection.search( searchRequest );
+
+ while ( cursor.next() )
{
- SearchFuture searchFuture = connection.searchAsync( "ou=system", "(objectclass=*ers*)", SearchScope.SUBTREE,
- "*", "+" );
- int count = 0;
- Response searchResponse = null;
-
- do
- {
- searchResponse = searchFuture.get( 100000, TimeUnit.MILLISECONDS );
- assertNotNull( searchResponse );
-
- if ( !( searchResponse instanceof SearchResultDone ) )
- {
- count++;
- }
- }
- while ( !( searchResponse instanceof SearchResultDone ) );
-
- assertEquals( 3, count );
+ count++;
}
-
-
- @Test
- public void testSearchWithDerefAlias() throws Exception
+ cursor.close();
+
+ assertEquals( 3, count );
+}
+
+
+@Test
+public void testSearchUTF8() throws Exception
+{
+ EntryCursor cursor = connection.search( "ou=users,ou=system", "(sn=Emmanuel L\u00E9charny)", SearchScope.ONELEVEL,
+ "*", "+" );
+
+ assertTrue( cursor.next() );
+
+ Entry entry = cursor.get();
+ assertNotNull( entry );
+ assertTrue( entry.contains( "cn", "elecharny" ) );
+ assertTrue( entry.contains( "sn", "Emmanuel L\u00E9charny" ) );
+
+ cursor.close();
+}
+
+
+@Test
+public void testSearchBinary() throws Exception
+{
+ connection.loadSchema();
+ EntryCursor cursor = connection
+ .search(
+ "ou=system",
+ "(publicKey=\\30\\5C\\30\\0D\\06\\09\\2A\\86\\48\\86\\F7\\0D\\01\\01\\01\\05\\00\\03\\4B\\00\\30\\48\\02\\41\\00\\A6\\C7\\9C\\B1\\6C\\E4\\DD\\8F\\1E\\4D\\20\\93\\22\\3F\\83\\75\\DE\\21\\D8\\F1\\9D\\63\\80\\5B\\94\\55\\6A\\9E\\33\\59\\9B\\8D\\63\\88\\0D\\18\\7D\\4C\\85\\F1\\CF\\54\\77\\32\\E9\\61\\0C\\A2\\8F\\B3\\6B\\15\\34\\5E\\1F\\88\\BF\\A0\\73\\AC\\86\\BB\\D0\\85\\02\\03\\01\\00\\01)",
+ SearchScope.SUBTREE, "publicKey" );
+
+ assertTrue( cursor.next() );
+
+ Entry entry = cursor.get();
+ assertNotNull( entry.get( "publicKey" ) );
+
+ cursor.close();
+}
+
+
+@Test
+public void testSubDn() throws Exception
+{
+ connection.loadSchema();
+ EntryCursor cursor = connection.search( "ou=system", "(cn=user1)", SearchScope.SUBTREE, "publicKey" );
+
+ assertTrue( cursor.next() );
+
+ Entry entry = cursor.get();
+ assertEquals( "cn=user1,ou=users,ou=system", entry.getDn().getName() );
+
+ cursor.close();
+
+ SearchRequest req = new SearchRequestImpl();
+ req.setScope( SearchScope.SUBTREE );
+ req.addAttributes( "*" );
+ req.setTimeLimit( 0 );
+ req.setBase( new Dn( "ou=system" ) );
+ req.setFilter( "(cn=user1)" );
+
+ SearchCursor searchCursor = connection.search( req );
+
+ assertTrue( searchCursor.next() );
+
+ Response response = searchCursor.get();
+
+ Entry resultEntry = ( ( SearchResultEntry ) response ).getEntry();
+ assertEquals( "cn=user1,ou=users,ou=system", resultEntry.getDn().getName() );
+
+ searchCursor.close();
+}
+
+
+/**
+ * Test to demonstrate https://issues.apache.org/jira/browse/DIRAPI-140
+ * Fixed to demonstrate that it works, if we loop until we don't have anymore results
+ */
+@Test
+public void test_DIRAPI140() throws Exception
+{
+ for ( int i = 0; i < 1000; i++ )
{
- SearchRequest searchRequest = new SearchRequestImpl();
- searchRequest.setBase( new Dn( "ou=users,ou=system" ) );
- searchRequest.setFilter( "(objectClass=*)" );
- searchRequest.setScope( SearchScope.ONELEVEL );
- searchRequest.addAttributes( "*" );
-
- int count = 0;
- Cursor<Response> cursor = connection.search( searchRequest );
-
- while ( cursor.next() )
+ if ( i % 100 == 0 )
{
- count++;
- }
- cursor.close();
-
- // due to dereferencing of aliases we get only one entry
- assertEquals( 2, count );
-
- count = 0;
- searchRequest.setDerefAliases( AliasDerefMode.NEVER_DEREF_ALIASES );
- cursor = connection.search( searchRequest );
-
- while ( cursor.next() )
- {
- count++;
+ System.out.println( "Loop " + i );
}
- cursor.close();
-
- assertEquals( 3, count );
- }
-
-
- @Test
- public void testSearchUTF8() throws Exception
- {
- EntryCursor cursor = connection.search( "ou=users,ou=system", "(sn=Emmanuel L\u00E9charny)", SearchScope.ONELEVEL,
- "*", "+" );
-
- assertTrue( cursor.next() );
-
- Entry entry = cursor.get();
- assertNotNull( entry );
- assertTrue( entry.contains( "cn", "elecharny" ) );
- assertTrue( entry.contains( "sn", "Emmanuel L\u00E9charny" ) );
-
- cursor.close();
- }
-
-
- @Test
- public void testSearchBinary() throws Exception
- {
- connection.loadSchema();
- EntryCursor cursor = connection
- .search(
- "ou=system",
- "(publicKey=\\30\\5C\\30\\0D\\06\\09\\2A\\86\\48\\86\\F7\\0D\\01\\01\\01\\05\\00\\03\\4B\\00\\30\\48\\02\\41\\00\\A6\\C7\\9C\\B1\\6C\\E4\\DD\\8F\\1E\\4D\\20\\93\\22\\3F\\83\\75\\DE\\21\\D8\\F1\\9D\\63\\80\\5B\\94\\55\\6A\\9E\\33\\59\\9B\\8D\\63\\88\\0D\\18\\7D\\4C\\85\\F1\\CF\\54\\77\\32\\E9\\61\\0C\\A2\\8F\\B3\\6B\\15\\34\\5E\\1F\\88\\BF\\A0\\73\\AC\\86\\BB\\D0\\85\\02\\03\\01\\00\\01)",
- SearchScope.SUBTREE, "publicKey" );
-
- assertTrue( cursor.next() );
-
- Entry entry = cursor.get();
- assertNotNull( entry.get( "publicKey" ) );
-
- cursor.close();
- }
-
-
- @Test
- public void testSubDn() throws Exception
- {
- connection.loadSchema();
- EntryCursor cursor = connection.search( "ou=system", "(cn=user1)", SearchScope.SUBTREE, "publicKey" );
-
- assertTrue( cursor.next() );
-
- Entry entry = cursor.get();
- assertEquals( "cn=user1,ou=users,ou=system", entry.getDn().getName() );
-
- cursor.close();
-
+
SearchRequest req = new SearchRequestImpl();
req.setScope( SearchScope.SUBTREE );
req.addAttributes( "*" );
req.setTimeLimit( 0 );
req.setBase( new Dn( "ou=system" ) );
req.setFilter( "(cn=user1)" );
-
- SearchCursor searchCursor = connection.search( req );
-
- assertTrue( searchCursor.next() );
-
- Response response = searchCursor.get();
-
- Entry resultEntry = ( ( SearchResultEntry ) response ).getEntry();
- assertEquals( "cn=user1,ou=users,ou=system", resultEntry.getDn().getName() );
-
- searchCursor.close();
- }
-
- /**
- * Test to demonstrate https://issues.apache.org/jira/browse/DIRAPI-140
- */
- @Test
- public void test_DIRAPI140() throws Exception
- {
- for ( int i = 0; i < 100; i++ )
- {
- System.out.println( "Loop " + i );
-
- SearchRequest req = new SearchRequestImpl();
- req.setScope( SearchScope.SUBTREE );
- req.addAttributes( "*" );
- req.setTimeLimit( 0 );
- req.setBase( new Dn( "ou=system" ) );
- req.setFilter( "(cn=user1)" );
-
- SearchCursor searchCursor = connection.search( req );
+ SearchCursor searchCursor = connection.search( req );
- assertTrue( searchCursor.next() );
+ // We should have only one entry
+ assertTrue( searchCursor.next() );
+ assertFalse( searchCursor.next() );
- searchCursor.close();
- }
+ searchCursor.close();
}
+}
}