// Use the client API as JNDI cannot be used to do a search without
// first binding. (hmmm, even client API won't allow searching without binding)
connection.bind( "uid=admin,ou=system", "secret" );
// Searches for all the entries in ou=system
EntryCursor cursor = connection.search( "uid=admin,ou=system", "(ObjectClass=*)",
SearchScope.OBJECT, "*" );
int i = 0;
while ( cursor.next() )
{
cursor.get();
++i;
}
cursor.close();
assertEquals( 1, i );
for ( int j = 0; j < 10000; j++ )
{
cursor = connection.search( "uid=admin,ou=system", "(ObjectClass=*)", SearchScope.OBJECT, "*" );
while ( cursor.next() )
{
}
cursor.close();
}
Dn dn = new Dn( getService().getSchemaManager(), "uid=admin,ou=system" );
SearchRequest searchRequest = new SearchRequestImpl();
searchRequest.setBase( dn );
searchRequest.setFilter( "(ObjectClass=*)" );
searchRequest.setScope( SearchScope.OBJECT );
searchRequest.addAttributes( "*" );
searchRequest.setDerefAliases( AliasDerefMode.DEREF_ALWAYS );
long t0 = System.currentTimeMillis();
long t00 = 0L;
long tt0 = System.currentTimeMillis();
int nbIterations = 200000;
int count = 0;
for ( int j = 0; j < nbIterations; j++ )
{
if ( j % 10000 == 0 )
{
long tt1 = System.currentTimeMillis();
System.out.println( j + ", " + ( tt1 - tt0 ) );
tt0 = tt1;
}
if ( j == 50000 )
{
t00 = System.currentTimeMillis();
}
long dt0 = System.nanoTime();
cursor = new EntryCursorImpl( connection.search( searchRequest ) );
long dt1 = System.nanoTime();
deltaSearch += Math.abs( dt1 - dt0 );
while ( cursor.next() )
{
long dt2 = System.nanoTime();
cursor.get();
count++;
long dt3 = System.nanoTime();
deltaGet += Math.abs( dt3 - dt2 );
}
long dt4 = System.nanoTime();
cursor.close();
long dt5 = System.nanoTime();
deltaClose += Math.abs( dt5 - dt4 );
}