From 74d876c4860a8eadb50f12ea1e832d117bcca302 Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Tue, 15 Jun 2010 14:56:51 +0000
Subject: [PATCH] Add unit-test for External Changelog when disabling a replication domain
---
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java | 81 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 78 insertions(+), 3 deletions(-)
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java
index 2cd6ae6..90453af 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/ReferentialIntegrityPluginTestCase.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2008 Sun Microsystems, Inc.
+ * Copyright 2008-2010 Sun Microsystems, Inc.
*/
package org.opends.server.plugins;
@@ -30,6 +30,7 @@
import org.testng.annotations.*;
import org.opends.server.TestCaseUtils;
import org.opends.server.config.ConfigException;
+import org.opends.server.controls.SubtreeDeleteControl;
import org.opends.server.admin.std.server.ReferentialIntegrityPluginCfg;
import org.opends.server.admin.std.meta.ReferentialIntegrityPluginCfgDefn;
import org.opends.server.admin.server.AdminTestCaseUtils;
@@ -41,6 +42,7 @@
import org.opends.server.protocols.internal.InternalSearchOperation;
import org.opends.server.types.*;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.HashSet;
@@ -117,7 +119,7 @@
replaceAttrEntry(configDN, dsConfigAttrType,"member");
addAttrEntry(configDN, dsConfigAttrType,"uniquemember", "seealso");
//Add suffixes to make referential changes under:
- //o=test, and o=group, ou=unique groups, dc=example, dc=com
+ //o=test, and cn=group, ou=unique groups, dc=example, dc=com
replaceAttrEntry(configDN, dsConfigBaseDN, testSuffix);
addAttrEntry(configDN, dsConfigBaseDN, ugroup);
//Add DNs to groups and special entries
@@ -140,6 +142,61 @@
user1, user2, user3);
}
+
+ /**
+ * Test that a delete subtree changes the correct entries under
+ * the correct suffixes.
+ *
+ * FIXME: re-enable when CR 6959320 is fixed.
+ *
+ * @throws Exception If an unexpected result is returned.
+ *
+ */
+ @Test(enabled=false)
+ public void testReferentialDeleteTree() throws Exception {
+ // Add attributes interested in: member, uniquemember, seealso.
+ replaceAttrEntry(configDN, dsConfigAttrType,"member");
+ addAttrEntry(configDN, dsConfigAttrType,"uniquemember", "seealso");
+
+ // Add suffixes to make referential changes under:
+ // o=test, and cn=group, ou=unique groups, dc=example, dc=com
+ replaceAttrEntry(configDN, dsConfigBaseDN, testSuffix);
+ addAttrEntry(configDN, dsConfigBaseDN, ugroup);
+
+ // Add DNs to groups and special entries
+ addAttrEntry(DN.decode(tgroup), "member", user1, user2, user3);
+ addAttrEntry(DN.decode(tugroup), "uniquemember", user1, user2, user3);
+ addAttrEntry(DN.decode(ugroup), "uniquemember", user1, user2, user3);
+ addAttrEntry(DN.decode(spPerson), "seealso", user1, user2, user3);
+
+ // Check group membership before delete.
+ isMember(tgroup, true, user1, user2, user3);
+
+ // Check values exist as before delete.
+ isAttributeValueEntry(tgroup, true, "member", user1, user2, user3);
+ isAttributeValueEntry(tugroup, true, "uniquemember", user1, user2, user3);
+ isAttributeValueEntry(ugroup, true, "uniquemember", user1, user2, user3);
+ isAttributeValueEntry(spPerson, true, "seealso", user1, user2, user3);
+
+ // Perform the subtree delete.
+ deleteSubtree(oldSuperior);
+
+ // Check group membership before delete.
+ //
+ // This simply checks that the group cache is updated
+ // rather than RI plugin works (it fails at the moment).
+ //
+ // isMember(tgroup, false, user1, user2, user3);
+
+ // Check values exist as before delete.
+ isAttributeValueEntry(tgroup, false, "member", user1, user2, user3);
+ isAttributeValueEntry(tugroup, false, "uniquemember", user1, user2, user3);
+ isAttributeValueEntry(ugroup, false, "uniquemember", user1, user2, user3);
+
+ // This entry not managed by RI.
+ isAttributeValueEntry(spPerson, true, "seealso", user1, user2, user3);
+ }
+
/**
* Test that a rename changes the correct entries under
* the correct suffixes.
@@ -885,6 +942,24 @@
}
}
+
+
+ private void deleteSubtree(String... dns) throws Exception
+ {
+ InternalClientConnection conn = InternalClientConnection
+ .getRootConnection();
+
+ SubtreeDeleteControl control = new SubtreeDeleteControl(true);
+ List<Control> controls = new ArrayList<Control>(1);
+ controls.add(control);
+
+ for (String dn : dns)
+ {
+ DeleteOperation op = conn.processDelete(DN.decode(dn), controls);
+ assertEquals(op.getResultCode(), ResultCode.SUCCESS);
+ }
+ }
+
/**
* Check membership in a static group of the specified dns. The expected
* boolean is used to check if the dns are expected or not expected in the
@@ -903,7 +978,7 @@
private void isMember(String group, boolean expected, String... dns)
throws Exception {
GroupManager groupManager=DirectoryServer.getGroupManager();
- Group instance=groupManager.getGroupInstance(DN.decode(group));
+ Group<?> instance=groupManager.getGroupInstance(DN.decode(group));
for(String dn : dns)
assertEquals(instance.isMember(DN.decode(dn)), expected);
}
--
Gitblit v1.10.0