You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2014/01/01 15:36:32 UTC
svn commit: r1554627 -
/directory/apacheds/trunk/mmr-tests/src/test/java/org/apache/directory/server/ldap/replication/MmrTester.java
Author: kayyagari
Date: Wed Jan 1 14:36:32 2014
New Revision: 1554627
URL: http://svn.apache.org/r1554627
Log:
added a new test to verify when an entry moves out of replication branch scope
Modified:
directory/apacheds/trunk/mmr-tests/src/test/java/org/apache/directory/server/ldap/replication/MmrTester.java
Modified: directory/apacheds/trunk/mmr-tests/src/test/java/org/apache/directory/server/ldap/replication/MmrTester.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mmr-tests/src/test/java/org/apache/directory/server/ldap/replication/MmrTester.java?rev=1554627&r1=1554626&r2=1554627&view=diff
==============================================================================
--- directory/apacheds/trunk/mmr-tests/src/test/java/org/apache/directory/server/ldap/replication/MmrTester.java (original)
+++ directory/apacheds/trunk/mmr-tests/src/test/java/org/apache/directory/server/ldap/replication/MmrTester.java Wed Jan 1 14:36:32 2014
@@ -48,6 +48,7 @@ import org.apache.directory.api.ldap.mod
import org.apache.directory.api.ldap.model.name.Dn;
import org.apache.directory.api.ldap.model.name.Rdn;
import org.apache.directory.api.ldap.model.url.LdapUrl;
+import org.apache.directory.ldap.client.api.LdapConnection;
import org.apache.directory.ldap.client.api.LdapNetworkConnection;
import org.apache.directory.server.annotations.CreateConsumer;
import org.apache.directory.server.annotations.CreateLdapServer;
@@ -59,6 +60,7 @@ import org.apache.directory.server.core.
import org.apache.directory.server.core.api.CoreSession;
import org.apache.directory.server.core.api.DirectoryService;
import org.apache.directory.server.core.factory.DSAnnotationProcessor;
+import org.apache.directory.server.core.factory.MavibotPartitionFactory;
import org.apache.directory.server.core.integ.FrameworkRunner;
import org.apache.directory.server.factory.ServerAnnotationProcessor;
import org.apache.directory.server.ldap.LdapServer;
@@ -77,7 +79,10 @@ import org.apache.directory.server.ldap.
*/
public class MmrTester
{
- private static final String PARTITION_SUFFIX = "dc=example,dc=com";
+ // replicate a branch under partition instead of partition
+ // this will enable to us to test the case where a entry was
+ // moved out of replication area
+ private static final String REPL_AREA_SUFFIX = "ou=replicationarea,dc=example,dc=com";
private static final String RDN_PREFIX = "p";
@@ -137,6 +142,7 @@ public class MmrTester
}
LdapNetworkConnection c = new LdapNetworkConnection( url.getHost(), url.getPort(), useSsl );
+ c.setTimeOut( Long.MAX_VALUE );
c.connect();
c.bind( ServerDNConstants.ADMIN_SYSTEM_DN, "secret" );
System.out.println( "connected to the server " + url );
@@ -204,7 +210,7 @@ public class MmrTester
LdapNetworkConnection nc = connections.get( connectionIndex );
String cn = RDN_PREFIX + entryIndex;
- Dn personDn = new Dn( "cn=" + cn + "," + PARTITION_SUFFIX );
+ Dn personDn = new Dn( "cn=" + cn + "," + REPL_AREA_SUFFIX );
if ( verbose )
{
@@ -250,7 +256,7 @@ public class MmrTester
LdapNetworkConnection nc = connections.get( connectionIndex );
String cn = RDN_PREFIX + i;
- Dn personDn = new Dn( "cn=" + cn + "," + PARTITION_SUFFIX );
+ Dn personDn = new Dn( "cn=" + cn + "," + REPL_AREA_SUFFIX );
if( verbose )
{
@@ -362,6 +368,49 @@ public class MmrTester
}
+ public void moveOutOfReplAreaAndCompare() throws Exception
+ {
+ Dn parentDn = new Dn( "ou=parent,ou=children,ou=grandchildren");
+
+ Dn currentDn = new Dn( REPL_AREA_SUFFIX );
+
+ LdapNetworkConnection nc = connections.get( 0 );
+
+ for( Rdn rdn : parentDn.getRdns() )
+ {
+ currentDn = new Dn( rdn.getName() + "," + currentDn.getName() );
+ Entry e = new DefaultEntry( currentDn.getName(),
+ "objectclass: top",
+ "objectclass: organizationalUnit",
+ "ou: " + rdn.getAva().getValue().getString() );
+ nc.add( e );
+ }
+
+ compareEntries( Collections.singletonList( currentDn ) );
+
+ Dn ouDn = currentDn.getParent().getParent();
+
+ if( verbose )
+ {
+ System.out.println( "moving " + ouDn + " on the server " + nc.getConfig().getLdapHost() + ":" + nc.getConfig().getLdapPort() + ":" + nc.getConfig().getLdapPort() );
+ }
+
+ ModifyDnRequest modReq = new ModifyDnRequestImpl();
+ modReq.setName( ouDn );
+ modReq.setNewRdn( ouDn.getRdn() );
+ modReq.setNewSuperior( ouDn.getParent().getParent() );
+
+ ModifyDnResponse resp = nc.modifyDn( modReq );
+ ResultCodeEnum rc = resp.getLdapResult().getResultCode();
+ if( rc != ResultCodeEnum.SUCCESS )
+ {
+ System.out.println( "Error moving " + ouDn + " on the server " + nc.getConfig().getLdapHost() + ":" + nc.getConfig().getLdapPort() + ":" + nc.getConfig().getLdapPort() + " with result code " + rc );
+ }
+
+ Thread.sleep( 2000 );
+ verifyDeleted( Collections.singletonList( ouDn ) );
+ }
+
public void compareEntries( List<Dn> injected )
{
for( Dn dn : injected )
@@ -398,10 +447,11 @@ public class MmrTester
LdapNetworkConnection c = itr.next();
try
{
- for( int i = 1; i <= 10; )
+ for( int i = 1; i <= 10; i++ )
{
if( !c.exists( dn ) )
{
+ System.out.println( dn + " doesn't exist in the server " + c.getConfig().getLdapHost() + ":" + c.getConfig().getLdapPort() );
continue outer;
}
@@ -483,7 +533,7 @@ public class MmrTester
try
{
String cn = RDN_PREFIX + num;
- Dn personDn = new Dn( "cn=" + cn + "," + PARTITION_SUFFIX );
+ Dn personDn = new Dn( "cn=" + cn + "," + REPL_AREA_SUFFIX );
Entry person = new DefaultEntry(
personDn.toString(),
"ObjectClass: top",
@@ -518,6 +568,8 @@ public class MmrTester
public static void main( String[] args )
{
+ //System.setProperty( "apacheds.partition.factory", MavibotPartitionFactory.class.getName() );
+
MmrTester cc = new MmrTester( "ldap://localhost:16001", "ldap://localhost:16000" );
if( TOTAL_ENTRY_COUNT < 150 )
@@ -578,7 +630,19 @@ public class MmrTester
"objectClass: top",
"dc: example" );
- cc.injectAndWaitTillReplicates( ctxEntry );
+ for( LdapConnection lc : cc.connections )
+ {
+ lc.add( ctxEntry );
+ }
+
+ Entry replAreaEntry = new DefaultEntry( REPL_AREA_SUFFIX,
+ "objectClass: organizationalunit",
+ "ou: replicationarea" );
+
+ cc.injectAndWaitTillReplicates( replAreaEntry );
+
+ cc.moveOutOfReplAreaAndCompare();
+
cc.addAndCompare();
List<Dn> modified = cc.modify();
@@ -586,7 +650,7 @@ public class MmrTester
cc.compareEntries( modified );
- Entry groupEntry = new DefaultEntry( "ou=groups,dc=example,dc=com",
+ Entry groupEntry = new DefaultEntry( "ou=groups," + REPL_AREA_SUFFIX,
"objectClass: organizationalUnit",
"objectClass: top",
"ou: groups" );
@@ -635,7 +699,7 @@ public class MmrTester
replUserDn = "uid=admin,ou=system",
replUserPassword = "secret",
useTls = false,
- baseDn = "dc=example,dc=com",
+ baseDn = REPL_AREA_SUFFIX,
replicaId = 1,
refreshNPersist = true
)
@@ -662,6 +726,7 @@ public class MmrTester
{
DirectoryService ds = peer1Server.getDirectoryService();
+ System.out.println(ds.getInstanceLayout().getInstanceDirectory());
Dn configDn = new Dn( ds.getSchemaManager(), "ads-replConsumerId=localhost,ou=system" );
consumer.getConfig().setConfigEntryDn( configDn );
@@ -725,7 +790,7 @@ public class MmrTester
replUserDn = "uid=admin,ou=system",
replUserPassword = "secret",
useTls = false,
- baseDn = "dc=example,dc=com",
+ baseDn = REPL_AREA_SUFFIX,
refreshNPersist = true,
replicaId = 1
)