From 8690264fc9acfbf6931aa563fa13023d6e74ad7c Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Mon, 13 Oct 2014 07:54:58 +0000
Subject: [PATCH] Fix failing unit tests caused by side-effects and unpredictable test ordering.
---
opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/SubentryManagerTestCase.java | 111 +++++++++++++++++++++++++++++++++----------------------
1 files changed, 66 insertions(+), 45 deletions(-)
diff --git a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/SubentryManagerTestCase.java b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/SubentryManagerTestCase.java
index 87eb52d..fb78212 100644
--- a/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/SubentryManagerTestCase.java
+++ b/opendj3-server-dev/tests/unit-tests-testng/src/server/org/opends/server/core/SubentryManagerTestCase.java
@@ -28,6 +28,7 @@
package org.opends.server.core;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Set;
@@ -63,7 +64,6 @@
import static org.forgerock.opendj.ldap.ModificationType.*;
import static org.opends.server.TestCaseUtils.*;
import static org.opends.server.protocols.internal.InternalClientConnection.*;
-import static org.opends.server.util.CollectionUtils.*;
import static org.opends.server.util.ServerConstants.*;
import static org.testng.Assert.*;
@@ -125,15 +125,15 @@
subentryList = manager.getCollectiveSubentries(testEntry.getName());
assertThat(getDns(subentryList)).containsExactly(collectiveSubentry.getName());
+ // Other unit tests may have modified the sub-entry causing it to contain
+ // modify timestamps, etc, so get a fresh copy.
+ Entry refreshedCollectiveSubentry = DirectoryServer.getEntry(collectiveSubentry.getName());
subentryList = manager.getCollectiveSubentries(testEntry);
- // FIXME following line does not work because server's Entry.equals() is not reflexive
- // assertThat(getEntries(subentryList)).containsExactly(collectiveSubentry);
- assertNotNull(subentryList);
- assertEquals(subentryList.size(), 1);
- assertEquals(subentryList.get(0).getEntry(), collectiveSubentry);
+ assertThat(getEntries(subentryList)).containsExactly(refreshedCollectiveSubentry);
+ Entry refreshedLegacyLdapSubentry = DirectoryServer.getEntry(legacyLdapSubentry.getName());
subentryList = manager.getSubentries(legacyLdapSubentry.getName().parent());
- assertThat(getEntries(subentryList)).containsExactly(legacyLdapSubentry);
+ assertThat(getEntries(subentryList)).containsExactly(refreshedLegacyLdapSubentry);
subentryList = manager.getSubentries(legacyLdapSubentry.getName().parent().parent());
assertThat(subentryList).isEmpty();
@@ -162,9 +162,16 @@
@Test
public void testCollectiveAttributes() throws Exception
{
- replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "real-overrides-virtual");
- hasValues(testEntry.getName(), "c-l", "Savoie");
- hasValues(testEntry.getName(), "preferredlanguage", "fr");
+ try
+ {
+ replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "real-overrides-virtual");
+ hasValues(testEntry.getName(), "c-l", "Savoie");
+ hasValues(testEntry.getName(), "preferredlanguage", "fr");
+ }
+ finally
+ {
+ deleteAttribute(collectiveSubentry, "collectiveConflictBehavior");
+ }
}
@@ -296,25 +303,31 @@
@Test
public void testCollectiveAttributeConflict() throws Exception
{
- DN dn = testEntry.getName();
- replaceAttribute(testEntry, "preferredLanguage", "ja");
+ try
+ {
+ DN dn = testEntry.getName();
+ replaceAttribute(testEntry, "preferredLanguage", "ja");
- // real-overrides-virtual.
- replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "real-overrides-virtual");
- hasValues(dn, "preferredlanguage", "ja");
- doesNotHaveValues(dn, "preferredlanguage", "fr");
+ // real-overrides-virtual.
+ replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "real-overrides-virtual");
+ hasValues(dn, "preferredlanguage", "ja");
+ doesNotHaveValues(dn, "preferredlanguage", "fr");
- // virtual-overrides-real.
- replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "virtual-overrides-real");
- hasValues(dn, "preferredlanguage", "fr");
- doesNotHaveValues(dn, "preferredlanguage", "ja");
+ // virtual-overrides-real.
+ replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "virtual-overrides-real");
+ hasValues(dn, "preferredlanguage", "fr");
+ doesNotHaveValues(dn, "preferredlanguage", "ja");
- // merge-real-and-virtual.
- replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "merge-real-and-virtual");
- hasValues(dn, "preferredlanguage", "ja", "fr");
-
- // cleanup.
- deleteAttribute(testEntry, "preferredLanguage", "ja");
+ // merge-real-and-virtual.
+ replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "merge-real-and-virtual");
+ hasValues(dn, "preferredlanguage", "ja", "fr");
+ }
+ finally
+ {
+ // cleanup.
+ deleteAttribute(testEntry, "preferredLanguage");
+ deleteAttribute(collectiveSubentry, "collectiveConflictBehavior");
+ }
}
private void hasValues(DN dn, String attrTypeLower, String... values) throws DirectoryException
@@ -374,29 +387,35 @@
@Test
public void testCollectiveExclusions() throws Exception
{
- DN dn = testEntry.getName();
+ try
+ {
+ DN dn = testEntry.getName();
- replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "real-overrides-virtual");
- replaceAttribute(testEntry, "collectiveExclusions", "c-l");
- hasNoAttribute(dn, "c-l");
- hasValues(dn, "preferredlanguage", "fr");
+ replaceAttribute(collectiveSubentry, "collectiveConflictBehavior", "real-overrides-virtual");
+ replaceAttribute(testEntry, "collectiveExclusions", "c-l");
+ hasNoAttribute(dn, "c-l");
+ hasValues(dn, "preferredlanguage", "fr");
- replaceAttribute(testEntry, "collectiveExclusions", "preferredLanguage");
- hasNoAttribute(dn, "preferredlanguage");
- hasValues(dn, "c-l", "Savoie");
+ replaceAttribute(testEntry, "collectiveExclusions", "preferredLanguage");
+ hasNoAttribute(dn, "preferredlanguage");
+ hasValues(dn, "c-l", "Savoie");
- replaceAttribute(testEntry, "collectiveExclusions", "excludeAllCollectiveAttributes");
- hasNoAttribute(dn, "preferredlanguage");
- hasNoAttribute(dn, "c-l");
-
- // cleanup.
- deleteAttribute(testEntry, "collectiveExclusions", "excludeAllCollectiveAttributes");
+ replaceAttribute(testEntry, "collectiveExclusions", "excludeAllCollectiveAttributes");
+ hasNoAttribute(dn, "preferredlanguage");
+ hasNoAttribute(dn, "c-l");
+ }
+ finally
+ {
+ // cleanup.
+ deleteAttribute(testEntry, "collectiveExclusions");
+ deleteAttribute(collectiveSubentry, "collectiveConflictBehavior");
+ }
}
- private void deleteAttribute(Entry e, String attrType, String oldValue)
+ private void deleteAttribute(Entry e, String attrType)
{
InternalClientConnection conn = getRootConnection();
- List<RawModification> mods = newRawModifications(DELETE, attrType, oldValue);
+ List<RawModification> mods = newRawModifications(DELETE, attrType);
ModifyOperation modifyOperation = conn.processModify(ByteString.valueOf(e.getName().toNormalizedString()), mods);
assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
}
@@ -409,10 +428,12 @@
assertEquals(modifyOperation.getResultCode(), ResultCode.SUCCESS);
}
- private List<RawModification> newRawModifications(ModificationType modType, String attrType, String value)
+
+
+ private List<RawModification> newRawModifications(ModificationType modType,
+ String attrType, String... values)
{
- ArrayList<ByteString> values = newArrayList(ByteString.valueOf(value));
- LDAPAttribute attr = new LDAPAttribute(attrType, values);
+ LDAPAttribute attr = new LDAPAttribute(attrType, Arrays.asList(values));
return newList((RawModification) new LDAPModification(modType, attr));
}
--
Gitblit v1.10.0