From 6401e69f22f9b5044c53bbdb4051851cb0f4cd7a Mon Sep 17 00:00:00 2001
From: pgamba <pgamba@localhost>
Date: Tue, 10 Nov 2009 08:52:03 +0000
Subject: [PATCH] Fix#4262 ECL One should be able to disable ECL for each domain

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java |   57 +++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 37 insertions(+), 20 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
index bdcbebc..6d4cae8 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/replication/ExternalChangeLogTest.java
@@ -89,6 +89,7 @@
 import org.opends.server.replication.common.MultiDomainServerState;
 import org.opends.server.replication.common.ServerState;
 import org.opends.server.replication.plugin.DomainFakeCfg;
+import org.opends.server.replication.plugin.ExternalChangelogDomainFakeCfg;
 import org.opends.server.replication.plugin.LDAPReplicationDomain;
 import org.opends.server.replication.plugin.MultimasterReplication;
 import org.opends.server.replication.protocol.AddMsg;
@@ -111,6 +112,7 @@
 import org.opends.server.types.AbstractOperation;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeBuilder;
+import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.Attributes;
 import org.opends.server.types.ByteString;
@@ -230,17 +232,17 @@
       fail("Ending test " +  " with exception:"
           +  stackTraceToSingleLineString(de));
     }
-   
+
     // Test all types of ops.  
     ECLAllOps(); // Do not clean the db for the next test
 
     // First and last should be ok whenever a request has been done or not
     // in compat mode.
     ECLCompatTestLimits(1,4,true);replicationServer.clearDb();
- 
+
     // Test with a mix of domains, a mix of DSes
     ECLTwoDomains(); replicationServer.clearDb();
-    
+
     // Write changes and read ECL from start
     int ts = ECLCompatWriteReadAllOps(1);
 
@@ -657,13 +659,20 @@
       // Add the root entry in the backend
       Backend backend2 = initializeTestBackend(false, TEST_ROOT_DN_STRING2,
           TEST_BACKEND_ID2);
+      backend2.setPrivateBackend(true);
       DN baseDn2 = DN.decode(TEST_ROOT_DN_STRING2);
       SortedSet<String> replServers = new TreeSet<String>();
       replServers.add("localhost:"+replicationServerPort);
+      
       DomainFakeCfg domainConf =
         new DomainFakeCfg(baseDn2,  1602, replServers);
-      LDAPReplicationDomain domain2 = MultimasterReplication.createNewDomain(domainConf);
+      ExternalChangelogDomainFakeCfg eclCfg = 
+        new ExternalChangelogDomainFakeCfg(true, null);
+      domainConf.setExternalChangelogDomain(eclCfg);
+      LDAPReplicationDomain domain2 =
+        MultimasterReplication.createNewDomain(domainConf);
       domain2.start();
+
       sleep(1000);
       Entry e = createEntry(baseDn2);
       addEntry(e);
@@ -716,11 +725,11 @@
           //}
         }
       }
-      //
-      // Set the backend private and do again a search on ECL that should
-      // now not return the entry
-      //
-      domain2.getBackend().setPrivateBackend(true);
+
+      eclCfg = 
+        new ExternalChangelogDomainFakeCfg(false, null);
+      domainConf.setExternalChangelogDomain(eclCfg);
+      domain2.applyConfigurationChange(domainConf);
 
       debugInfo(tn, "Search with cookie=" + cookie);
       searchOp = connection.processSearch(
@@ -739,8 +748,8 @@
       waitOpResult(searchOp, ResultCode.SUCCESS);
 
       entries = searchOp.getSearchEntries();
-      assertTrue(entries != null);
-      assertTrue(entries.size()==1);
+      assertTrue(entries != null, "Entries returned when test2 is ECL disabled.");
+      assertTrue(entries.size()==1, "#Entry="+entries.size()+"when expected is 1");
       if (entries != null)
         for (SearchResultEntry resultEntry : entries)
         {
@@ -3514,9 +3523,13 @@
       replServers.add("localhost:"+replicationServerPort);
       DomainFakeCfg domainConf =
         new DomainFakeCfg(baseDn2, 1702, replServers);
-      SortedSet<String> includeAttributes = new TreeSet<String>();
-      includeAttributes.add("sn");
-      domainConf.setEclIncludes(includeAttributes);
+      // SortedSet<String> includeAttributes = new TreeSet<String>();
+      // includeAttributes.add("sn");
+      SortedSet<AttributeType> eclInclude = new TreeSet<AttributeType>();
+      eclInclude.add(DirectoryServer.getAttributeType("sn"));
+      ExternalChangelogDomainFakeCfg eclCfg = 
+        new ExternalChangelogDomainFakeCfg(true, eclInclude);
+      domainConf.setExternalChangelogDomain(eclCfg);
       domain2 = MultimasterReplication.createNewDomain(domainConf);
       domain2.start();
 
@@ -3525,17 +3538,21 @@
       baseDn3 = DN.decode(TEST_ROOT_DN_STRING3);
       domainConf =
         new DomainFakeCfg(baseDn3, 1703, replServers);
-      includeAttributes = new TreeSet<String>();
-      includeAttributes.add("objectclass");
-      domainConf.setEclIncludes(includeAttributes);
+      eclInclude = new TreeSet<AttributeType>();
+      eclInclude.add(DirectoryServer.getAttributeType("objectclass"));
+      eclCfg = 
+        new ExternalChangelogDomainFakeCfg(true, eclInclude);
+      domainConf.setExternalChangelogDomain(eclCfg);
       domain3 = MultimasterReplication.createNewDomain(domainConf);
       domain3.start();
 
       domainConf =
         new DomainFakeCfg(baseDn2, 1704, replServers);
-      includeAttributes = new TreeSet<String>();
-      includeAttributes.add("cn");
-      domainConf.setEclIncludes(includeAttributes);
+      eclInclude = new TreeSet<AttributeType>();
+      eclInclude.add(DirectoryServer.getAttributeType("cn"));
+      eclCfg = 
+        new ExternalChangelogDomainFakeCfg(true, eclInclude);
+      domainConf.setExternalChangelogDomain(eclCfg);
       domain21 = MultimasterReplication.createNewDomain(domainConf);
       domain21.start();
 

--
Gitblit v1.10.0