From 02805157fa504b3dbf701a62280ca9aaf82183b5 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Wed, 05 Sep 2007 20:12:11 +0000
Subject: [PATCH] Partial fix for issue 1449: administration framework aggregation support
---
opends/tests/unit-tests-testng/src/server/org/opends/server/admin/TestCfg.java | 155 +++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 137 insertions(+), 18 deletions(-)
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/TestCfg.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/TestCfg.java
index 3745d18..53e2e37 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/TestCfg.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/admin/TestCfg.java
@@ -28,7 +28,14 @@
+import java.util.ResourceBundle;
+
import org.opends.server.admin.std.meta.RootCfgDefn;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.schema.ObjectClassSyntax;
+import org.opends.server.types.ByteString;
+import org.opends.server.types.ByteStringFactory;
+import org.opends.server.types.ObjectClass;
@@ -51,8 +58,7 @@
// Create a one-to-many relation for test-parent components.
static {
- InstantiableRelationDefinition.Builder<TestParentCfgClient, TestParentCfg> builder =
- new InstantiableRelationDefinition.Builder<TestParentCfgClient, TestParentCfg>(
+ InstantiableRelationDefinition.Builder<TestParentCfgClient, TestParentCfg> builder = new InstantiableRelationDefinition.Builder<TestParentCfgClient, TestParentCfg>(
RootCfgDefn.getInstance(), "test-one-to-many-parent",
"test-one-to-many-parents", TestParentCfgDefn.getInstance());
RD_TEST_ONE_TO_MANY_PARENT = builder.getInstance();
@@ -60,13 +66,94 @@
// Create a one-to-many relation for test-parent components.
static {
- OptionalRelationDefinition.Builder<TestParentCfgClient, TestParentCfg> builder =
- new OptionalRelationDefinition.Builder<TestParentCfgClient, TestParentCfg>(
+ OptionalRelationDefinition.Builder<TestParentCfgClient, TestParentCfg> builder = new OptionalRelationDefinition.Builder<TestParentCfgClient, TestParentCfg>(
RootCfgDefn.getInstance(), "test-one-to-zero-or-one-parent",
TestParentCfgDefn.getInstance());
RD_TEST_ONE_TO_ZERO_OR_ONE_PARENT = builder.getInstance();
}
+ // Test parent object class definition.
+ private static ObjectClass TEST_PARENT_OCD = null;
+
+ // Test child object class definition.
+ private static ObjectClass TEST_CHILD_OCD = null;
+
+
+
+ /**
+ * Registers test parent and child object class definitions and any
+ * required resource bundles.
+ * <p>
+ * Unit tests which call this method <b>must</b> call
+ * {@link #cleanup()} on completion.
+ *
+ * @throws Exception
+ * If an unexpected error occurred.
+ */
+ public synchronized static void setUp() throws Exception {
+ if (TEST_PARENT_OCD == null) {
+ String ocd = "( 1.3.6.1.4.1.26027.1.2.4455114401 "
+ + "NAME 'ds-cfg-test-parent-dummy' "
+ + "SUP top STRUCTURAL "
+ + "MUST ( cn $ ds-cfg-virtual-attribute-class $ "
+ + "ds-cfg-virtual-attribute-enabled $ ds-cfg-virtual-attribute-type ) "
+ + "MAY ( ds-cfg-virtual-attribute-base-dn $ ds-cfg-virtual-attribute-group-dn $ "
+ + "ds-cfg-virtual-attribute-filter $ ds-cfg-virtual-attribute-conflict-behavior ) "
+ + "X-ORIGIN 'OpenDS Directory Server' )";
+ ByteString b = ByteStringFactory.create(ocd);
+
+ TEST_PARENT_OCD = ObjectClassSyntax.decodeObjectClass(b, DirectoryServer
+ .getSchema(), false);
+ }
+
+ if (TEST_CHILD_OCD == null) {
+ String ocd = "( 1.3.6.1.4.1.26027.1.2.4455114402 "
+ + "NAME 'ds-cfg-test-child-dummy' "
+ + "SUP top STRUCTURAL "
+ + "MUST ( cn $ ds-cfg-virtual-attribute-class $ "
+ + "ds-cfg-virtual-attribute-enabled $ ds-cfg-virtual-attribute-type ) "
+ + "MAY ( ds-cfg-virtual-attribute-base-dn $ ds-cfg-virtual-attribute-group-dn $ "
+ + "ds-cfg-virtual-attribute-filter $ ds-cfg-virtual-attribute-conflict-behavior $"
+ + "ds-cfg-backend-base-dn) " + "X-ORIGIN 'OpenDS Directory Server' )";
+ ByteString b = ByteStringFactory.create(ocd);
+
+ TEST_CHILD_OCD = ObjectClassSyntax.decodeObjectClass(b, DirectoryServer
+ .getSchema(), false);
+ }
+
+ {
+ // Register the test parent object class.
+ DirectoryServer.registerObjectClass(TEST_PARENT_OCD, true);
+
+ // Register the test parent resource bundle.
+ TestParentCfgDefn d = TestParentCfgDefn.getInstance();
+ String baseName = d.getClass().getName();
+ ResourceBundle resourceBundle = ResourceBundle.getBundle(baseName);
+ ManagedObjectDefinitionI18NResource.getInstance().setResourceBundle(d,
+ resourceBundle);
+ }
+
+ {
+ // Register the test child object class.
+ DirectoryServer.registerObjectClass(TEST_CHILD_OCD, true);
+
+ // Register the test child resource bundle.
+ TestChildCfgDefn d = TestChildCfgDefn.getInstance();
+ String baseName = d.getClass().getName();
+ ResourceBundle resourceBundle = ResourceBundle.getBundle(baseName);
+ ManagedObjectDefinitionI18NResource.getInstance().setResourceBundle(d,
+ resourceBundle);
+ }
+
+ // Ensure that the relations are registered (do this after things
+ // that can fail and leave tests in a bad state).
+ RootCfgDefn.getInstance().registerRelationDefinition(
+ RD_TEST_ONE_TO_MANY_PARENT);
+ RootCfgDefn.getInstance().registerRelationDefinition(
+ RD_TEST_ONE_TO_ZERO_OR_ONE_PARENT);
+ LDAPProfile.getInstance().pushWrapper(new MockLDAPProfile());
+ }
+
/**
@@ -74,10 +161,24 @@
* framework.
*/
public static void cleanup() {
- RootCfgDefn.getInstance().deregisterRelationDefinition(
- RD_TEST_ONE_TO_MANY_PARENT);
- RootCfgDefn.getInstance().deregisterRelationDefinition(
- RD_TEST_ONE_TO_ZERO_OR_ONE_PARENT);
+ LDAPProfile.getInstance().popWrapper();
+
+ {
+ RootCfgDefn.getInstance().deregisterRelationDefinition(
+ RD_TEST_ONE_TO_MANY_PARENT);
+ RootCfgDefn.getInstance().deregisterRelationDefinition(
+ RD_TEST_ONE_TO_ZERO_OR_ONE_PARENT);
+ DirectoryServer.deregisterObjectClass(TEST_PARENT_OCD);
+ TestParentCfgDefn d = TestParentCfgDefn.getInstance();
+ ManagedObjectDefinitionI18NResource.getInstance().removeResourceBundle(d);
+ }
+
+ {
+ DirectoryServer.deregisterObjectClass(TEST_CHILD_OCD);
+ TestChildCfgDefn d = TestChildCfgDefn.getInstance();
+ ManagedObjectDefinitionI18NResource.getInstance().removeResourceBundle(d);
+ }
+
}
@@ -86,16 +187,13 @@
* Gets the one-to-many relation between the root and test-parent
* components.
* <p>
- * Unit tests which call this method <b>must</b> call
- * {@link #cleanup()} on completion.
+ * Unit tests which call this method <b>must</b> have already
+ * called {@link #setUp()}.
*
* @return Returns the one-to-many relation between the root and
* test-parent components.
*/
public static InstantiableRelationDefinition<TestParentCfgClient, TestParentCfg> getTestOneToManyParentRelationDefinition() {
- // Ensure that the relation is registered.
- RootCfgDefn.getInstance().registerRelationDefinition(
- RD_TEST_ONE_TO_MANY_PARENT);
return RD_TEST_ONE_TO_MANY_PARENT;
}
@@ -105,21 +203,42 @@
* Gets the one-to-zero-or-one relation between the root and a
* test-parent component.
* <p>
- * Unit tests which call this method <b>must</b> call
- * {@link #cleanup()} on completion.
+ * Unit tests which call this method <b>must</b> have already
+ * called {@link #setUp()}.
*
* @return Returns the one-to-zero-or-one relation between the root
* and a test-parent component.
*/
public static OptionalRelationDefinition<TestParentCfgClient, TestParentCfg> getTestOneToZeroOrOneParentRelationDefinition() {
- // Ensure that the relation is registered.
- RootCfgDefn.getInstance().registerRelationDefinition(
- RD_TEST_ONE_TO_ZERO_OR_ONE_PARENT);
return RD_TEST_ONE_TO_ZERO_OR_ONE_PARENT;
}
+ /**
+ * Adds a constraint temporarily with test child definition.
+ *
+ * @param constraint
+ * The constraint.
+ */
+ public static void addConstraint(Constraint constraint) {
+ TestChildCfgDefn.getInstance().registerConstraint(constraint);
+ }
+
+
+
+ /**
+ * Removes a constraint from the test child definition.
+ *
+ * @param constraint
+ * The constraint.
+ */
+ public static void removeConstraint(Constraint constraint) {
+ TestChildCfgDefn.getInstance().deregisterConstraint(constraint);
+ }
+
+
+
// Prevent instantiation.
private TestCfg() {
// No implementation required.
--
Gitblit v1.10.0