From 8b3cd28204e15e0a98ce038b355f100cd7c44e3c Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <capponi.nicolas@gmail.com>
Date: Thu, 28 Jan 2016 08:28:20 +0000
Subject: [PATCH] OPENDJ-1632 (PR-201) Migrate AttributeType in one shot

---
 opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java |   86 +++++++++++++++++++++++++++----------------
 1 files changed, 54 insertions(+), 32 deletions(-)

diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
index 11d7bca..d2ec8c8 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/SchemaBackendTestCase.java
@@ -22,7 +22,7 @@
  *
  *
  *      Copyright 2006-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2013-2015 ForgeRock AS.
+ *      Portions Copyright 2013-2016 ForgeRock AS.
  */
 package org.opends.server.backends;
 
@@ -43,6 +43,7 @@
 import org.forgerock.opendj.ldap.ByteString;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchScope;
+import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.opendj.ldap.schema.MatchingRule;
 import org.forgerock.opendj.ldap.schema.Schema;
 import org.forgerock.opendj.ldap.schema.SchemaBuilder;
@@ -58,7 +59,17 @@
 import org.opends.server.protocols.internal.SearchRequest;
 import org.opends.server.schema.SchemaConstants;
 import org.opends.server.tools.LDAPModify;
-import org.opends.server.types.*;
+import org.opends.server.types.DITContentRule;
+import org.opends.server.types.DN;
+import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Entry;
+import org.opends.server.types.ExistingFileBehavior;
+import org.opends.server.types.InitializationException;
+import org.opends.server.types.LDIFExportConfig;
+import org.opends.server.types.LDIFImportConfig;
+import org.opends.server.types.MatchingRuleUse;
+import org.opends.server.types.ObjectClass;
+import org.opends.server.types.SearchFilter;
 import org.opends.server.util.CollectionUtils;
 import org.opends.server.util.ServerConstants;
 import org.testng.annotations.BeforeClass;
@@ -3169,10 +3180,15 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     int ruleID = 999001;
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
 
     assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
-    assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, true);
+  }
+
+  private void assertSchemaHasDITStructureRule(int ruleID, boolean expected)
+  {
+    assertEquals(DirectoryServer.getSchema().getDITStructureRulesByID().containsKey(ruleID), expected);
   }
 
   /**
@@ -3215,10 +3231,10 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     int ruleID = 999002;
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
 
     assertEquals(runModify(argsPermissive(), ldif, System.err), 0);
-    assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, true);
   }
 
   /**
@@ -3255,14 +3271,14 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     int ruleID = 999010;
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
 
     File schemaFile = new File(SchemaConfigManager.getSchemaDirectoryPath(),
                                "98-schema-test-dsr.ldif");
     assertFalse(schemaFile.exists());
 
     assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
-    assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, true);
 
     assertTrue(schemaFile.exists());
   }
@@ -3314,10 +3330,10 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     int ruleID = 999003;
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
 
     assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
-    assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, true);
   }
 
   /**
@@ -3340,10 +3356,10 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     int ruleID = 999004;
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
 
     assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
   }
 
   /**
@@ -3377,10 +3393,10 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     int ruleID = 999005;
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
 
     assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
   }
 
   /**
@@ -3499,10 +3515,10 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     int ruleID = 999006;
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
 
     assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
   }
 
   /**
@@ -3556,10 +3572,10 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     int ruleID = 999007;
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
 
     assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
-    assertTrue(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, true);
 
     ldif = toLdif(
          "dn: cn=schema",
@@ -3575,7 +3591,7 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
-    assertFalse(DirectoryServer.getSchema().hasDITStructureRule(ruleID));
+    assertSchemaHasDITStructureRule(ruleID, false);
   }
 
   private MatchingRule getMatchingRule(String name, String oid, boolean isObsolete)
@@ -3612,7 +3628,7 @@
               "NAME 'testAddMRUSuccessful' APPLIES cn " +
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
 
@@ -3644,7 +3660,7 @@
               "X-SCHEMA-FILE '98-schema-test-mru.ldif' " +
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     File schemaFile = new File(SchemaConfigManager.getSchemaDirectoryPath(),
                                "98-schema-test-mru.ldif");
@@ -3688,7 +3704,7 @@
               "NAME 'testReplaceMRUSuccessful' APPLIES ( cn $ sn ) " +
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     assertEquals(runModify(argsPermissive(), ldif, System.err), 0);
 
@@ -3730,7 +3746,7 @@
               "NAME 'testRemoveAndAddMRU' APPLIES ( cn $ sn ) " +
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
 
@@ -3769,7 +3785,7 @@
               "NAME 'testAddMRUMRConflict2' APPLIES sn " +
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
 
@@ -3822,7 +3838,7 @@
               "APPLIES xxxundefinedxxx " +
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
   }
@@ -3850,11 +3866,16 @@
               "APPLIES ( cn $ xxxundefinedxxx ) " +
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
   }
 
+  private void assertSchemaDoesNotHaveMatchingRuleUse(MatchingRule matchingRule)
+  {
+    assertFalse(DirectoryServer.getSchema().getMatchingRuleUses().containsKey(matchingRule));
+  }
+
   /**
    * Tests the behavior of the schema backend when attempting to add a new
    * matching rule whose matching rule is OBSOLETE.
@@ -3876,7 +3897,7 @@
               "NAME 'testAddMatchingRuleUseObsoleteMatchingRule' " +
               "APPLIES cn X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
   }
@@ -3907,7 +3928,7 @@
               "APPLIES testAddMRUObsoleteAT " +
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     assertNotEquals(runModify(argsNotPermissive(), ldif), 0);
   }
@@ -3964,7 +3985,7 @@
               "NAME 'testRemoveMRUSuccessful' APPLIES cn " +
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
-    assertFalse(DirectoryServer.getSchema().hasMatchingRuleUse(matchingRule));
+    assertSchemaDoesNotHaveMatchingRuleUse(matchingRule);
 
     assertEquals(runModify(argsNotPermissive(), ldif, System.err), 0);
 
@@ -4236,7 +4257,8 @@
               "X-ORIGIN 'SchemaBackendTestCase' )");
 
     String attrName = "testmatchingruleusematchingruleat1";
-    assertNull(DirectoryServer.getSchema().getAttributeType(attrName));
+
+    assertFalse(DirectoryServer.getSchema().hasAttributeType(attrName));
 
     assertEquals(runModify(argsNotPermissive(), ldif, System.err), 20);
   }
@@ -4272,7 +4294,7 @@
          "dn: cn=schema",
          "changetype: modify",
          "add: objectClasses",
-         "objectClasses: ( testissue1318oc1-oid NAME 'testIssue1381OC1' )",
+         "objectClasses: ( testissue1318oc1-oid NAME 'testIssue1381OC1')",
          "",
          "dn: cn=schema",
          "changetype: modify",
@@ -4280,7 +4302,7 @@
          "objectClasses: ( testissue1318oc1-oid NAME 'testIssue1381OC1' )",
          "-",
          "add: attributeTypes",
-         "attributeTypes: ( testissue1318at-oid NAME 'testIssue1381AT' )",
+         "attributeTypes: ( testissue1318at-oid NAME 'testIssue1381AT' SUP name)",
          "-",
          "add: objectClasses",
          "objectClasses: ( testissue1318oc2-oid NAME 'testIssue1381OC2' " +

--
Gitblit v1.10.0