@Test
public void testSubLevelIndex() throws Exception
{
Index idx = partition.getSubLevelIndex();
assertEquals( 19, idx.count() );
Cursor<IndexEntry<Long, Attributes, Long>> cursor = idx.forwardCursor( 2L );
assertTrue( cursor.next() );
assertEquals( 2, ( long ) cursor.get().getId() );
assertTrue( cursor.next() );
assertEquals( 5, ( long ) cursor.get().getId() );
assertTrue( cursor.next() );
assertEquals( 6, ( long ) cursor.get().getId() );
assertFalse( cursor.next() );
idx.drop( 5L );
cursor = idx.forwardCursor( 2L );
assertTrue( cursor.next() );
assertEquals( 2, ( long ) cursor.get().getId() );
assertTrue( cursor.next() );
assertEquals( 6, ( long ) cursor.get().getId() );
assertFalse( cursor.next() );
// dn id 12
Dn martinDn = new Dn( schemaManager, "cn=Marting King,ou=Sales,o=Good Times Co." );
DefaultEntry entry = new DefaultEntry( schemaManager, martinDn );
entry.add( "objectClass", "top", "person", "organizationalPerson" );
entry.add( "ou", "Sales" );
entry.add( "cn", "Martin King" );
entry.add( "entryCSN", new CsnFactory( 1 ).newInstance().toString() );
entry.add( "entryUUID", UUID.randomUUID().toString() );
AddOperationContext addContext = new AddOperationContext( null, entry );
partition.add( addContext );
cursor = idx.forwardCursor( 2L );
cursor.afterLast();
assertTrue( cursor.previous() );
assertEquals( 12, ( long ) cursor.get().getId() );
Dn newParentDn = new Dn( schemaManager, "ou=Board of Directors,o=Good Times Co." );
Dn newDn = newParentDn.add( martinDn.getRdn() );
partition.move( martinDn, newParentDn, newDn, new ClonedServerEntry( entry ) );
cursor = idx.forwardCursor( 3L );
cursor.afterLast();
assertTrue( cursor.previous() );
assertEquals( 12, ( long ) cursor.get().getId() );
// dn id 13
Dn marketingDn = new Dn( schemaManager, "ou=Marketing,ou=Sales,o=Good Times Co." );
entry = new DefaultEntry( schemaManager, marketingDn );
entry.add( "objectClass", "top", "organizationalUnit" );
entry.add( "ou", "Marketing" );
entry.add( "entryCSN", new CsnFactory( 1 ).newInstance().toString() );
entry.add( "entryUUID", UUID.randomUUID().toString() );
addContext = new AddOperationContext( null, entry );
partition.add( addContext );
// dn id 14
Dn jimmyDn = new Dn( schemaManager, "cn=Jimmy Wales,ou=Marketing, ou=Sales,o=Good Times Co." );
entry = new DefaultEntry( schemaManager, jimmyDn );
entry.add( "objectClass", "top", "person", "organizationalPerson" );
entry.add( "ou", "Marketing" );
entry.add( "cn", "Jimmy Wales" );
entry.add( "entryCSN", new CsnFactory( 1 ).newInstance().toString() );
entry.add( "entryUUID", UUID.randomUUID().toString() );
addContext = new AddOperationContext( null, entry );
partition.add( addContext );
newDn = newParentDn.add( marketingDn.getRdn() );
partition.move( marketingDn, newParentDn, newDn, new ClonedServerEntry( entry ) );
cursor = idx.forwardCursor( 3L );
cursor.afterLast();
assertTrue( cursor.previous() );
assertEquals( 14, ( long ) cursor.get().getId() );