From 34ac48d938d5f3411505f7d0f883a585148ec716 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Fri, 08 Jan 2010 18:13:58 +0000
Subject: [PATCH] * various minor code fixes * fix unit tests * remove TODOs from Javadoc (issues are now in Issue Tracker)

---
 sdk/test-output/sdk/testng-failed.xml                                                             |   14 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreEqualityMatchingRuleTest.java     |    2 
 sdk/src/org/opends/sdk/AbstractLoadBalancingAlgorithm.java                                        |  121 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeSyntaxTest.java                |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5SubstringMatchingRuleTest.java |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/OtherMailboxSyntaxTest.java                 |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SchemaUtilsTest.java                        |  116 +
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleUseSyntaxTest.java              |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreSubstringMatchingRuleTest.java    |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/LDAPSyntaxTest.java                         |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreOrderingMatchingRuleTest.java     |    2 
 sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.properties                              |    1 
 sdk/test-output/testng-results.xml                                                                | 1041 +++++++++++
 sdk/src/org/opends/sdk/AuthenticatedConnectionFactory.java                                        |    1 
 sdk/test-output/sdk/testng.xml.html                                                               |    1 
 sdk/src/org/opends/sdk/ldif/package-info.java                                                     |   12 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/TestListener.java                                  | 1458 ++++++++++++++++
 sdk/test-output/testng-failed.xml                                                                 |   14 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactSubstringMatchingRuleTest.java     |    2 
 sdk/test-output/sdk/reporter-output.html                                                          |    1 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GuideSyntaxTest.java                        |    2 
 sdk/test-output/sdk/methods.html                                                                  |  150 +
 sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.xml                                     |   75 
 sdk/test-output/testng.css                                                                        |    9 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleSyntaxTest.java                 |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SubstitutionSyntaxTestCase.java             |   71 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BooleanEqualityMatchingRuleTest.java        |    2 
 sdk/test-output/sdk/methods-alphabetical.html                                                     |  150 +
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringSyntaxTest.java                    |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GeneralizedTimeSyntaxTest.java              |  137 -
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CoreSchemaTest.java                         |    2 
 sdk/src/com/sun/opends/sdk/tools/ModRate.java                                                     |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/EnumSyntaxTestCase.java                     |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SyntaxTestCase.java                         |    4 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/IA5StringSyntaxTest.java                    |    2 
 sdk/test-output/sdk/groups.html                                                                   |    5 
 sdk/tests/unit-tests-testng/src/com/sun/opends/sdk/util/StaticUtilsTest.java                      |  130 +
 sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.xml                          |   14 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/TelexSyntaxTest.java                        |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/DITContentRuleSyntaxTest.java               |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeTest.java                      |   58 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactOrderingMatchingRuleTest.java      |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/RegexSyntaxTestCase.java                    |   16 
 sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.html                                    |  774 ++++++++
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/ApproximateMatchingRuleTest.java            |   15 
 sdk/src/org/opends/sdk/package-info.java                                                          |   41 
 sdk/test-output/sdk/main.html                                                                     |    2 
 sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.properties                   |    1 
 sdk/test-output/sdk/index.html                                                                    |    6 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5EqualityMatchingRuleTest.java  |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5EqualityMatchingRuleTest.java   |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/SuiteRunner.java                                   |   54 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UTCTimeSyntaxTest.java                      |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringEqualityMatchingRuleTest.java      |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactEqualityMatchingRuleTest.java      |    2 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UUIDSyntaxTest.java                         |    2 
 sdk/test-output/sdk/classes.html                                                                  |   42 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/OpenDSTestCase.java                                |  166 +
 sdk/src/com/sun/opends/sdk/util/StaticUtils.java                                                  |   32 
 sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.html                         |  190 ++
 sdk/test-output/sdk/toc.html                                                                      |   30 
 sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5SubstringMatchingRuleTest.java  |    2 
 sdk/test-output/sdk/methods-not-run.html                                                          |    2 
 sdk/src/org/opends/sdk/schema/SchemaUtils.java                                                    |  320 +--
 sdk/tests/unit-tests-testng/src/org/opends/sdk/LinkedAttributeTest.java                           |   25 
 65 files changed, 4,759 insertions(+), 594 deletions(-)

diff --git a/sdk/src/com/sun/opends/sdk/tools/ModRate.java b/sdk/src/com/sun/opends/sdk/tools/ModRate.java
index c9d9fdd..31a8c876 100644
--- a/sdk/src/com/sun/opends/sdk/tools/ModRate.java
+++ b/sdk/src/com/sun/opends/sdk/tools/ModRate.java
@@ -129,7 +129,7 @@
             + "measure modify performance");
     // TODO: correct usage
     ArgumentParser argParser =
-        new ArgumentParser(SearchRate.class.getName(), toolDescription,
+        new ArgumentParser(ModRate.class.getName(), toolDescription,
             false, true, 1, 0, "[modifyString ...]");
     ArgumentParserConnectionFactory connectionFactory;
     ModifyPerformanceRunner runner;
diff --git a/sdk/src/com/sun/opends/sdk/util/StaticUtils.java b/sdk/src/com/sun/opends/sdk/util/StaticUtils.java
index 8cdd478..ccd41b9 100644
--- a/sdk/src/com/sun/opends/sdk/util/StaticUtils.java
+++ b/sdk/src/com/sun/opends/sdk/util/StaticUtils.java
@@ -44,7 +44,6 @@
 
 
 
-
 /**
  * Common utility methods.
  */
@@ -1183,8 +1182,8 @@
       b = (byte) 0xF0;
       break;
     default:
-      final LocalizableMessage message = ERR_HEX_DECODE_INVALID_CHARACTER.get(
-          new String(new char[] { c1, c2 }), c1);
+      final LocalizableMessage message = ERR_HEX_DECODE_INVALID_CHARACTER
+          .get(new String(new char[] { c1, c2 }), c1);
       throw new ParseException(message.toString(), 0);
     }
 
@@ -1245,8 +1244,8 @@
       b |= 0x0F;
       break;
     default:
-      final LocalizableMessage message = ERR_HEX_DECODE_INVALID_CHARACTER.get(
-          new String(new char[] { c1, c2 }), c1);
+      final LocalizableMessage message = ERR_HEX_DECODE_INVALID_CHARACTER
+          .get(new String(new char[] { c1, c2 }), c1);
       throw new ParseException(message.toString(), 0);
     }
 
@@ -1710,17 +1709,18 @@
       throws DataFormatException
   {
     byte[] inputBytes = input.toByteArray();
-    byte[] outputBytes = new byte[uncompressedSize > 0 ? uncompressedSize : 0];
+    byte[] outputBytes = new byte[uncompressedSize > 0 ? uncompressedSize
+        : 0];
 
-    int decompressResult = uncompress(inputBytes, 0,
-        inputBytes.length, outputBytes, 0, outputBytes.length);
+    int decompressResult = uncompress(inputBytes, 0, inputBytes.length,
+        outputBytes, 0, outputBytes.length);
 
     if (decompressResult < 0)
     {
       // The destination buffer wasn't big enough. Resize and retry.
       outputBytes = new byte[-decompressResult];
-      decompressResult = uncompress(inputBytes, 0,
-          inputBytes.length, outputBytes, 0, outputBytes.length);
+      decompressResult = uncompress(inputBytes, 0, inputBytes.length,
+          outputBytes, 0, outputBytes.length);
     }
 
     if (decompressResult >= 0)
@@ -1834,8 +1834,8 @@
           }
         }
       }
-      final LocalizableMessage message = ERR_INVALID_ESCAPE_CHAR.get(reader
-          .getString(), c1);
+      final LocalizableMessage message = ERR_INVALID_ESCAPE_CHAR.get(
+          reader.getString(), c1);
       throw DecodeException.error(message);
     }
 
@@ -1843,8 +1843,8 @@
     // comprise the escaped value.
     if (reader.remaining() == 0)
     {
-      final LocalizableMessage message = ERR_HEX_DECODE_INVALID_LENGTH.get(reader
-          .getString());
+      final LocalizableMessage message = ERR_HEX_DECODE_INVALID_LENGTH
+          .get(reader.getString());
 
       throw DecodeException.error(message);
     }
@@ -1907,8 +1907,8 @@
       b |= 0x0F;
       break;
     default:
-      final LocalizableMessage message = ERR_HEX_DECODE_INVALID_CHARACTER.get(
-          new String(new char[] { c1, c2 }), c1);
+      final LocalizableMessage message = ERR_HEX_DECODE_INVALID_CHARACTER
+          .get(new String(new char[] { c1, c2 }), c1);
       throw DecodeException.error(message);
     }
     return (char) b;
diff --git a/sdk/src/org/opends/sdk/AbstractLoadBalancingAlgorithm.java b/sdk/src/org/opends/sdk/AbstractLoadBalancingAlgorithm.java
index c903cc2..b5233a1 100644
--- a/sdk/src/org/opends/sdk/AbstractLoadBalancingAlgorithm.java
+++ b/sdk/src/org/opends/sdk/AbstractLoadBalancingAlgorithm.java
@@ -1,5 +1,34 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Copyright 2009 Sun Microsystems, Inc.
+ */
+
 package org.opends.sdk;
 
+
+
 import com.sun.opends.sdk.util.Validator;
 import com.sun.opends.sdk.util.StaticUtils;
 
@@ -7,20 +36,27 @@
 import java.util.ArrayList;
 import java.util.logging.Level;
 
+
+
 /**
- * Created by IntelliJ IDEA. User: digitalperk Date: Dec 15, 2009 Time: 3:49:17
- * PM To change this template use File | Settings | File Templates.
+ * Created by IntelliJ IDEA. User: digitalperk Date: Dec 15, 2009 Time:
+ * 3:49:17 PM To change this template use File | Settings | File
+ * Templates.
  */
-public abstract class AbstractLoadBalancingAlgorithm
-    implements LoadBalancingAlgorithm
+public abstract class AbstractLoadBalancingAlgorithm implements
+    LoadBalancingAlgorithm
 {
   protected final List<MonitoredConnectionFactory> factoryList;
 
-  protected AbstractLoadBalancingAlgorithm(ConnectionFactory<?>... factories)
+
+
+  protected AbstractLoadBalancingAlgorithm(
+      ConnectionFactory<?>... factories)
   {
-    Validator.ensureNotNull(factories);
-    factoryList = new ArrayList<MonitoredConnectionFactory>(factories.length);
-    for(ConnectionFactory<?> f : factories)
+    Validator.ensureNotNull((Object[]) factories);
+    factoryList = new ArrayList<MonitoredConnectionFactory>(
+        factories.length);
+    for (ConnectionFactory<?> f : factories)
     {
       factoryList.add(new MonitoredConnectionFactory(f));
     }
@@ -28,30 +64,42 @@
     new MonitorThread().start();
   }
 
-  protected class MonitoredConnectionFactory
-      extends AbstractConnectionFactory<AsynchronousConnection>
-      implements ResultHandler<AsynchronousConnection>
+
+
+  protected class MonitoredConnectionFactory extends
+      AbstractConnectionFactory<AsynchronousConnection> implements
+      ResultHandler<AsynchronousConnection>
   {
     private final ConnectionFactory<?> factory;
+
     private volatile boolean isOperational;
+
     private volatile FutureResult<?> pendingConnectFuture;
 
+
+
     private MonitoredConnectionFactory(ConnectionFactory<?> factory)
     {
       this.factory = factory;
       this.isOperational = true;
     }
 
+
+
     public boolean isOperational()
     {
       return isOperational;
     }
 
+
+
     public void handleErrorResult(ErrorResultException error)
     {
       isOperational = false;
     }
 
+
+
     public void handleResult(AsynchronousConnection result)
     {
       isOperational = true;
@@ -59,44 +107,43 @@
       result.close();
     }
 
-    public FutureResult<? extends AsynchronousConnection>
-      getAsynchronousConnection(
+
+
+    public FutureResult<? extends AsynchronousConnection> getAsynchronousConnection(
         final ResultHandler<? super AsynchronousConnection> resultHandler)
     {
-      ResultHandler handler = new ResultHandler<AsynchronousConnection>()
+      ResultHandler<AsynchronousConnection> handler = new ResultHandler<AsynchronousConnection>()
       {
         public void handleErrorResult(ErrorResultException error)
         {
           isOperational = false;
-          if(resultHandler != null)
+          if (resultHandler != null)
           {
             resultHandler.handleErrorResult(error);
           }
           if (StaticUtils.DEBUG_LOG.isLoggable(Level.WARNING))
           {
-            StaticUtils.DEBUG_LOG
-                .warning(String
-                    .format(
-                    "Connection factory " + factory +
-                        " is no longer operational: "
-                        + error.getMessage()));
+            StaticUtils.DEBUG_LOG.warning(String
+                .format("Connection factory " + factory
+                    + " is no longer operational: "
+                    + error.getMessage()));
           }
         }
 
+
+
         public void handleResult(AsynchronousConnection result)
         {
           isOperational = true;
-          if(resultHandler != null)
+          if (resultHandler != null)
           {
             resultHandler.handleResult(result);
           }
           if (StaticUtils.DEBUG_LOG.isLoggable(Level.WARNING))
           {
-            StaticUtils.DEBUG_LOG
-                .warning(String
-                    .format(
-                    "Connection factory " + factory +
-                        " is now operational"));
+            StaticUtils.DEBUG_LOG.warning(String
+                .format("Connection factory " + factory
+                    + " is now operational"));
           }
         }
       };
@@ -104,6 +151,8 @@
     }
   }
 
+
+
   private class MonitorThread extends Thread
   {
     private MonitorThread()
@@ -112,21 +161,25 @@
       this.setDaemon(true);
     }
 
+
+
     public void run()
     {
-      while(true)
+      while (true)
       {
-        for(MonitoredConnectionFactory f : factoryList)
+        for (MonitoredConnectionFactory f : factoryList)
         {
-          if(!f.isOperational && (f.pendingConnectFuture == null ||
-              f.pendingConnectFuture.isDone()))
+          if (!f.isOperational
+              && (f.pendingConnectFuture == null || f.pendingConnectFuture
+                  .isDone()))
           {
             if (StaticUtils.DEBUG_LOG.isLoggable(Level.FINEST))
             {
-              StaticUtils.DEBUG_LOG
-                  .finest(String.format("Attempting connect on factory " + f));
+              StaticUtils.DEBUG_LOG.finest(String
+                  .format("Attempting connect on factory " + f));
             }
-            f.pendingConnectFuture = f.factory.getAsynchronousConnection(f);
+            f.pendingConnectFuture = f.factory
+                .getAsynchronousConnection(f);
           }
         }
         try
diff --git a/sdk/src/org/opends/sdk/AuthenticatedConnectionFactory.java b/sdk/src/org/opends/sdk/AuthenticatedConnectionFactory.java
index 4fd5102..bec779a 100644
--- a/sdk/src/org/opends/sdk/AuthenticatedConnectionFactory.java
+++ b/sdk/src/org/opends/sdk/AuthenticatedConnectionFactory.java
@@ -377,7 +377,6 @@
         protected AsynchronousConnection transformResult(
             BindResult result) throws ErrorResultException
         {
-          // FIXME: should make the result unmodifiable.
           return new AuthenticatedAsynchronousConnection(connection);
         }
 
diff --git a/sdk/src/org/opends/sdk/ldif/package-info.java b/sdk/src/org/opends/sdk/ldif/package-info.java
index 3353109..74795fb 100755
--- a/sdk/src/org/opends/sdk/ldif/package-info.java
+++ b/sdk/src/org/opends/sdk/ldif/package-info.java
@@ -27,18 +27,6 @@
 
 /**
  * Classes and interfaces for reading and writing LDIF.
- *
- * <h1>TO DO</h1>
- * <ul>
- * <li>Make LDIFEntryReader concurrent and support DN reservation.
- * <li>LDIF*Reader Reject and skip support
- * <li>Remaining schema checking (e.g. binary option)
- * <li>Fix error messages (prefix with file/lineno)
- * <li>Support multiple LDIF*Reader sources
- * <li>Support EntryWriter splitting
- * <li>Support LDIFConnectionFactory
- * <li>Comments and optional charset encoding?
- * </ul>
  */
 package org.opends.sdk.ldif;
 
diff --git a/sdk/src/org/opends/sdk/package-info.java b/sdk/src/org/opends/sdk/package-info.java
index 78eac13..fdd33fd 100755
--- a/sdk/src/org/opends/sdk/package-info.java
+++ b/sdk/src/org/opends/sdk/package-info.java
@@ -27,47 +27,6 @@
 
 /**
  * Core OpenDS SDK API including connections, entries, and attributes.
- *
- * <h1>TODO</h1>
- * <ul>
- * <li>LDIF support <b>[Matt]</b>
- * <ul>
- * <li>LDIFReader
- * <ul>
- * <li>filtered reader (this should wrap an entry enumeration)
- * <li>should implement generic entry enumeration API.
- * </ul>
- * <li>LDIFWriter
- * <ul>
- * <li>add comments for DNs
- * <li>comments in native charset
- * <li>rest of output must be in ASCII
- * </ul>
- * </ul>
- * <li>Logging?
- * <li>Exceptions sub-types for ErrorResultException (e.g. referrals, assertion failures, client side errors).
- * <li>SearchResultEntry must be cheap to decode in non schema case.
- * <li>How should non-default Grizzly transport be specified by the application?
- * <li>Unmodifiable requests and responses
- * <li>Check that it is possible to create SearchResultEntry objects with empty attributes.
- * <li>Nameable? All objects that have a getName() method
- * <li>Enum / GeneralizedTime parsing function
- * <li>LDAP connection request timeouts configured using LDAPConnectionOptions.
- * <li>Re-instate Connection.isValid()
- * <li>Support parameters in result handlers.
- * <li>Javadoc
- * <li>Unit tests
- * <li>LDAP URL support and referral support
- * <li>Escapes in substring filter
- * <li>Threading model for decoding messages and calling result handlers
- * <li>SASL for CLI tools
- * <li>IBM JVM SSL support?
- * <li>Intermediate response support.
- * <li>Consider using Collections instead of Iterables.
- * <li>Get rid of write lock on connections so encoding can be done in parallel using Grizzly's buffers
- * <li>Should we dispose of the SASLContext on rebind?
- * </ul>
- *
  */
 package org.opends.sdk;
 
diff --git a/sdk/src/org/opends/sdk/schema/SchemaUtils.java b/sdk/src/org/opends/sdk/schema/SchemaUtils.java
index dc1b056..0f4b596 100644
--- a/sdk/src/org/opends/sdk/schema/SchemaUtils.java
+++ b/sdk/src/org/opends/sdk/schema/SchemaUtils.java
@@ -51,7 +51,7 @@
    * single quoted string, or an open parenthesis followed by a
    * space-delimited set of quoted strings or unquoted words followed by
    * a close parenthesis.
-   * 
+   *
    * @param reader
    *          The string representation of the definition.
    * @return The "extra" parameter value that was read.
@@ -108,8 +108,7 @@
             values.add(readQuotedString(reader));
             reader.skipWhitespaces();
             reader.mark();
-          }
-          while (reader.read() != ')');
+          } while (reader.read() != ')');
         }
       }
       else
@@ -118,8 +117,7 @@
         do
         {
           length++;
-        }
-        while (reader.read() != ' ');
+        } while (reader.read() != ' ');
 
         reader.reset();
         values = Collections.singletonList(reader.read(length));
@@ -129,7 +127,8 @@
     }
     catch (final StringIndexOutOfBoundsException e)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+          .get();
       throw DecodeException.error(message);
     }
   }
@@ -181,15 +180,13 @@
             values.add(readQuotedDescriptor(reader));
             reader.skipWhitespaces();
             reader.mark();
-          }
-          while (reader.read() != ')');
+          } while (reader.read() != ')');
         }
       }
       else
       {
-        final LocalizableMessage message =
-            ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
-                .valueOf(c), reader.pos() - 1);
+        final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+            .get(String.valueOf(c), reader.pos() - 1);
         throw DecodeException.error(message);
       }
 
@@ -197,92 +194,8 @@
     }
     catch (final StringIndexOutOfBoundsException e)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
-      throw DecodeException.error(message);
-    }
-  }
-
-
-
-  /**
-   * Reads the next OID from the definition, skipping over any leading
-   * spaces.
-   * 
-   * @param reader
-   *          The string representation of the definition.
-   * @return The OID read from the definition.
-   * @throws DecodeException
-   *           If a problem is encountered while reading the token name.
-   */
-  static String readNumericOID(SubstringReader reader)
-      throws DecodeException
-  {
-    // This must be a numeric OID. In that case, we will accept
-    // only digits and periods, but not consecutive periods.
-    boolean lastWasPeriod = false;
-    int length = 0;
-
-    // Skip over any spaces at the beginning of the value.
-    reader.skipWhitespaces();
-    reader.mark();
-
-    try
-    {
-      char c;
-      while ((c = reader.read()) != ' ' && c != '\'')
-      {
-        if (c == '.')
-        {
-          if (lastWasPeriod)
-          {
-            final LocalizableMessage message =
-                ERR_ATTR_SYNTAX_OID_CONSECUTIVE_PERIODS.get(reader
-                    .getString(), reader.pos() - 1);
-            throw DecodeException.error(message);
-          }
-          else
-          {
-            lastWasPeriod = true;
-          }
-        }
-        else if (!isDigit(c))
-        {
-          // Technically, this must be an illegal character. However, it
-          // is possible that someone just got sloppy and did not
-          // include a space between the name/OID and a closing
-          // parenthesis. In that case, we'll assume it's the end of the
-          // value.
-          if (c == ')')
-          {
-            break;
-          }
-
-          // This must have been an illegal character.
-          final LocalizableMessage message =
-              ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER.get(reader
-                  .getString(), reader.pos() - 1);
-          throw DecodeException.error(message);
-        }
-        else
-        {
-          lastWasPeriod = false;
-        }
-        length++;
-      }
-
-      if (length == 0)
-      {
-        final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_NO_VALUE.get();
-        throw DecodeException.error(message);
-      }
-
-      reader.reset();
-
-      return reader.read(length);
-    }
-    catch (final StringIndexOutOfBoundsException e)
-    {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+          .get();
       throw DecodeException.error(message);
     }
   }
@@ -292,7 +205,7 @@
   /**
    * Reads the attribute description or numeric OID, skipping over any
    * leading or trailing spaces.
-   * 
+   *
    * @param reader
    *          The string representation of the definition.
    * @return The attribute description or numeric OID read from the
@@ -303,31 +216,78 @@
    */
   static String readOID(SubstringReader reader) throws DecodeException
   {
-    int length = 1;
+    int length = 0;
     boolean enclosingQuote = false;
-    String oid;
 
     // Skip over any spaces at the beginning of the value.
     reader.skipWhitespaces();
     reader.mark();
 
-    try
+    if (reader.remaining() > 0)
     {
       // The next character must be either numeric (for an OID) or
       // alphabetic (for an attribute description).
-      char c = reader.read();
-      if (c == '\'')
+      if (reader.read() == '\'')
       {
         enclosingQuote = true;
         reader.mark();
-        c = reader.read();
       }
-      if (isDigit(c))
+      else
       {
         reader.reset();
-        oid = readNumericOID(reader);
       }
+    }
 
+    if (reader.remaining() > 0)
+    {
+      char c = reader.read();
+      length++;
+
+      if (isDigit(c))
+      {
+        // This must be a numeric OID. In that case, we will accept
+        // only digits and periods, but not consecutive periods.
+        boolean lastWasPeriod = false;
+
+        while (reader.remaining() > 0 && (c = reader.read()) != ' '
+            && c != ')' && !(c == '\'' && enclosingQuote))
+        {
+          if (c == '.')
+          {
+            if (lastWasPeriod)
+            {
+              final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_CONSECUTIVE_PERIODS
+                  .get(reader.getString(), reader.pos() - 1);
+              throw DecodeException.error(message);
+            }
+            else
+            {
+              lastWasPeriod = true;
+            }
+          }
+          else if (!isDigit(c))
+          {
+            // This must be an illegal character.
+            // This must have been an illegal character.
+            final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER
+                .get(reader.getString(), reader.pos() - 1);
+            throw DecodeException.error(message);
+          }
+          else
+          {
+            lastWasPeriod = false;
+          }
+
+          length++;
+        }
+
+        if (lastWasPeriod)
+        {
+          final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_ENDS_WITH_PERIOD
+              .get(reader.getString());
+          throw DecodeException.error(message);
+        }
+      }
       else if (isAlpha(c))
       {
         // This must be an attribute description. In this case, we will
@@ -339,9 +299,8 @@
           if (length == 0 && !isAlpha(c))
           {
             // This is an illegal character.
-            final LocalizableMessage message =
-                ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
-                    .valueOf(c), reader.pos() - 1);
+            final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+                .get(String.valueOf(c), reader.pos() - 1);
             throw DecodeException.error(message);
           }
 
@@ -349,40 +308,44 @@
               && c != '_')
           {
             // This is an illegal character.
-            final LocalizableMessage message =
-                ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
-                    .valueOf(c), reader.pos() - 1);
+            final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+                .get(String.valueOf(c), reader.pos() - 1);
             throw DecodeException.error(message);
           }
 
           length++;
         }
-
-        reader.reset();
-
-        // Return the position of the first non-space character after
-        // the token.
-        oid = reader.read(length);
       }
       else
       {
-        final LocalizableMessage message =
-            ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
-                .valueOf(c), reader.pos() - 1);
+        final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+            .get(String.valueOf(c), reader.pos() - 1);
         throw DecodeException.error(message);
       }
 
-      if (enclosingQuote)
+      if (enclosingQuote && c != '\'')
       {
-        reader.read();
+        final LocalizableMessage message = ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS
+            .get(reader.pos() - 1, String.valueOf(c));
+        throw DecodeException.error(message);
       }
-      return oid;
     }
-    catch (final StringIndexOutOfBoundsException e)
+
+    if (length == 0)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_NO_VALUE
+          .get();
       throw DecodeException.error(message);
     }
+
+    reader.reset();
+    String oid = reader.read(length);
+    if (enclosingQuote)
+    {
+      reader.read();
+    }
+
+    return oid;
   }
 
 
@@ -390,7 +353,7 @@
   /**
    * Reads the next OID from the definition, skipping over any leading
    * spaces. The OID may be followed by a integer length in brackets.
-   * 
+   *
    * @param reader
    *          The string representation of the definition.
    * @return The OID read from the definition.
@@ -428,9 +391,8 @@
           {
             if (lastWasPeriod)
             {
-              final LocalizableMessage message =
-                  ERR_ATTR_SYNTAX_OID_CONSECUTIVE_PERIODS.get(reader
-                      .getString(), reader.pos() - 1);
+              final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_CONSECUTIVE_PERIODS
+                  .get(reader.getString(), reader.pos() - 1);
               throw DecodeException.error(message);
             }
             else
@@ -451,9 +413,8 @@
             }
 
             // This must have been an illegal character.
-            final LocalizableMessage message =
-                ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER.get(reader
-                    .getString(), reader.pos() - 1);
+            final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER
+                .get(reader.getString(), reader.pos() - 1);
             throw DecodeException.error(message);
           }
           else
@@ -465,7 +426,8 @@
 
         if (length == 0)
         {
-          final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_NO_VALUE.get();
+          final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_NO_VALUE
+              .get();
           throw DecodeException.error(message);
         }
       }
@@ -481,9 +443,8 @@
           if (length == 0 && !isAlpha(c))
           {
             // This is an illegal character.
-            final LocalizableMessage message =
-                ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
-                    .valueOf(c), reader.pos() - 1);
+            final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+                .get(String.valueOf(c), reader.pos() - 1);
             throw DecodeException.error(message);
           }
 
@@ -491,9 +452,8 @@
               && c != '_')
           {
             // This is an illegal character.
-            final LocalizableMessage message =
-                ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
-                    .valueOf(c), reader.pos() - 1);
+            final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+                .get(String.valueOf(c), reader.pos() - 1);
             throw DecodeException.error(message);
           }
 
@@ -502,9 +462,8 @@
       }
       else
       {
-        final LocalizableMessage message =
-            ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
-                .valueOf(c), reader.pos() - 1);
+        final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+            .get(String.valueOf(c), reader.pos() - 1);
         throw DecodeException.error(message);
       }
 
@@ -524,9 +483,8 @@
         {
           if (!isDigit(c))
           {
-            final LocalizableMessage message =
-                ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER.get(reader
-                    .getString(), reader.pos() - 1);
+            final LocalizableMessage message = ERR_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER
+                .get(reader.getString(), reader.pos() - 1);
             throw DecodeException.error(message);
           }
         }
@@ -544,7 +502,8 @@
     }
     catch (final StringIndexOutOfBoundsException e)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+          .get();
       throw DecodeException.error(message);
     }
   }
@@ -573,8 +532,7 @@
 
           // Skip over any trailing spaces;
           reader.skipWhitespaces();
-        }
-        while (reader.read() != ')');
+        } while (reader.read() != ')');
       }
       else
       {
@@ -586,7 +544,8 @@
     }
     catch (final StringIndexOutOfBoundsException e)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+          .get();
       throw DecodeException.error(message);
     }
   }
@@ -596,7 +555,7 @@
   /**
    * Reads the value of a string enclosed in single quotes, skipping
    * over the quotes and any leading spaces.
-   * 
+   *
    * @param reader
    *          The string representation of the definition.
    * @return The string value read from the definition.
@@ -604,7 +563,7 @@
    *           If a problem is encountered while reading the quoted
    *           string.
    */
-  static String readQuotedDescriptor(SubstringReader reader)
+  private static String readQuotedDescriptor(SubstringReader reader)
       throws DecodeException
   {
     int length = 0;
@@ -618,9 +577,8 @@
       char c = reader.read();
       if (c != '\'')
       {
-        final LocalizableMessage message =
-            ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS.get(reader.pos() - 1,
-                String.valueOf(c));
+        final LocalizableMessage message = ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS
+            .get(reader.pos() - 1, String.valueOf(c));
         throw DecodeException.error(message);
       }
 
@@ -631,9 +589,8 @@
         if (length == 0 && !isAlpha(c))
         {
           // This is an illegal character.
-          final LocalizableMessage message =
-              ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
-                  .valueOf(c), reader.pos() - 1);
+          final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+              .get(String.valueOf(c), reader.pos() - 1);
           throw DecodeException.error(message);
         }
 
@@ -641,9 +598,8 @@
             && c != '.')
         {
           // This is an illegal character.
-          final LocalizableMessage message =
-              ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID.get(String
-                  .valueOf(c), reader.pos() - 1);
+          final LocalizableMessage message = ERR_ATTR_SYNTAX_ILLEGAL_CHAR_IN_STRING_OID
+              .get(String.valueOf(c), reader.pos() - 1);
           throw DecodeException.error(message);
         }
 
@@ -658,7 +614,8 @@
     }
     catch (final StringIndexOutOfBoundsException e)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+          .get();
       throw DecodeException.error(message);
     }
   }
@@ -668,7 +625,7 @@
   /**
    * Reads the value of a string enclosed in single quotes, skipping
    * over the quotes and any leading spaces.
-   * 
+   *
    * @param reader
    *          The string representation of the definition.
    * @return The string value read from the definition.
@@ -690,9 +647,8 @@
       final char c = reader.read();
       if (c != '\'')
       {
-        final LocalizableMessage message =
-            ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS.get(reader.pos() - 1,
-                String.valueOf(c));
+        final LocalizableMessage message = ERR_ATTR_SYNTAX_EXPECTED_QUOTE_AT_POS
+            .get(reader.pos() - 1, String.valueOf(c));
         throw DecodeException.error(message);
       }
 
@@ -711,7 +667,8 @@
     }
     catch (final StringIndexOutOfBoundsException e)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+          .get();
       throw DecodeException.error(message);
     }
   }
@@ -721,7 +678,7 @@
   /**
    * Reads the next ruleid from the definition, skipping over any
    * leading spaces.
-   * 
+   *
    * @param reader
    *          The string representation of the definition.
    * @return The ruleid read from the definition.
@@ -748,7 +705,8 @@
 
       if (length == 0)
       {
-        final LocalizableMessage message = ERR_ATTR_SYNTAX_RULE_ID_NO_VALUE.get();
+        final LocalizableMessage message = ERR_ATTR_SYNTAX_RULE_ID_NO_VALUE
+            .get();
         throw DecodeException.error(message);
       }
 
@@ -761,14 +719,15 @@
       }
       catch (final NumberFormatException e)
       {
-        final LocalizableMessage message =
-            ERR_ATTR_SYNTAX_RULE_ID_INVALID.get(ruleID);
+        final LocalizableMessage message = ERR_ATTR_SYNTAX_RULE_ID_INVALID
+            .get(ruleID);
         throw DecodeException.error(message);
       }
     }
     catch (final StringIndexOutOfBoundsException e)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+          .get();
       throw DecodeException.error(message);
     }
   }
@@ -797,8 +756,7 @@
 
           // Skip over any trailing spaces;
           reader.skipWhitespaces();
-        }
-        while (reader.read() != ')');
+        } while (reader.read() != ')');
       }
       else
       {
@@ -810,7 +768,8 @@
     }
     catch (final StringIndexOutOfBoundsException e)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+          .get();
       throw DecodeException.error(message);
     }
   }
@@ -820,8 +779,8 @@
   /**
    * Reads the next token name from the definition, skipping over any
    * leading or trailing spaces or <code>null</code> if there are no
-   * moretokens to read.
-   * 
+   * more tokens to read.
+   *
    * @param reader
    *          The string representation of the definition.
    * @return The token name read from the definition or
@@ -859,8 +818,8 @@
       if (token == null && reader.remaining() > 0)
       {
         reader.reset();
-        final LocalizableMessage message =
-            ERR_ATTR_SYNTAX_UNEXPECTED_CLOSE_PARENTHESIS.get(length);
+        final LocalizableMessage message = ERR_ATTR_SYNTAX_UNEXPECTED_CLOSE_PARENTHESIS
+            .get(length);
         throw DecodeException.error(message);
       }
 
@@ -868,7 +827,8 @@
     }
     catch (final StringIndexOutOfBoundsException e)
     {
-      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE.get();
+      final LocalizableMessage message = ERR_ATTR_SYNTAX_TRUNCATED_VALUE
+          .get();
       throw DecodeException.error(message);
     }
   }
diff --git a/sdk/test-output/sdk/classes.html b/sdk/test-output/sdk/classes.html
new file mode 100644
index 0000000..192c7a9
--- /dev/null
+++ b/sdk/test-output/sdk/classes.html
@@ -0,0 +1,42 @@
+<table border='1'>
+<tr>
+<th>Class name</th>
+<th>Method name</th>
+<th>Groups</th>
+</tr><tr>
+<td>org.opends.sdk.schema.SchemaUtilsTest</td>
+<td>&nbsp;</td><td>&nbsp;</td></tr>
+<tr>
+<td align='center' colspan='3'>@Test</td>
+</tr>
+<tr>
+<td>&nbsp;</td>
+<td>testReadOIDInvalid</td>
+<td>schema precommit sdk </td>
+</tr>
+<tr>
+<td>&nbsp;</td>
+<td>testReadOIDValid</td>
+<td>schema precommit sdk </td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeClass</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@BeforeMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterMethod</td>
+</tr>
+<tr>
+<td align='center' colspan='3'>@AfterClass</td>
+</tr>
+<tr>
+<td>&nbsp;</td>
+<td>nullMemberVariablesAfterTest</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>&nbsp;</td>
+<td>clearSuccessfulTestParams</td>
+<td>&nbsp;</td></tr>
+</table>
diff --git a/sdk/test-output/sdk/groups.html b/sdk/test-output/sdk/groups.html
new file mode 100644
index 0000000..3760022
--- /dev/null
+++ b/sdk/test-output/sdk/groups.html
@@ -0,0 +1,5 @@
+<h2>Groups used for this test run</h2><table border="1">
+<tr> <td align="center"><b>Group name</b></td><td align="center"><b>Methods</b></td></tr><tr><td>precommit</td><td>org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)<br/>org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)<br/></td></tr>
+<tr><td>schema</td><td>org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)<br/>org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)<br/></td></tr>
+<tr><td>sdk</td><td>org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)<br/>org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)<br/></td></tr>
+</table>
diff --git a/sdk/test-output/sdk/index.html b/sdk/test-output/sdk/index.html
new file mode 100644
index 0000000..14b5885
--- /dev/null
+++ b/sdk/test-output/sdk/index.html
@@ -0,0 +1,6 @@
+<html><head><title>Results for sdk</title></head>
+<frameset cols="26%,74%">
+<frame src="toc.html" name="navFrame">
+<frame src="main.html" name="mainFrame">
+</frameset>
+</html>
diff --git a/sdk/test-output/sdk/main.html b/sdk/test-output/sdk/main.html
new file mode 100644
index 0000000..a064a1c
--- /dev/null
+++ b/sdk/test-output/sdk/main.html
@@ -0,0 +1,2 @@
+<html><head><title>Results for sdk</title></head>
+<body>Select a result on the left-hand pane.</body></html>
diff --git a/sdk/test-output/sdk/methods-alphabetical.html b/sdk/test-output/sdk/methods-alphabetical.html
new file mode 100644
index 0000000..1be672b
--- /dev/null
+++ b/sdk/test-output/sdk/methods-alphabetical.html
@@ -0,0 +1,150 @@
+<h2>Methods run, sorted chronologically</h2><h3>&gt;&gt; means before, &lt;&lt; means after</h3><p/><br/><em>sdk</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table border="1">
+<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
+<tr bgcolor="8bb7e0">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&lt;&lt;org.opends.sdk.OpenDSTestCase.clearSuccessfulTestParams()">&lt;&lt;clearSuccessfulTestParams</td> 
+<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="8bb7e0">  <td>10/01/08 18:59:19</td>   <td>-1</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&lt;&lt;org.opends.sdk.OpenDSTestCase.nullMemberVariablesAfterTest()">&lt;&lt;nullMemberVariablesAfterTest</td> 
+<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-7</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>-213</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+</table>
diff --git a/sdk/test-output/sdk/methods-not-run.html b/sdk/test-output/sdk/methods-not-run.html
new file mode 100644
index 0000000..54b14cb
--- /dev/null
+++ b/sdk/test-output/sdk/methods-not-run.html
@@ -0,0 +1,2 @@
+<h2>Methods that were not run</h2><table>
+</table>
\ No newline at end of file
diff --git a/sdk/test-output/sdk/methods.html b/sdk/test-output/sdk/methods.html
new file mode 100644
index 0000000..4621209
--- /dev/null
+++ b/sdk/test-output/sdk/methods.html
@@ -0,0 +1,150 @@
+<h2>Methods run, sorted chronologically</h2><h3>&gt;&gt; means before, &lt;&lt; means after</h3><p/><br/><em>sdk</em><p/><small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table border="1">
+<tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>0</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)">testReadOIDValid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="e0b6f5">  <td>10/01/08 18:59:19</td>   <td>206</td> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td title="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)">testReadOIDInvalid</td> 
+  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="8bb7e0">  <td>10/01/08 18:59:19</td>   <td>212</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&lt;&lt;org.opends.sdk.OpenDSTestCase.nullMemberVariablesAfterTest()">&lt;&lt;nullMemberVariablesAfterTest</td> 
+<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>  <td>main@20324370</td>   <td></td> </tr>
+<tr bgcolor="8bb7e0">  <td>10/01/08 18:59:19</td>   <td>213</td> <td>&nbsp;</td><td>&nbsp;</td><td title="&lt;&lt;org.opends.sdk.OpenDSTestCase.clearSuccessfulTestParams()">&lt;&lt;clearSuccessfulTestParams</td> 
+<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>  <td>main@20324370</td>   <td></td> </tr>
+</table>
diff --git a/sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.html b/sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.html
new file mode 100644
index 0000000..33f3923
--- /dev/null
+++ b/sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.html
@@ -0,0 +1,774 @@
+<html>
+<head>
+<title>TestNG:  org.opends.sdk.schema.SchemaUtilsTest</title>
+<link href="../testng.css" rel="stylesheet" type="text/css" />
+<link href="../my-testng.css" rel="stylesheet" type="text/css" />
+
+<style type="text/css">
+.log { display: none;} 
+.stack-trace { display: none;} 
+</style>
+<script type="text/javascript">
+<!--
+function flip(e) {
+  current = e.style.display;
+  if (current == 'block') {
+    e.style.display = 'none';
+    return 0;
+  }
+  else {
+    e.style.display = 'block';
+    return 1;
+  }
+}
+
+function toggleBox(szDivId, elem, msg1, msg2)
+{
+  var res = -1;  if (document.getElementById) {
+    res = flip(document.getElementById(szDivId));
+  }
+  else if (document.all) {
+    // this is the way old msie versions work
+    res = flip(document.all[szDivId]);
+  }
+  if(elem) {
+    if(res == 0) elem.innerHTML = msg1; else elem.innerHTML = msg2;
+  }
+
+}
+
+function toggleAllBoxes() {
+  if (document.getElementsByTagName) {
+    d = document.getElementsByTagName('div');
+    for (i = 0; i < d.length; i++) {
+      if (d[i].className == 'log') {
+        flip(d[i]);
+      }
+    }
+  }
+}
+
+// -->
+</script>
+
+</head>
+<body>
+<h2 align='center'>org.opends.sdk.schema.SchemaUtilsTest</h2><table border='1' align="center">
+<tr>
+<td>Tests passed/Failed/Skipped:</td><td>71/0/0</td>
+</tr><tr>
+<td>Started on:</td><td>Fri Jan 08 18:59:18 CET 2010</td>
+</tr>
+<tr><td>Total time:</td><td>0 seconds (394 ms)</td>
+</tr><tr>
+<td>Included groups:</td><td></td>
+</tr><tr>
+<td>Excluded groups:</td><td></td>
+</tr>
+</table><p/>
+<small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table width='100%' border='1' class='invocation-passed'>
+<tr><td colspan='3' align='center'><b>PASSED TESTS</b></td></tr>
+<tr><td><b>Test method</b></td>
+<td width="10%"><b>Time (seconds)</b></td>
+<td width="30%"><b>Exception</b></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> </td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: The provided value could not be parsed as a valid OID because it did not contain any characters
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:338)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace28606871", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace28606871'><pre>org.opends.sdk.DecodeException: The provided value could not be parsed as a valid OID because it did not contain any characters
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:338)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> .0</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: Non-numeric OID contained an illegal character . at position 0
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:323)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace15136722", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace15136722'><pre>org.opends.sdk.DecodeException: Non-numeric OID contained an illegal character . at position 0
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:323)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> 0.</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: The provided value "0." could not be parsed as a valid OID because it ends with a period
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:288)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace26752749", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace26752749'><pre>org.opends.sdk.DecodeException: The provided value "0." could not be parsed as a valid OID because it ends with a period
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:288)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> 100.</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: The provided value "100." could not be parsed as a valid OID because it ends with a period
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:288)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace4067003", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace4067003'><pre>org.opends.sdk.DecodeException: The provided value "100." could not be parsed as a valid OID because it ends with a period
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:288)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> .999</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: Non-numeric OID contained an illegal character . at position 0
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:323)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace3753023", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace3753023'><pre>org.opends.sdk.DecodeException: Non-numeric OID contained an illegal character . at position 0
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:323)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> 1one</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: The provided value "1one" could not be parsed as a valid OID because it had an illegal character at position 1
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:274)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace28290629", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace28290629'><pre>org.opends.sdk.DecodeException: The provided value "1one" could not be parsed as a valid OID because it had an illegal character at position 1
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:274)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> one+two+three</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: Non-numeric OID contained an illegal character + at position 3
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:313)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace14306161", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace14306161'><pre>org.opends.sdk.DecodeException: Non-numeric OID contained an illegal character + at position 3
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:313)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> '0</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: A single quote was expected at position 1 but the character 0 was found instead
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:330)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace26156414", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace26156414'><pre>org.opends.sdk.DecodeException: A single quote was expected at position 1 but the character 0 was found instead
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:330)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> '10</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: A single quote was expected at position 2 but the character 0 was found instead
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:330)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace14247437", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace14247437'><pre>org.opends.sdk.DecodeException: A single quote was expected at position 2 but the character 0 was found instead
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:330)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> 999'</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: The provided value "999'" could not be parsed as a valid OID because it had an illegal character at position 3
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:274)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace12258573", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace12258573'><pre>org.opends.sdk.DecodeException: The provided value "999'" could not be parsed as a valid OID because it had an illegal character at position 3
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:274)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid()'>testReadOIDInvalid<br/><b>Parameters:</b> 0.0'</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.DecodeException: The provided value "0.0'" could not be parsed as a valid OID because it had an illegal character at position 3
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:274)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace5629279", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace5629279'><pre>org.opends.sdk.DecodeException: The provided value "0.0'" could not be parsed as a valid OID because it had an illegal character at position 3
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:274)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 1.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 2.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 3.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 4.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 5.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 6.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 7.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 8.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 9.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.1</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.2</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.3</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.4</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.5</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.6</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.7</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.8</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.9</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 10.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 100.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 999.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.100</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.999</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 100.100</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 999.999</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 111.22.333.44.55555.66.777.88.999</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> a</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> a2</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> a-</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> one</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> one1</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> one-two</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> one1-two2-three3</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> '0.0'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> '10.0'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> '999.0'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> '111.22.333.44.55555.66.777.88.999'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 'a'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 'a2'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 'a-'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 'one'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 'one1'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 'one-two'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 'one1-two2-three3'</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 1</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 2</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 3</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 4</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 5</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 6</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 7</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 8</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 9</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 00</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 01</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 01.0</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> 0.01</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid()'>testReadOIDValid<br/><b>Parameters:</b> one.two.three</td>
+<td>0</td>
+<td></td>
+</tr>
+</table><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.properties b/sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.properties
new file mode 100644
index 0000000..6d7ffb7
--- /dev/null
+++ b/sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.properties
@@ -0,0 +1 @@
+[SuiteResult org.opends.sdk.schema.SchemaUtilsTest]
\ No newline at end of file
diff --git a/sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.xml b/sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.xml
new file mode 100644
index 0000000..990b0db
--- /dev/null
+++ b/sdk/test-output/sdk/org.opends.sdk.schema.SchemaUtilsTest.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="org.opends.sdk.schema.SchemaUtilsTest" failures="0" tests="71" time="0.394" errors="0">
+  <properties/>
+  <testcase name="testReadOIDValid" time="0.018" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0030" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0020" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDValid" time="0.012" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.151" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0090" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0020" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0010" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+  <testcase name="testReadOIDInvalid" time="0.0030" classname="org.opends.sdk.schema.SchemaUtilsTest"/>
+</testsuite>
diff --git a/sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.html b/sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.html
new file mode 100644
index 0000000..292adf0
--- /dev/null
+++ b/sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.html
@@ -0,0 +1,190 @@
+<html>
+<head>
+<title>TestNG:  org.opends.sdk.schema.SubstitutionSyntaxTestCase</title>
+<link href="../testng.css" rel="stylesheet" type="text/css" />
+<link href="../my-testng.css" rel="stylesheet" type="text/css" />
+
+<style type="text/css">
+.log { display: none;} 
+.stack-trace { display: none;} 
+</style>
+<script type="text/javascript">
+<!--
+function flip(e) {
+  current = e.style.display;
+  if (current == 'block') {
+    e.style.display = 'none';
+    return 0;
+  }
+  else {
+    e.style.display = 'block';
+    return 1;
+  }
+}
+
+function toggleBox(szDivId, elem, msg1, msg2)
+{
+  var res = -1;  if (document.getElementById) {
+    res = flip(document.getElementById(szDivId));
+  }
+  else if (document.all) {
+    // this is the way old msie versions work
+    res = flip(document.all[szDivId]);
+  }
+  if(elem) {
+    if(res == 0) elem.innerHTML = msg1; else elem.innerHTML = msg2;
+  }
+
+}
+
+function toggleAllBoxes() {
+  if (document.getElementsByTagName) {
+    d = document.getElementsByTagName('div');
+    for (i = 0; i < d.length; i++) {
+      if (d[i].className == 'log') {
+        flip(d[i]);
+      }
+    }
+  }
+}
+
+// -->
+</script>
+
+</head>
+<body>
+<h2 align='center'>org.opends.sdk.schema.SubstitutionSyntaxTestCase</h2><table border='1' align="center">
+<tr>
+<td>Tests passed/Failed/Skipped:</td><td>10/0/0</td>
+</tr><tr>
+<td>Started on:</td><td>Fri Jan 08 13:13:04 CET 2010</td>
+</tr>
+<tr><td>Total time:</td><td>0 seconds (597 ms)</td>
+</tr><tr>
+<td>Included groups:</td><td></td>
+</tr><tr>
+<td>Excluded groups:</td><td></td>
+</tr>
+</table><p/>
+<small><i>(Hover the method name to see the test class name)</i></small><p/>
+<table width='100%' border='1' class='invocation-passed'>
+<tr><td colspan='3' align='center'><b>PASSED TESTS</b></td></tr>
+<tr><td><b>Test method</b></td>
+<td width="10%"><b>Time (seconds)</b></td>
+<td width="30%"><b>Exception</b></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testAcceptableValues()'>testAcceptableValues<br/><b>Parameters:</b> 12345678, true</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testAcceptableValues()'>testAcceptableValues<br/><b>Parameters:</b> 12345678â…£, false</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSelfSubstitute1()'>testSelfSubstitute1</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSelfSubstitute2()'>testSelfSubstitute2</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSubstituteCore1()'>testSubstituteCore1</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.schema.ConflictingSchemaElementException: Unable to register attribute syntax ( 1.3.6.1.4.1.1466.115.121.1.26  DESC 'Replacing DirectorySyntax'   X-SUBST '9.9.9' ) with the server schema because its OID 1.3.6.1.4.1.1466.115.121.1.26 conflicts with the OID of an existing syntax 1.3.6.1.4.1.1466.115.121.1.26
+	at org.opends.sdk.schema.SchemaBuilder.addSyntax(SchemaBuilder.java:2597)
+	at org.opends.sdk.schema.SchemaBuilder.addSyntax(SchemaBuilder.java:2043)
+	at org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSubstituteCore1(SubstitutionSyntaxTestCase.java:124)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace4677928", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace4677928'><pre>org.opends.sdk.schema.ConflictingSchemaElementException: Unable to register attribute syntax ( 1.3.6.1.4.1.1466.115.121.1.26  DESC 'Replacing DirectorySyntax'   X-SUBST '9.9.9' ) with the server schema because its OID 1.3.6.1.4.1.1466.115.121.1.26 conflicts with the OID of an existing syntax 1.3.6.1.4.1.1466.115.121.1.26
+	at org.opends.sdk.schema.SchemaBuilder.addSyntax(SchemaBuilder.java:2597)
+	at org.opends.sdk.schema.SchemaBuilder.addSyntax(SchemaBuilder.java:2043)
+	at org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSubstituteCore1(SubstitutionSyntaxTestCase.java:124)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSubstituteCore1Override()'>testSubstituteCore1Override</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSubstituteCore2()'>testSubstituteCore2</td>
+<td>0</td>
+<td><div><pre>org.opends.sdk.schema.ConflictingSchemaElementException: Unable to register attribute syntax ( 1.3.6.1.4.1.1466.115.121.1.26 DESC 'Replacing DirectorySyntax' X-SUBST '9.9.9' ) with the server schema because its OID 1.3.6.1.4.1.1466.115.121.1.26 conflicts with the OID of an existing syntax 1.3.6.1.4.1.1466.115.121.1.26
+	at org.opends.sdk.schema.SchemaBuilder.addSyntax(SchemaBuilder.java:2597)
+	at org.opends.sdk.schema.SchemaBuilder.addSubstitutionSyntax(SchemaBuilder.java:1908)
+	at org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSubstituteCore2(SubstitutionSyntaxTestCase.java:136)
+... Removed 22 stack frames</pre></div><a href='#' onClick='toggleBox("stack-trace20785379", this, "Click to show all stack frames", "Click to hide stack frames")'>Click to show all stack frames</a>
+<div class='stack-trace' id='stack-trace20785379'><pre>org.opends.sdk.schema.ConflictingSchemaElementException: Unable to register attribute syntax ( 1.3.6.1.4.1.1466.115.121.1.26 DESC 'Replacing DirectorySyntax' X-SUBST '9.9.9' ) with the server schema because its OID 1.3.6.1.4.1.1466.115.121.1.26 conflicts with the OID of an existing syntax 1.3.6.1.4.1.1466.115.121.1.26
+	at org.opends.sdk.schema.SchemaBuilder.addSyntax(SchemaBuilder.java:2597)
+	at org.opends.sdk.schema.SchemaBuilder.addSubstitutionSyntax(SchemaBuilder.java:1908)
+	at org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSubstituteCore2(SubstitutionSyntaxTestCase.java:136)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+</pre></div></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testSubstituteCore2Override()'>testSubstituteCore2Override</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testUndefinedSubstitute1()'>testUndefinedSubstitute1</td>
+<td>0</td>
+<td></td>
+</tr>
+<tr>
+<td title='org.opends.sdk.schema.SubstitutionSyntaxTestCase.testUndefinedSubstitute2()'>testUndefinedSubstitute2</td>
+<td>0</td>
+<td></td>
+</tr>
+</table><p>
+</body>
+</html>
\ No newline at end of file
diff --git a/sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.properties b/sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.properties
new file mode 100644
index 0000000..dd8ffae
--- /dev/null
+++ b/sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.properties
@@ -0,0 +1 @@
+[SuiteResult org.opends.sdk.schema.SubstitutionSyntaxTestCase]
\ No newline at end of file
diff --git a/sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.xml b/sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.xml
new file mode 100644
index 0000000..c4817b0
--- /dev/null
+++ b/sdk/test-output/sdk/org.opends.sdk.schema.SubstitutionSyntaxTestCase.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite name="org.opends.sdk.schema.SubstitutionSyntaxTestCase" failures="0" tests="10" time="0.597" errors="0">
+  <properties/>
+  <testcase name="testSubstituteCore2Override" time="0.164" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+  <testcase name="testSelfSubstitute1" time="0.341" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+  <testcase name="testSubstituteCore2" time="0.0060" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+  <testcase name="testSubstituteCore1" time="0.0020" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+  <testcase name="testSelfSubstitute2" time="0.01" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+  <testcase name="testSubstituteCore1Override" time="0.0020" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+  <testcase name="testAcceptableValues" time="0.0030" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+  <testcase name="testAcceptableValues" time="0.0040" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+  <testcase name="testUndefinedSubstitute1" time="0.0070" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+  <testcase name="testUndefinedSubstitute2" time="0.0080" classname="org.opends.sdk.schema.SubstitutionSyntaxTestCase"/>
+</testsuite>
diff --git a/sdk/test-output/sdk/reporter-output.html b/sdk/test-output/sdk/reporter-output.html
new file mode 100644
index 0000000..063bc2e
--- /dev/null
+++ b/sdk/test-output/sdk/reporter-output.html
@@ -0,0 +1 @@
+<h2>Reporter output</h2><table></table>
\ No newline at end of file
diff --git a/sdk/test-output/sdk/testng-failed.xml b/sdk/test-output/sdk/testng-failed.xml
new file mode 100644
index 0000000..5a32c9e
--- /dev/null
+++ b/sdk/test-output/sdk/testng-failed.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
+<suite thread-count="5" skipfailedinvocationCounts="false" verbose="1" name="Failed suite [sdk]" junit="false" parallel="false" annotations="JDK">
+  <test name="org.opends.sdk.schema.AttributeTypeTest(failed)" junit="false" parallel="false" annotations="JDK">
+    <classes>
+      <class name="org.opends.sdk.schema.AttributeTypeTest">
+        <methods>
+          <include name="nullMemberVariablesAfterTest"/>
+          <include name="clearSuccessfulTestParams"/>
+          <include name="testADSyntax"/>
+        </methods>
+      </class>
+    </classes>
+  </test>
+</suite>
diff --git a/sdk/test-output/sdk/testng.xml.html b/sdk/test-output/sdk/testng.xml.html
new file mode 100644
index 0000000..6045ec6
--- /dev/null
+++ b/sdk/test-output/sdk/testng.xml.html
@@ -0,0 +1 @@
+<html><head><title>testng.xml for sdk</title></head><body><tt>&lt;!DOCTYPE&nbsp;suite&nbsp;SYSTEM&nbsp;"http://testng.org/testng-1.0.dtd"&gt;<br/>&lt;suite&nbsp;thread-count="5"&nbsp;skipfailedinvocationCounts="false"&nbsp;verbose="1"&nbsp;name="sdk"&nbsp;junit="false"&nbsp;parallel="false"&nbsp;annotations="JDK"&gt;<br/>&nbsp;&nbsp;&lt;test&nbsp;verbose="2"&nbsp;name="org.opends.sdk.schema.SchemaUtilsTest"&nbsp;junit="false"&nbsp;annotations="JDK"&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;classes&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;class&nbsp;name="org.opends.sdk.schema.SchemaUtilsTest"/&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/classes&gt;<br/>&nbsp;&nbsp;&lt;/test&gt;<br/>&lt;/suite&gt;<br/></tt></body></html>
\ No newline at end of file
diff --git a/sdk/test-output/sdk/toc.html b/sdk/test-output/sdk/toc.html
new file mode 100644
index 0000000..207ceaf
--- /dev/null
+++ b/sdk/test-output/sdk/toc.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+<title>Results for sdk</title>
+<link href="../testng.css" rel="stylesheet" type="text/css" />
+<link href="../my-testng.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<h3><p align="center">Results for<br/><em>sdk</em></p></h3>
+<table border='1' width='100%'>
+<tr valign='top'>
+<td>1 test</td>
+<td><a target='mainFrame' href='classes.html'>1 class</a></td>
+<td>2 methods:<br/>
+&nbsp;&nbsp;<a target='mainFrame' href='methods.html'>chronological</a><br/>
+&nbsp;&nbsp;<a target='mainFrame' href='methods-alphabetical.html'>alphabetical</a><br/>
+&nbsp;&nbsp;<a target='mainFrame' href='methods-not-run.html'>not run (0)</a></td>
+</tr>
+<tr>
+<td><a target='mainFrame' href='groups.html'>3 groups</a></td>
+<td><a target='mainFrame' href='reporter-output.html'>reporter output</a></td>
+<td><a target='mainFrame' href='testng.xml.html'>testng.xml</a></td>
+</tr></table>
+<table width='100%' class='test-passed'>
+<tr><td>
+<table style='width: 100%'><tr><td valign='top'>org.opends.sdk.schema.SchemaUtilsTest (71/0/0)</td><td valign='top' align='right'>
+  <a href='org.opends.sdk.schema.SchemaUtilsTest.html' target='mainFrame'>Results</a>
+</td></tr></table>
+</td></tr><p/>
+</table>
+</body></html>
\ No newline at end of file
diff --git a/sdk/test-output/testng-failed.xml b/sdk/test-output/testng-failed.xml
new file mode 100644
index 0000000..5a32c9e
--- /dev/null
+++ b/sdk/test-output/testng-failed.xml
@@ -0,0 +1,14 @@
+<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
+<suite thread-count="5" skipfailedinvocationCounts="false" verbose="1" name="Failed suite [sdk]" junit="false" parallel="false" annotations="JDK">
+  <test name="org.opends.sdk.schema.AttributeTypeTest(failed)" junit="false" parallel="false" annotations="JDK">
+    <classes>
+      <class name="org.opends.sdk.schema.AttributeTypeTest">
+        <methods>
+          <include name="nullMemberVariablesAfterTest"/>
+          <include name="clearSuccessfulTestParams"/>
+          <include name="testADSyntax"/>
+        </methods>
+      </class>
+    </classes>
+  </test>
+</suite>
diff --git a/sdk/test-output/testng-results.xml b/sdk/test-output/testng-results.xml
new file mode 100644
index 0000000..8598147
--- /dev/null
+++ b/sdk/test-output/testng-results.xml
@@ -0,0 +1,1041 @@
+<testng-results>
+  <reporter-output>
+  </reporter-output>
+  <suite name="sdk">
+    <groups>
+      <group name="schema">
+        <method signature="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)" name="testReadOIDValid" class="org.opends.sdk.schema.SchemaUtilsTest"/>
+        <method signature="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" class="org.opends.sdk.schema.SchemaUtilsTest"/>
+      </group>
+      <group name="precommit">
+        <method signature="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)" name="testReadOIDValid" class="org.opends.sdk.schema.SchemaUtilsTest"/>
+        <method signature="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" class="org.opends.sdk.schema.SchemaUtilsTest"/>
+      </group>
+      <group name="sdk">
+        <method signature="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDValid(java.lang.String)" name="testReadOIDValid" class="org.opends.sdk.schema.SchemaUtilsTest"/>
+        <method signature="org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" class="org.opends.sdk.schema.SchemaUtilsTest"/>
+      </group>
+    </groups>
+    <test name="org.opends.sdk.schema.SchemaUtilsTest">
+      <class name="org.opends.sdk.schema.SchemaUtilsTest">
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="0" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[9]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="18" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['one-two']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['a2']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['10.0']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="1" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[1one]]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[The provided value "1one" could not be parsed as a valid OID because it had an illegal character at position 1]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: The provided value "1one" could not be parsed as a valid OID because it had an illegal character at position 1
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:274)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[one]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[10.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="clearSuccessfulTestParams()" name="clearSuccessfulTestParams" is-config="true" duration-ms="1" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[one1-two2-three3]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.01]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['one1-two2-three3']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.5]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[999.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[01.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="0" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[one-two]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[8.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="1" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[100.]]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[The provided value "100." could not be parsed as a valid OID because it ends with a period]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: The provided value "100." could not be parsed as a valid OID because it ends with a period
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:288)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[9.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[6]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[1.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.8]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="3" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.1]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.100]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[999.999]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[6.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[111.22.333.44.55555.66.777.88.999]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="2" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.6]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.999]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['0.0']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[one1]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="2" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[one+two+three]]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[Non-numeric OID contained an illegal character + at position 3]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: Non-numeric OID contained an illegal character + at position 3
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:313)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[01]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[a-]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[100.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[a]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.3]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="12" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[one.two.three]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[4.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="3" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.0']]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[The provided value "0.0'" could not be parsed as a valid OID because it had an illegal character at position 3]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: The provided value "0.0'" could not be parsed as a valid OID because it had an illegal character at position 3
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:274)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="1" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['0]]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[A single quote was expected at position 1 but the character 0 was found instead]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: A single quote was expected at position 1 but the character 0 was found instead
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:330)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['one1']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.2]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[5.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[a2]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['111.22.333.44.55555.66.777.88.999']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="1" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[999']]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[The provided value "999'" could not be parsed as a valid OID because it had an illegal character at position 3]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: The provided value "999'" could not be parsed as a valid OID because it had an illegal character at position 3
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:274)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[2.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[5]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="0" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['a-']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.7]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="9" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[.0]]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[Non-numeric OID contained an illegal character . at position 0]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: Non-numeric OID contained an illegal character . at position 0
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:323)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[2]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="1" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[.999]]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[Non-numeric OID contained an illegal character . at position 0]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: Non-numeric OID contained an illegal character . at position 0
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:323)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="151" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[]]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[The provided value could not be parsed as a valid OID because it did not contain any characters]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: The provided value could not be parsed as a valid OID because it did not contain any characters
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:338)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="1" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.]]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[The provided value "0." could not be parsed as a valid OID because it ends with a period]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: The provided value "0." could not be parsed as a valid OID because it ends with a period
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:288)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[100.100]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[7]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.9]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[8]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="0" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[00]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['a']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['999.0']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[7.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[4]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[3]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[0.4]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="0" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['one']]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="nullMemberVariablesAfterTest()" name="nullMemberVariablesAfterTest" is-config="true" duration-ms="0" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[3.0]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDInvalid(java.lang.String)" name="testReadOIDInvalid" duration-ms="1" started-at="2010-01-08T18:59:19Z" finished-at="2010-01-08T18:59:19Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA['10]]>
+              </value>
+            </param>
+          </params>
+          <exception class="org.opends.sdk.DecodeException">
+            <message>
+              <![CDATA[A single quote was expected at position 2 but the character 0 was found instead]]>
+            </message>
+            <full-stacktrace>
+              <![CDATA[org.opends.sdk.DecodeException: A single quote was expected at position 2 but the character 0 was found instead
+	at org.opends.sdk.DecodeException.error(DecodeException.java:95)
+	at org.opends.sdk.schema.SchemaUtils.readOID(SchemaUtils.java:330)
+	at org.opends.sdk.schema.SchemaUtilsTest.testReadOIDInvalid(SchemaUtilsTest.java:114)
+	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
+	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
+	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
+	at java.lang.reflect.Method.invoke(Method.java:597)
+	at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:607)
+	at org.testng.internal.Invoker.invokeMethod(Invoker.java:517)
+	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:669)
+	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956)
+	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
+	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110)
+	at org.testng.TestRunner.runWorkers(TestRunner.java:759)
+	at org.testng.TestRunner.privateRun(TestRunner.java:592)
+	at org.testng.TestRunner.run(TestRunner.java:486)
+	at org.testng.SuiteRunner.runTest(SuiteRunner.java:332)
+	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327)
+	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:299)
+	at org.testng.SuiteRunner.run(SuiteRunner.java:204)
+	at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:877)
+	at org.testng.TestNG.runSuitesLocally(TestNG.java:842)
+	at org.testng.TestNG.run(TestNG.java:751)
+	at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73)
+	at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124)
+]]>
+            </full-stacktrace>
+          </exception>
+        </test-method>
+        <test-method status="PASS" signature="testReadOIDValid(java.lang.String)" name="testReadOIDValid" duration-ms="1" started-at="2010-01-08T18:59:18Z" finished-at="2010-01-08T18:59:18Z">
+          <params>
+            <param index="0">
+              <value>
+                <![CDATA[1]]>
+              </value>
+            </param>
+          </params>
+        </test-method>
+      </class>
+    </test>
+  </suite>
+</testng-results>
diff --git a/sdk/test-output/testng.css b/sdk/test-output/testng.css
new file mode 100644
index 0000000..3904800
--- /dev/null
+++ b/sdk/test-output/testng.css
@@ -0,0 +1,9 @@
+.invocation-failed,  .test-failed  { background-color: #DD0000; }
+.invocation-percent, .test-percent { background-color: #006600; }
+.invocation-passed,  .test-passed  { background-color: #00AA00; }
+.invocation-skipped, .test-skipped { background-color: #CCCC00; }
+
+.main-page {
+  font-size: x-large;
+}
+
diff --git a/sdk/tests/unit-tests-testng/src/com/sun/opends/sdk/util/StaticUtilsTest.java b/sdk/tests/unit-tests-testng/src/com/sun/opends/sdk/util/StaticUtilsTest.java
index 352cbac..b249090 100644
--- a/sdk/tests/unit-tests-testng/src/com/sun/opends/sdk/util/StaticUtilsTest.java
+++ b/sdk/tests/unit-tests-testng/src/com/sun/opends/sdk/util/StaticUtilsTest.java
@@ -29,6 +29,11 @@
 
 
 
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+
 import org.opends.sdk.OpenDSTestCase;
 import org.testng.Assert;
 import org.testng.annotations.DataProvider;
@@ -97,4 +102,129 @@
       Assert.assertEquals(actual, expected);
     }
   }
+
+
+
+  /**
+   * Create data for format(...) tests.
+   *
+   * @return Returns test data.
+   */
+  @DataProvider(name = "createFormatData")
+  public Object[][] createFormatData()
+  {
+    return new Object[][] {
+        // Note that Calendar months run from 0-11,
+        // and that there was no such year as year 0 (1 BC -> 1 AD).
+        { 1, 0, 1, 0, 0, 0, 0, "00010101000000.000Z" },
+        { 9, 0, 1, 0, 0, 0, 0, "00090101000000.000Z" },
+        { 10, 0, 1, 0, 0, 0, 0, "00100101000000.000Z" },
+        { 99, 0, 1, 0, 0, 0, 0, "00990101000000.000Z" },
+        { 100, 0, 1, 0, 0, 0, 0, "01000101000000.000Z" },
+        { 999, 0, 1, 0, 0, 0, 0, "09990101000000.000Z" },
+        { 1000, 0, 1, 0, 0, 0, 0, "10000101000000.000Z" },
+        { 2000, 0, 1, 0, 0, 0, 0, "20000101000000.000Z" },
+        { 2099, 0, 1, 0, 0, 0, 0, "20990101000000.000Z" },
+        { 2000, 8, 1, 0, 0, 0, 0, "20000901000000.000Z" },
+        { 2000, 9, 1, 0, 0, 0, 0, "20001001000000.000Z" },
+        { 2000, 10, 1, 0, 0, 0, 0, "20001101000000.000Z" },
+        { 2000, 11, 1, 0, 0, 0, 0, "20001201000000.000Z" },
+        { 2000, 0, 9, 0, 0, 0, 0, "20000109000000.000Z" },
+        { 2000, 0, 10, 0, 0, 0, 0, "20000110000000.000Z" },
+        { 2000, 0, 19, 0, 0, 0, 0, "20000119000000.000Z" },
+        { 2000, 0, 20, 0, 0, 0, 0, "20000120000000.000Z" },
+        { 2000, 0, 29, 0, 0, 0, 0, "20000129000000.000Z" },
+        { 2000, 0, 30, 0, 0, 0, 0, "20000130000000.000Z" },
+        { 2000, 0, 31, 0, 0, 0, 0, "20000131000000.000Z" },
+        { 2000, 0, 1, 9, 0, 0, 0, "20000101090000.000Z" },
+        { 2000, 0, 1, 10, 0, 0, 0, "20000101100000.000Z" },
+        { 2000, 0, 1, 19, 0, 0, 0, "20000101190000.000Z" },
+        { 2000, 0, 1, 20, 0, 0, 0, "20000101200000.000Z" },
+        { 2000, 0, 1, 23, 0, 0, 0, "20000101230000.000Z" },
+        { 2000, 0, 1, 0, 9, 0, 0, "20000101000900.000Z" },
+        { 2000, 0, 1, 0, 10, 0, 0, "20000101001000.000Z" },
+        { 2000, 0, 1, 0, 59, 0, 0, "20000101005900.000Z" },
+        { 2000, 0, 1, 0, 0, 9, 0, "20000101000009.000Z" },
+        { 2000, 0, 1, 0, 0, 10, 0, "20000101000010.000Z" },
+        { 2000, 0, 1, 0, 0, 59, 0, "20000101000059.000Z" },
+        { 2000, 0, 1, 0, 0, 0, 9, "20000101000000.009Z" },
+        { 2000, 0, 1, 0, 0, 0, 10, "20000101000000.010Z" },
+        { 2000, 0, 1, 0, 0, 0, 99, "20000101000000.099Z" },
+        { 2000, 0, 1, 0, 0, 0, 100, "20000101000000.100Z" },
+        { 2000, 0, 1, 0, 0, 0, 999, "20000101000000.999Z" }, };
+  }
+
+
+
+  /**
+   * Tests {@link StaticUtils#formatAsGeneralizedTime(long)} .
+   *
+   * @param yyyy
+   *          The year.
+   * @param MM
+   *          The month.
+   * @param dd
+   *          The day.
+   * @param HH
+   *          The hour.
+   * @param mm
+   *          The minute.
+   * @param ss
+   *          The second.
+   * @param SSS
+   *          The milli-seconds.
+   * @param expected
+   *          The expected generalized time formatted string.
+   * @throws Exception
+   *           If an unexpected error occurred.
+   */
+  @Test(dataProvider = "createFormatData")
+  public void testFormatLong(int yyyy, int MM, int dd, int HH, int mm,
+      int ss, int SSS, String expected) throws Exception
+  {
+    Calendar calendar = new GregorianCalendar(TimeZone
+        .getTimeZone("UTC"));
+    calendar.set(yyyy, MM, dd, HH, mm, ss);
+    calendar.set(Calendar.MILLISECOND, SSS);
+    long time = calendar.getTimeInMillis();
+    String actual = StaticUtils.formatAsGeneralizedTime(time);
+    Assert.assertEquals(actual, expected);
+  }
+
+
+
+  /**
+   * Tests {@link GeneralizedTimeSyntax#format(java.util.Date)}.
+   *
+   * @param yyyy
+   *          The year.
+   * @param MM
+   *          The month.
+   * @param dd
+   *          The day.
+   * @param HH
+   *          The hour.
+   * @param mm
+   *          The minute.
+   * @param ss
+   *          The second.
+   * @param SSS
+   *          The milli-seconds.
+   * @param expected
+   *          The expected generalized time formatted string.
+   * @throws Exception
+   *           If an unexpected error occurred.
+   */
+  @Test(dataProvider = "createFormatData")
+  public void testFormatDate(int yyyy, int MM, int dd, int HH, int mm,
+      int ss, int SSS, String expected) throws Exception
+  {
+    Calendar calendar = new GregorianCalendar(TimeZone
+        .getTimeZone("UTC"));
+    calendar.set(yyyy, MM, dd, HH, mm, ss);
+    calendar.set(Calendar.MILLISECOND, SSS);
+    Date time = new Date(calendar.getTimeInMillis());
+    String actual = StaticUtils.formatAsGeneralizedTime(time);
+    Assert.assertEquals(actual, expected);
+  }
 }
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/LinkedAttributeTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/LinkedAttributeTest.java
index 834fc59..d4e53e9 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/LinkedAttributeTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/LinkedAttributeTest.java
@@ -30,6 +30,7 @@
 
 
 import org.opends.sdk.schema.Schema;
+import org.testng.Assert;
 import org.testng.annotations.Test;
 
 import org.opends.sdk.ByteString;
@@ -54,18 +55,20 @@
     attribute.add("a value");
     attribute.add(ByteString.valueOf("another value"));
 
-    System.out.println(attribute);
-
-    System.out.println(attribute.contains(1));
-    System.out.println(attribute.contains("a value"));
-    System.out.println(attribute.contains(ByteString
+    Assert.assertTrue(attribute.contains(1));
+    Assert.assertTrue(attribute.contains("a value"));
+    Assert.assertTrue(attribute.contains(ByteString
         .valueOf("another value")));
 
-    attribute.remove(1);
-    System.out.println(attribute);
-    attribute.remove("a value");
-    System.out.println(attribute);
-    attribute.remove(ByteString.valueOf("another value"));
-    System.out.println(attribute);
+    Assert.assertEquals(attribute.size(), 3);
+    Assert.assertTrue(attribute.remove(1));
+    Assert.assertEquals(attribute.size(), 2);
+    Assert.assertFalse(attribute.remove("a missing value"));
+    Assert.assertEquals(attribute.size(), 2);
+    Assert.assertTrue(attribute.remove("a value"));
+    Assert.assertEquals(attribute.size(), 1);
+    Assert.assertTrue(attribute.remove(ByteString
+        .valueOf("another value")));
+    Assert.assertEquals(attribute.size(), 0);
   }
 }
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/OpenDSTestCase.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/OpenDSTestCase.java
index 633d487..54ff24c 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/OpenDSTestCase.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/OpenDSTestCase.java
@@ -1,15 +1,43 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Copyright 2009 Sun Microsystems, Inc.
+ */
+
 package org.opends.sdk;
 
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.Test;
-import org.opends.server.TestCaseUtils;
 
-import java.util.IdentityHashMap;
-import java.util.Set;
+
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
+import java.util.IdentityHashMap;
+import java.util.Set;
+
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.Test;
+
+
 
 /**
  * This class defines a base test case that should be subclassed by all
@@ -18,75 +46,86 @@
  * This class adds the ability to print error messages and automatically
  * have them include the class name.
  */
-@Test(sequential=true)
-public abstract class OpenDSTestCase 
+@Test(sequential = true)
+public abstract class OpenDSTestCase
 {
-   @BeforeSuite
-  public final void suppressOutput() {
-    TestCaseUtils.suppressOutput();
-  }
-
-  @AfterSuite
-  public final void shutdownServer() {
-    TestCaseUtils.unsupressOutput();
-  }
 
   //
   // This is all a HACK to reduce the amount of memory that's consumed.
   //
   // This could be a problem if a subclass references a @DataProvider in
-  // a super-class that provides static parameters, i.e. the parameters are
+  // a super-class that provides static parameters, i.e. the parameters
+  // are
   // not regenerated for each invocation of the DataProvider.
   //
 
-  /** A list of all parameters that were generated by a @DataProvider
-   *  and passed to a test method of this class.  TestListener helps us
-   *  keep this so that once all of the tests are finished, we can clear
-   *  it out in an @AfterClass method.  We can't just clear it out right
-   *  away in the TestListener because some methods share a @DataProvider.*/
-  private final IdentityHashMap<Object[],Object> successfulTestParams = new IdentityHashMap<Object[],Object>();
+  /**
+   * A list of all parameters that were generated by a @DataProvider and
+   * passed to a test method of this class. TestListener helps us keep
+   * this so that once all of the tests are finished, we can clear it
+   * out in an @AfterClass method. We can't just clear it out right away
+   * in the TestListener because some methods share a @DataProvider.
+   */
+  private final IdentityHashMap<Object[], Object> successfulTestParams = new IdentityHashMap<Object[], Object>();
 
-  /** These are test parameters from a test that has failed.  We need to
-   *  keep these around because the test report expects to find them when
-   *  printing out failures. */
-  private final IdentityHashMap<Object[],Object> failedTestParams = new IdentityHashMap<Object[],Object>();
+  /**
+   * These are test parameters from a test that has failed. We need to
+   * keep these around because the test report expects to find them when
+   * printing out failures.
+   */
+  private final IdentityHashMap<Object[], Object> failedTestParams = new IdentityHashMap<Object[], Object>();
+
+
 
   /**
    * Adds testParams to the list of all test parameters, so it can be
    * null'ed out later if it's not part.
    */
-  void addParamsFromSuccessfulTests(Object[] testParams) {
-    if (testParams != null) {
+  void addParamsFromSuccessfulTests(Object[] testParams)
+  {
+    if (testParams != null)
+    {
       successfulTestParams.put(testParams, testParams);
     }
   }
 
+
+
   /**
-   * Adds testParams to the list of all failed test parameters, so that we
-   * know to NOT null it out later.
+   * Adds testParams to the list of all failed test parameters, so that
+   * we know to NOT null it out later.
    */
-  void addParamsFromFailedTest(Object[] testParams) {
-    if (testParams != null) {
+  void addParamsFromFailedTest(Object[] testParams)
+  {
+    if (testParams != null)
+    {
       failedTestParams.put(testParams, testParams);
     }
   }
 
+
+
   /**
    * null out all test parameters except the ones used in failed tests
    * since we might need these again.
    */
   @AfterClass(alwaysRun = true)
-  public void clearSuccessfulTestParams() {
+  public void clearSuccessfulTestParams()
+  {
     Set<Object[]> paramsSet = successfulTestParams.keySet();
-    if (paramsSet == null) {  // Can this ever happen?
+    if (paramsSet == null)
+    { // Can this ever happen?
       return;
     }
-    for (Object[] params: paramsSet) {
-      if (failedTestParams.containsKey(params)) {
+    for (Object[] params : paramsSet)
+    {
+      if (failedTestParams.containsKey(params))
+      {
         continue;
       }
 
-      for (int i = 0; i < params.length; i++) {
+      for (int i = 0; i < params.length; i++)
+      {
         params[i] = null;
       }
     }
@@ -94,38 +133,47 @@
     failedTestParams.clear();
   }
 
+
+
   /**
-   * The member variables of a test class can prevent lots of memory from being
-   * reclaimed, so we use reflection to null out all of the member variables
-   * after the tests have run.  Since all tests must inherit from
-   * DirectoryServerTestCase, TestNG guarantees that this method runs after
-   * all of the subclass methods, so this isn't too dangerous.
+   * The member variables of a test class can prevent lots of memory
+   * from being reclaimed, so we use reflection to null out all of the
+   * member variables after the tests have run. Since all tests must
+   * inherit from DirectoryServerTestCase, TestNG guarantees that this
+   * method runs after all of the subclass methods, so this isn't too
+   * dangerous.
    */
   @AfterClass(alwaysRun = true)
-  public void nullMemberVariablesAfterTest() {
-    Class cls = this.getClass();
+  public void nullMemberVariablesAfterTest()
+  {
+    Class<?> cls = this.getClass();
     // Iterate through all of the fields in all subclasses of
     // DirectoryServerTestCase, but not DirectoryServerTestCase itself.
-    while (OpenDSTestCase.class.isAssignableFrom(cls) &&
-           !OpenDSTestCase.class.equals(cls))
+    while (OpenDSTestCase.class.isAssignableFrom(cls)
+        && !OpenDSTestCase.class.equals(cls))
     {
       Field fields[] = cls.getDeclaredFields();
-      for (int i = 0; i < fields.length; i++) {
+      for (int i = 0; i < fields.length; i++)
+      {
         Field field = fields[i];
         int modifiers = field.getModifiers();
-        Class fieldClass = field.getType();
-        // If it's a non-static non-final non-primitive type, then null it out
-        // so that the garbage collector can reclaim it and everything it
+        Class<?> fieldClass = field.getType();
+        // If it's a non-static non-final non-primitive type, then null
+        // it out
+        // so that the garbage collector can reclaim it and everything
+        // it
         // references.
-        if (!fieldClass.isPrimitive() &&
-            !fieldClass.isEnum()      &&
-            !Modifier.isFinal(modifiers) &&
-            !Modifier.isStatic(modifiers))
+        if (!fieldClass.isPrimitive() && !fieldClass.isEnum()
+            && !Modifier.isFinal(modifiers)
+            && !Modifier.isStatic(modifiers))
         {
           field.setAccessible(true);
-          try {
+          try
+          {
             field.set(this, null);
-          } catch (IllegalAccessException e) {
+          }
+          catch (IllegalAccessException e)
+          {
             // We're only doing this to save memory, so it's no big deal
             // if we can't set it.
           }
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/SuiteRunner.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/SuiteRunner.java
new file mode 100755
index 0000000..e8bbb7b
--- /dev/null
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/SuiteRunner.java
@@ -0,0 +1,54 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Copyright 2008 Sun Microsystems, Inc.
+ */
+package org.opends.sdk;
+
+
+
+import org.testng.TestNG;
+
+
+
+/**
+ * This class wraps TestNG so that we can force the process to exit if
+ * there is an uncaught exception (e.g. OutOfMemoryError).
+ */
+public class SuiteRunner
+{
+  public static void main(String[] args)
+  {
+    try
+    {
+      TestNG.main(args);
+    }
+    catch (Throwable e)
+    {
+      System.err.println("TestNG.main threw an expected exception:");
+      e.printStackTrace(System.err);
+      System.exit(TestNG.HAS_FAILURE);
+    }
+  }
+}
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/TestListener.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/TestListener.java
new file mode 100755
index 0000000..e2294bf
--- /dev/null
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/TestListener.java
@@ -0,0 +1,1458 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Copyright 2008 Sun Microsystems, Inc.
+ */
+package org.opends.sdk;
+
+
+
+import org.testng.TestListenerAdapter;
+import org.testng.IReporter;
+import org.testng.ISuite;
+import org.testng.ITestResult;
+import org.testng.IClass;
+import org.testng.ITestNGMethod;
+import org.testng.ITestContext;
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+import org.testng.xml.XmlSuite;
+import static com.sun.opends.sdk.util.StaticUtils.EOL;
+
+import java.util.*;
+import java.io.PrintStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileNotFoundException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationTargetException;
+
+
+
+/**
+ * This class is our replacement for the test results that TestNG
+ * generates. It prints out test to the console as they happen.
+ */
+public class TestListener extends TestListenerAdapter implements
+    IReporter
+{
+
+  /**
+   *
+   */
+  private static class TestClassResults
+  {
+    private final IClass _cls;
+
+    private final LinkedHashMap<ITestNGMethod, TestMethodResults> _methods = new LinkedHashMap<ITestNGMethod, TestMethodResults>();
+
+    private int _totalInvocations = 0;
+
+    private long _totalDurationMs = 0;
+
+    // Indexed by SUCCESS, FAILURE, SKIP, SUCCESS_PERCENTAGE_FAILURE
+    private int[] _resultCounts = new int[STATUSES.length];
+
+
+
+    public TestClassResults(IClass cls)
+    {
+      _cls = cls;
+    }
+
+
+
+    private TestMethodResults getResultsForMethod(ITestNGMethod method)
+    {
+      TestMethodResults results = _methods.get(method);
+      if (results == null)
+      {
+        results = new TestMethodResults(method);
+        _methods.put(method, results);
+      }
+      return results;
+    }
+
+
+
+    synchronized void addTestResult(ITestResult result)
+    {
+      _totalInvocations++;
+      _totalDurationMs += result.getEndMillis()
+          - result.getStartMillis();
+
+      getResultsForMethod(result.getMethod()).addTestResult(result);
+      int status = result.getStatus();
+      if (status < 0 || status >= _resultCounts.length)
+      {
+        status = 0;
+      }
+      _resultCounts[status]++;
+    }
+
+
+
+    synchronized Collection<TestMethodResults> getAllMethodResults()
+    {
+      return _methods.values();
+    }
+
+
+
+    synchronized void getSummaryTimingInfo(StringBuilder timingOutput)
+    {
+      timingOutput.append(_cls.getRealClass().getName() + "    ");
+      timingOutput.append(getTotalDurationMs() + " ms" + " ("
+          + getTotalInvocations() + ")");
+    }
+
+
+
+    synchronized void getTimingInfo(StringBuilder timingOutput)
+    {
+      getSummaryTimingInfo(timingOutput);
+      timingOutput.append(EOL);
+      for (TestMethodResults results : getAllMethodResults())
+      {
+        results.getTimingInfo(timingOutput, false);
+      }
+
+      timingOutput.append(EOL);
+    }
+
+
+
+    long getTotalDurationMs()
+    {
+      return _totalDurationMs;
+    }
+
+
+
+    int getTotalInvocations()
+    {
+      return _totalInvocations;
+    }
+  }
+
+
+
+  /**
+   *
+   */
+  private static class TestMethodResults
+  {
+    private final ITestNGMethod _method;
+
+    int _totalInvocations = 0;
+
+    long _totalDurationMs = 0;
+
+    // Indexed by SUCCESS, FAILURE, SKIP, SUCCESS_PERCENTAGE_FAILURE
+    private int[] _resultCounts = new int[STATUSES.length];
+
+
+
+    public TestMethodResults(ITestNGMethod method)
+    {
+      _method = method;
+    }
+
+
+
+    synchronized void addTestResult(ITestResult result)
+    {
+      _totalInvocations++;
+      _totalDurationMs += result.getEndMillis()
+          - result.getStartMillis();
+
+      int status = result.getStatus();
+      if (status < 0 || status >= _resultCounts.length)
+      {
+        status = 0;
+      }
+      _resultCounts[status]++;
+    }
+
+
+
+    synchronized void getTimingInfo(StringBuilder timingOutput,
+        boolean includeClassName)
+    {
+      timingOutput.append("    ");
+      if (includeClassName)
+      {
+        timingOutput.append(_method.getRealClass().getName()).append(
+            "#");
+      }
+      timingOutput.append(_method.getMethodName() + "  ");
+      timingOutput.append(_totalDurationMs + " ms" + " ("
+          + _totalInvocations + ")");
+      if (_resultCounts[ITestResult.FAILURE] > 0)
+      {
+        timingOutput.append(" " + _resultCounts[ITestResult.FAILURE]
+            + " failure(s)");
+      }
+      timingOutput.append(EOL);
+    }
+  }
+
+
+
+  public static final String REPORT_FILE_NAME = "results.txt";
+
+  // This is used to communicate with build.xml. So that even when a
+  // test
+  // fails, we can do the coverage report before failing the build.
+  public static final String ANT_TESTS_FAILED_FILE_NAME = ".tests-failed-marker";
+
+  private final StringBuilder _bufferedTestFailures = new StringBuilder();
+
+  public static final String PROPERTY_TEST_PROGRESS = "test.progress";
+
+  public static final String TEST_PROGRESS_NONE = "none";
+
+  public static final String TEST_PROGRESS_ALL = "all";
+
+  public static final String TEST_PROGRESS_DEFAULT = "default";
+
+  public static final String TEST_PROGRESS_TIME = "time";
+
+  public static final String TEST_PROGRESS_TEST_COUNT = "count";
+
+  // for
+  // now,
+  // since
+  // it's
+  // not
+  // useful
+  // to
+  // most
+  // developers
+
+  public static final String TEST_PROGRESS_MEMORY = "memory";
+
+  public static final String TEST_PROGRESS_MEMORY_GCS = "gcs"; // Hidden
+
+  public static final String TEST_PROGRESS_THREAD_COUNT = "threadcount";
+
+  public static final String TEST_PROGRESS_THREAD_CHANGES = "threadchanges";
+
+  private boolean doProgressNone = false;
+
+  private boolean doProgressTime = true;
+
+  private boolean doProgressTestCount = true;
+
+  private boolean doProgressMemory = false;
+
+  private boolean doProgressMemoryGcs = false;
+
+  private boolean doProgressThreadCount = false;
+
+  private boolean doProgressThreadChanges = false;
+
+  private static final String DIVIDER_LINE = "-------------------------------------------------------------------------------"
+      + EOL;
+
+  private final static int PAGE_WIDTH = 80;
+
+
+
+  public static void pauseOnFailure()
+  {
+    File tempFile = null;
+    try
+    {
+      tempFile = File.createTempFile("testfailure", "watchdog");
+      tempFile.deleteOnExit();
+      System.err.println("**** Pausing test execution until file "
+          + tempFile.getCanonicalPath() + " is removed.");
+    }
+    catch (Exception e)
+    {
+      System.err.println("**** ERROR:  Could not create a watchdog "
+          + "file.  Pausing test execution indefinitely.");
+      System.err.println("**** You will have to manually kill the "
+          + "JVM when you're done investigating the problem.");
+    }
+
+    while ((tempFile != null) && tempFile.exists())
+    {
+      try
+      {
+        Thread.sleep(100);
+      }
+      catch (Exception e)
+      {
+      }
+    }
+
+    System.err.println("**** Watchdog file removed.  Resuming test "
+        + "case execution.");
+  }
+
+
+
+  /**
+   * Return a String representation of all of the current threads.
+   *
+   * @return a dump of all Threads on the server
+   */
+  public static String threadStacksToString()
+  {
+    Map<Thread, StackTraceElement[]> threadStacks = Thread
+        .getAllStackTraces();
+
+    // Re-arrange all of the elements by thread ID so that there is some
+    // logical
+    // order.
+    TreeMap<Long, Map.Entry<Thread, StackTraceElement[]>> orderedStacks = new TreeMap<Long, Map.Entry<Thread, StackTraceElement[]>>();
+    for (Map.Entry<Thread, StackTraceElement[]> e : threadStacks
+        .entrySet())
+    {
+      orderedStacks.put(e.getKey().getId(), e);
+    }
+
+    final StringBuilder buffer = new StringBuilder();
+    for (Map.Entry<Thread, StackTraceElement[]> e : orderedStacks
+        .values())
+    {
+      Thread t = e.getKey();
+      StackTraceElement[] stackElements = e.getValue();
+
+      long id = t.getId();
+
+      buffer.append("id=");
+      buffer.append(id);
+      buffer.append(" ---------- ");
+      buffer.append(t.getName());
+      buffer.append(" ----------");
+      buffer.append(EOL);
+
+      if (stackElements != null)
+      {
+        for (int j = 0; j < stackElements.length; j++)
+        {
+          buffer.append("   ").append(stackElements[j].getClassName());
+          buffer.append(".");
+          buffer.append(stackElements[j].getMethodName());
+          buffer.append("(");
+          buffer.append(stackElements[j].getFileName());
+          buffer.append(":");
+          if (stackElements[j].isNativeMethod())
+          {
+            buffer.append("native");
+          }
+          else
+          {
+            buffer.append(stackElements[j].getLineNumber());
+          }
+          buffer.append(")").append(EOL);
+        }
+      }
+      buffer.append(EOL);
+    }
+
+    return buffer.toString();
+  }
+
+
+
+  private static String center(String header)
+  {
+    StringBuilder buffer = new StringBuilder();
+    int indent = (PAGE_WIDTH - header.length()) / 2;
+    for (int i = 0; i < indent; i++)
+    {
+      buffer.append(" ");
+    }
+    buffer.append(header);
+    return buffer.toString();
+  }
+
+
+
+  private Set<Class<?>> _checkedForTypeAndAnnotations = new HashSet<Class<?>>();
+
+  private final LinkedHashSet<Class<?>> _classesWithTestsRunInterleaved = new LinkedHashSet<Class<?>>();
+
+  private Object _lastTestObject = null;
+
+  private final IdentityHashMap<Object, Object> _previousTestObjects = new IdentityHashMap<Object, Object>();
+
+  private Set<Method> _checkedForAnnotation = new HashSet<Method>();
+
+  private boolean statusHeaderPrinted = false;
+
+  private final long startTimeMs = System.currentTimeMillis();
+
+  private long prevTimeMs = System.currentTimeMillis();
+
+  private List<String> prevThreads = new ArrayList<String>();
+
+  private long prevMemInUse = 0;
+
+  private long maxMemInUse = 0;
+
+  private final LinkedHashMap<IClass, TestClassResults> _classResults = new LinkedHashMap<IClass, TestClassResults>();
+
+  private static final int NUM_SLOWEST_METHODS = 100;
+
+  private final static String[] STATUSES = { "<<invalid>>", "Success",
+      "Failure", "Skip", "Success Percentage Failure" };
+
+
+
+  public TestListener() throws Exception
+  {
+    initializeProgressVars();
+  }
+
+
+
+  public void generateReport(List<XmlSuite> xmlSuites,
+      List<ISuite> suites, String outputDirectory)
+  {
+    File reportFile = new File(outputDirectory, REPORT_FILE_NAME);
+
+    writeReportToFile(reportFile);
+    writeReportToScreen(reportFile);
+    writeAntTestsFailedMarker(outputDirectory);
+  }
+
+
+
+  public void onConfigurationFailure(ITestResult tr)
+  {
+    super.onConfigurationFailure(tr);
+
+    IClass cls = tr.getTestClass();
+    ITestNGMethod method = tr.getMethod();
+
+    String fqMethod = cls.getName() + "#" + method.getMethodName();
+
+    StringBuilder failureInfo = new StringBuilder();
+    failureInfo.append("Failed Test:  ").append(fqMethod).append(EOL);
+    // Object[] parameters = tr.getParameters();
+
+    Throwable cause = tr.getThrowable();
+    if (cause != null)
+    {
+      failureInfo.append("Failure Cause:  ").append(
+          getTestngLessStack(cause));
+    }
+
+    failureInfo.append(EOL + EOL);
+    System.err.print(EOL + EOL + EOL
+        + "         C O N F I G U R A T I O N   F A I L U R E ! ! !"
+        + EOL + EOL);
+    System.err.print(failureInfo);
+    System.err.print(DIVIDER_LINE + EOL + EOL);
+
+    _bufferedTestFailures.append(failureInfo);
+  }
+
+
+
+  public void onStart(ITestContext testContext)
+  {
+    super.onStart(testContext);
+
+    // Delete the previous report if it's there.
+    new File(testContext.getOutputDirectory(), REPORT_FILE_NAME)
+        .delete();
+  }
+
+
+
+  public void onTestFailedButWithinSuccessPercentage(ITestResult tr)
+  {
+    super.onTestFailedButWithinSuccessPercentage(tr);
+    onTestFinished(tr);
+  }
+
+
+
+  public void onTestFailure(ITestResult tr)
+  {
+    super.onTestFailure(tr);
+
+    IClass cls = tr.getTestClass();
+    ITestNGMethod method = tr.getMethod();
+
+    String fqMethod = cls.getName() + "#" + method.getMethodName();
+
+    StringBuilder failureInfo = new StringBuilder();
+    failureInfo.append("Failed Test:  ").append(fqMethod).append(EOL);
+    Object[] parameters = tr.getParameters();
+
+    Throwable cause = tr.getThrowable();
+    if (cause != null)
+    {
+      failureInfo.append("Failure Cause:  ").append(
+          getTestngLessStack(cause));
+    }
+
+    for (int i = 0; (parameters != null) && (i < parameters.length); i++)
+    {
+      Object parameter = parameters[i];
+      failureInfo.append("parameter[" + i + "]: ").append(parameter)
+          .append(EOL);
+    }
+
+    failureInfo.append(EOL + EOL);
+    System.err.print(EOL + EOL + EOL
+        + "                 T E S T   F A I L U R E ! ! !" + EOL + EOL);
+    System.err.print(failureInfo);
+    System.err.print(DIVIDER_LINE + EOL + EOL);
+
+    _bufferedTestFailures.append(failureInfo);
+
+    String pauseStr = System
+        .getProperty("org.opends.test.pauseOnFailure");
+    if ((pauseStr != null) && pauseStr.equalsIgnoreCase("true"))
+    {
+      pauseOnFailure();
+    }
+
+    onTestFinished(tr);
+  }
+
+
+
+  public void onTestSkipped(ITestResult tr)
+  {
+    super.onTestSkipped(tr);
+    onTestFinished(tr);
+  }
+
+
+
+  public void onTestStart(ITestResult tr)
+  {
+    super.onTestStart(tr);
+
+    enforceTestClassTypeAndAnnotations(tr);
+    checkForInterleavedBetweenClasses(tr);
+    enforceMethodHasAnnotation(tr);
+  }
+
+
+
+  public void onTestSuccess(ITestResult tr)
+  {
+    super.onTestSuccess(tr);
+    onTestFinished(tr);
+  }
+
+
+
+  private void addTestResult(ITestResult result)
+  {
+    getResultsForClass(result.getTestClass()).addTestResult(result);
+
+    // Read the comments in DirectoryServerTestCase to understand what's
+    // going on here.
+    Object[] testInstances = result.getMethod().getInstances();
+    for (int i = 0; i < testInstances.length; i++)
+    {
+      Object testInstance = testInstances[i];
+      if (testInstance instanceof OpenDSTestCase)
+      {
+        OpenDSTestCase openDSTestCase = (OpenDSTestCase) testInstance;
+        Object[] parameters = result.getParameters();
+        if (result.getStatus() == ITestResult.SUCCESS)
+        {
+          openDSTestCase.addParamsFromSuccessfulTests(parameters);
+          // This can eat up a bunch of memory for tests that are
+          // expected to throw
+          result.setThrowable(null);
+        }
+        else
+        {
+          openDSTestCase.addParamsFromFailedTest(parameters);
+
+          // When the test finishes later on, we might not have
+          // everything
+          // that we need to print the result (e.g. the Schema for an
+          // Entry
+          // or DN), so go ahead and convert it to a String now.
+          result.setParameters(convertToStringParameters(parameters));
+        }
+      }
+      else
+      {
+        // We already warned about it.
+      }
+    }
+  }
+
+
+
+  private void checkForInterleavedBetweenClasses(ITestResult tr)
+  {
+    Object[] testInstances = tr.getMethod().getInstances();
+    // This will almost always have a single element. If it doesn't,
+    // just
+    // skip it.
+    if (testInstances.length != 1)
+    {
+      return;
+    }
+
+    Object testInstance = testInstances[0];
+
+    // We're running another test on the same test object. Everything is
+    // fine.
+    if (_lastTestObject == testInstance)
+    {
+      return;
+    }
+
+    // Otherwise, we're running a new test, so save the old one.
+    if (_lastTestObject != null)
+    {
+      _previousTestObjects.put(_lastTestObject, _lastTestObject);
+    }
+
+    // Output progress info since we're running a new class
+    outputTestProgress(_lastTestObject);
+
+    // And make sure we don't have a test object that we already ran
+    // tests with.
+    if (_previousTestObjects.containsKey(testInstance))
+    {
+      _classesWithTestsRunInterleaved.add(testInstance.getClass());
+    }
+
+    _lastTestObject = testInstance;
+  }
+
+
+
+  private String[] convertToStringParameters(Object[] parameters)
+  {
+    if (parameters == null)
+    {
+      return null;
+    }
+
+    String[] strParams = new String[parameters.length];
+    for (int i = 0; i < parameters.length; i++)
+    {
+      strParams[i] = String.valueOf(parameters[i]).intern();
+    }
+
+    return strParams;
+  }
+
+
+
+  private int countTestMethods()
+  {
+    int count = 0;
+    for (TestClassResults results : _classResults.values())
+    {
+      count += results._methods.size();
+    }
+    return count;
+  }
+
+
+
+  private int countTestsWithStatus(int status)
+  {
+    int count = 0;
+    for (TestClassResults results : _classResults.values())
+    {
+      count += results._resultCounts[status];
+    }
+    return count;
+  }
+
+
+
+  private int countTotalInvocations()
+  {
+    int count = 0;
+    for (TestClassResults results : _classResults.values())
+    {
+      count += results._totalInvocations;
+    }
+    return count;
+  }
+
+
+
+  private void enforceMethodHasAnnotation(ITestResult tr)
+  {
+    // Only warn once per method.
+    Method testMethod = tr.getMethod().getMethod();
+    if (_checkedForAnnotation.contains(testMethod))
+    {
+      return;
+    }
+    _checkedForAnnotation.add(testMethod);
+
+    Annotation testAnnotation = testMethod.getAnnotation(Test.class);
+    Annotation dataProviderAnnotation = testMethod
+        .getAnnotation(DataProvider.class);
+
+    if ((testAnnotation == null) && (dataProviderAnnotation == null))
+    {
+      String errorMessage = "The test method "
+          + testMethod
+          + " does not have a @Test annotation.  "
+          + "However, TestNG assumes it is a test method because it's a public method "
+          + "in a class with a class-level @Test annotation.  You can remove this warning by either "
+          + "marking the method with @Test or by making it non-public.";
+      System.err.println("\n\nWARNING: " + errorMessage + "\n\n");
+    }
+  }
+
+
+
+  private void enforceTestClassTypeAndAnnotations(ITestResult tr)
+  {
+    Class<?> testClass = null;
+    testClass = tr.getMethod().getRealClass();
+
+    // Only warn once per class.
+    if (_checkedForTypeAndAnnotations.contains(testClass))
+    {
+      return;
+    }
+    _checkedForTypeAndAnnotations.add(testClass);
+
+    if (!OpenDSTestCase.class.isAssignableFrom(testClass))
+    {
+      String errorMessage = "The test class " + testClass.getName()
+          + " must inherit (directly or indirectly) "
+          + "from DirectoryServerTestCase.";
+      System.err.println("\n\nERROR: " + errorMessage + "\n\n");
+      throw new RuntimeException(errorMessage);
+    }
+
+    Class<?> classWithTestAnnotation = findClassWithTestAnnotation(testClass);
+
+    if (classWithTestAnnotation == null)
+    {
+      String errorMessage = "The test class "
+          + testClass.getName()
+          + " does not have a @Test annotation.  "
+          + "All test classes must have a @Test annotation, and this annotation must have "
+          + "sequential=true set to ensure that tests for a single class are run together.";
+      System.err.println("\n\nERROR: " + errorMessage + "\n\n");
+      throw new RuntimeException(errorMessage);
+    }
+
+    Test testAnnotation = classWithTestAnnotation
+        .getAnnotation(Test.class);
+    if (!testAnnotation.sequential())
+    {
+      // Give an error message that is as specific as possible.
+      String errorMessage = "The @Test annotation for class "
+          + testClass.getName()
+          + (classWithTestAnnotation.equals(testClass) ? " "
+              : (", which is declared by class "
+                  + classWithTestAnnotation.getName() + ", "))
+          + "must include sequential=true to ensure that tests for a single class are run together.";
+      System.err.println("\n\nERROR: " + errorMessage + "\n\n");
+      throw new RuntimeException(errorMessage);
+    }
+  }
+
+
+
+  // Return the class in cls's inheritence hierarchy that has the @Test
+  // annotation defined.
+  private Class<?> findClassWithTestAnnotation(Class<?> cls)
+  {
+    while (cls != null)
+    {
+      if (cls.getAnnotation(Test.class) != null)
+      {
+        return cls;
+      }
+      else
+      {
+        cls = cls.getSuperclass();
+      }
+    }
+    return null;
+  }
+
+
+
+  synchronized private List<TestMethodResults> getAllMethodResults()
+  {
+    List<TestMethodResults> allResults = new ArrayList<TestMethodResults>();
+    for (TestClassResults results : _classResults.values())
+    {
+      allResults.addAll(results.getAllMethodResults());
+    }
+    return allResults;
+  }
+
+
+
+  private List<TestClassResults> getClassesDescendingSortedByDuration()
+  {
+    List<TestClassResults> allClasses = new ArrayList<TestClassResults>(
+        _classResults.values());
+    Collections.sort(allClasses, new Comparator<TestClassResults>()
+    {
+      public int compare(TestClassResults o1, TestClassResults o2)
+      {
+        if (o1._totalDurationMs > o2._totalDurationMs)
+        {
+          return -1;
+        }
+        else if (o1._totalDurationMs < o2._totalDurationMs)
+        {
+          return 1;
+        }
+        else
+        {
+          return 0;
+        }
+      }
+    });
+    return allClasses;
+  }
+
+
+
+  private String getFqMethod(ITestResult result)
+  {
+    IClass cls = result.getTestClass();
+    ITestNGMethod method = result.getMethod();
+
+    return cls.getName() + "#" + method.getMethodName();
+  }
+
+
+
+  private List<TestMethodResults> getMethodsDescendingSortedByDuration()
+  {
+    List<TestMethodResults> allMethods = getAllMethodResults();
+    Collections.sort(allMethods, new Comparator<TestMethodResults>()
+    {
+      public int compare(TestMethodResults o1, TestMethodResults o2)
+      {
+        if (o1._totalDurationMs > o2._totalDurationMs)
+        {
+          return -1;
+        }
+        else if (o1._totalDurationMs < o2._totalDurationMs)
+        {
+          return 1;
+        }
+        else
+        {
+          return 0;
+        }
+      }
+    });
+    return allMethods;
+  }
+
+
+
+  private TestClassResults getResultsForClass(IClass cls)
+  {
+    TestClassResults results = _classResults.get(cls);
+    if (results == null)
+    {
+      results = new TestClassResults(cls);
+      _classResults.put(cls, results);
+    }
+    return results;
+  }
+
+
+
+  private void getSlowestTestsOutput(StringBuilder timingOutput)
+  {
+    timingOutput.append(center("CLASS SUMMARY SORTED BY DURATION"))
+        .append(EOL);
+    timingOutput.append(
+        center("[class-name total-time (total-invocations)]")).append(
+        EOL + EOL);
+    List<TestClassResults> sortedClasses = getClassesDescendingSortedByDuration();
+    for (int i = 0; i < sortedClasses.size(); i++)
+    {
+      TestClassResults results = sortedClasses.get(i);
+      timingOutput.append("  ");
+      results.getSummaryTimingInfo(timingOutput);
+      timingOutput.append(EOL);
+    }
+
+    timingOutput.append(EOL + DIVIDER_LINE + EOL + EOL);
+    timingOutput.append(center("SLOWEST METHODS")).append(EOL);
+    timingOutput.append(
+        center("[method-name total-time (total-invocations)]")).append(
+        EOL + EOL);
+    List<TestMethodResults> sortedMethods = getMethodsDescendingSortedByDuration();
+    for (int i = 0; i < Math.min(sortedMethods.size(),
+        NUM_SLOWEST_METHODS); i++)
+    {
+      TestMethodResults results = sortedMethods.get(i);
+      results.getTimingInfo(timingOutput, true);
+    }
+  }
+
+
+
+  private String getTestngLessStack(Throwable t)
+  {
+    StackTraceElement[] elements = t.getStackTrace();
+
+    int lowestOpenDSFrame;
+    for (lowestOpenDSFrame = elements.length - 1; lowestOpenDSFrame >= 0; lowestOpenDSFrame--)
+    {
+      StackTraceElement element = elements[lowestOpenDSFrame];
+      String clsName = element.getClassName();
+      if (clsName.startsWith("org.opends.")
+          && !clsName.equals("org.opends.server.SuiteRunner"))
+      {
+        break;
+      }
+    }
+
+    StringBuilder buffer = new StringBuilder();
+    buffer.append(t).append(EOL);
+    for (int i = 0; i <= lowestOpenDSFrame; i++)
+    {
+      buffer.append("    ").append(elements[i]).append(EOL);
+    }
+
+    Throwable cause = t.getCause();
+    if (t != null)
+    {
+      if (cause instanceof InvocationTargetException)
+      {
+        InvocationTargetException invocation = ((InvocationTargetException) cause);
+        buffer.append("Invocation Target Exception: "
+            + getTestngLessStack(invocation));
+      }
+    }
+
+    return buffer.toString();
+  }
+
+
+
+  private void initializeProgressVars()
+  {
+    String prop = System.getProperty(PROPERTY_TEST_PROGRESS);
+    if (prop == null)
+    {
+      return;
+    }
+
+    prop = prop.toLowerCase();
+    List<String> progressValues = Arrays.asList(prop
+        .split("\\s*\\W+\\s*"));
+
+    if ((prop.length() == 0) || progressValues.isEmpty())
+    {
+      // Accept the defaults
+    }
+    else if (progressValues.contains(TEST_PROGRESS_NONE))
+    {
+      doProgressNone = true;
+      doProgressTime = false;
+      doProgressTestCount = false;
+      doProgressMemory = false;
+      doProgressMemoryGcs = false;
+      doProgressThreadCount = false;
+      doProgressThreadChanges = false;
+    }
+    else if (progressValues.contains(TEST_PROGRESS_ALL))
+    {
+      doProgressNone = false;
+      doProgressTime = true;
+      doProgressTestCount = true;
+      doProgressMemory = true;
+      doProgressMemoryGcs = true;
+      doProgressThreadCount = true;
+      doProgressThreadChanges = true;
+    }
+    else
+    {
+      doProgressNone = false;
+      doProgressTime = progressValues.contains(TEST_PROGRESS_TIME);
+      doProgressTestCount = progressValues
+          .contains(TEST_PROGRESS_TEST_COUNT);
+      doProgressMemory = progressValues.contains(TEST_PROGRESS_MEMORY);
+      doProgressMemoryGcs = progressValues
+          .contains(TEST_PROGRESS_MEMORY_GCS);
+      doProgressThreadCount = progressValues
+          .contains(TEST_PROGRESS_THREAD_COUNT);
+      doProgressThreadChanges = progressValues
+          .contains(TEST_PROGRESS_THREAD_CHANGES);
+
+      // If we were asked to do the defaults, then restore anything
+      // that's on by default
+      if (progressValues.contains(TEST_PROGRESS_DEFAULT))
+      {
+        doProgressTime = true;
+        doProgressTestCount = true;
+      }
+    }
+  }
+
+
+
+  private List<String> listAllThreadNames()
+  {
+    Thread currentThread = Thread.currentThread();
+    ThreadGroup topGroup = currentThread.getThreadGroup();
+    while (topGroup.getParent() != null)
+    {
+      topGroup = topGroup.getParent();
+    }
+
+    Thread threads[] = new Thread[topGroup.activeCount() * 2];
+    int numThreads = topGroup.enumerate(threads);
+
+    List<String> activeThreads = new ArrayList<String>();
+    for (int i = 0; i < numThreads; i++)
+    {
+      Thread thread = threads[i];
+      if (thread.isAlive())
+      {
+        String fullName = thread.getName();
+        activeThreads.add(fullName);
+      }
+    }
+
+    Collections.sort(activeThreads);
+    return activeThreads;
+  }
+
+
+
+  private void onTestFinished(ITestResult tr)
+  {
+    // Clear when a test finishes instead before the next one starts
+    // so that we get the output generated by any @BeforeClass method
+    // etc.
+    addTestResult(tr);
+  }
+
+
+
+  private void outputTestProgress(Object finishedTestObject)
+  {
+    if (doProgressNone)
+    {
+      return;
+    }
+
+    printStatusHeaderOnce();
+
+    if (doProgressTime)
+    {
+      long curTimeMs = System.currentTimeMillis();
+      long durationSec = (curTimeMs - startTimeMs) / 1000;
+      long durationLastMs = curTimeMs - prevTimeMs;
+      System.err.printf("{%2d:%02d (%3.0fs)}  ", (durationSec / 60),
+          (durationSec % 60), (durationLastMs / 1000.0));
+      prevTimeMs = curTimeMs;
+    }
+
+    if (doProgressTestCount)
+    {
+      System.err.printf("{%3dc %4dm %5di %df}  ", _classResults.size(),
+          countTestMethods(), countTotalInvocations(),
+          countTestsWithStatus(ITestResult.FAILURE));
+    }
+
+    if (doProgressMemory)
+    {
+      Runtime runtime = Runtime.getRuntime();
+      long beforeGc = System.currentTimeMillis();
+      int gcs = runGc();
+      long gcDuration = System.currentTimeMillis() - beforeGc;
+
+      long totalMemory = runtime.totalMemory();
+      long freeMemory = runtime.freeMemory();
+      long curMemInUse = totalMemory - freeMemory;
+      long memDelta = curMemInUse - prevMemInUse;
+      double perMegaByte = 1.0 / (1024.0 * 1024.0);
+
+      maxMemInUse = Math.max(maxMemInUse, curMemInUse);
+
+      System.err.printf("{%5.1fMB  %+5.1fMB}  ", curMemInUse
+          * perMegaByte, memDelta * perMegaByte);
+
+      if (doProgressMemoryGcs)
+      {
+        System.err.printf("{%2d gcs  %4.1fs}  ", gcs,
+            gcDuration / 1000.0);
+      }
+      prevMemInUse = curMemInUse;
+    }
+
+    if (doProgressThreadCount)
+    {
+      System.err.printf("{#td %3d}  ", Thread.activeCount());
+    }
+
+    if (finishedTestObject == null)
+    {
+      System.err.println(": starting");
+    }
+    else
+    {
+      String abbrClass = packageLessClass(finishedTestObject);
+      System.err.printf(": %s ", abbrClass).flush();
+      System.err.println();
+    }
+
+    if (doProgressThreadChanges)
+    {
+      List<String> currentThreads = listAllThreadNames();
+      List<String> newThreads = removeExactly(prevThreads,
+          currentThreads);
+      List<String> oldThreads = removeExactly(currentThreads,
+          prevThreads);
+
+      if (!newThreads.isEmpty())
+      {
+        System.err.println("  Thread changes:");
+        for (int i = 0; i < oldThreads.size(); i++)
+        {
+          String threadName = oldThreads.get(i);
+          System.err.println("    + " + threadName);
+        }
+        for (int i = 0; i < newThreads.size(); i++)
+        {
+          String threadName = newThreads.get(i);
+          System.err.println("    - " + threadName);
+        }
+      }
+
+      prevThreads = currentThreads;
+    }
+  }
+
+
+
+  private String packageLessClass(Object obj)
+  {
+    return obj.getClass().getName().replaceAll(".*\\.", "");
+  }
+
+
+
+  private synchronized void printStatusHeaderOnce()
+  {
+    if (statusHeaderPrinted)
+    {
+      return;
+    }
+    statusHeaderPrinted = true;
+
+    if (doProgressNone)
+    {
+      return;
+    }
+
+    System.err.println();
+    System.err.println("How to read the progressive status info:");
+
+    if (doProgressTime)
+    {
+      System.err
+          .println("  Test duration status: {Total min:sec.  Since last status sec.}");
+    }
+
+    if (doProgressTestCount)
+    {
+      System.err
+          .println("  Test count status:  {# test classes  # test methods  # test method invocations  # test failures}.");
+    }
+
+    if (doProgressMemory)
+    {
+      System.err
+          .println("  Memory usage status: {MB in use  +/-change since last status}");
+    }
+
+    if (doProgressMemoryGcs)
+    {
+      System.err
+          .println("  GCs during status:  {GCs done to settle used memory   time to do it}");
+    }
+
+    if (doProgressThreadCount)
+    {
+      System.err
+          .println("  Thread count status:  {#td number of active threads}");
+    }
+
+    if (doProgressThreadChanges)
+    {
+      System.err
+          .println("  Thread change status: +/- thread name for new or finished threads since last status");
+    }
+
+    System.err.println("  TestClass (the class that just completed)");
+    System.err.println();
+  }
+
+
+
+  /**
+   * Removes toRemove from base. If there are duplicate items in base,
+   * then only one is removed for each item in toRemove.
+   *
+   * @return a new List with base with toRemove items removed from it
+   */
+  private List<String> removeExactly(List<String> base,
+      List<String> toRemove)
+  {
+    List<String> diff = new ArrayList<String>(base);
+    for (int i = 0; i < toRemove.size(); i++)
+    {
+      String item = toRemove.get(i);
+      diff.remove(item);
+    }
+    return diff;
+  }
+
+
+
+  private int runGc()
+  {
+    Runtime runtime = Runtime.getRuntime();
+    int numGcs;
+    long curMem = usedMemory();
+    long prevMem = Long.MAX_VALUE;
+    StringBuilder gcConvergence = new StringBuilder();
+    for (numGcs = 0; (prevMem > curMem) && numGcs < 100; numGcs++)
+    {
+      runtime.runFinalization();
+      runtime.gc();
+      Thread.yield();
+      Thread.yield();
+
+      prevMem = curMem;
+      curMem = usedMemory();
+
+      gcConvergence.append("[" + numGcs + "]: " + (prevMem - curMem))
+          .append("  ");
+    }
+    return numGcs;
+  }
+
+
+
+  private long usedMemory()
+  {
+    Runtime runtime = Runtime.getRuntime();
+    return runtime.totalMemory() - runtime.freeMemory();
+  }
+
+
+
+  private void writeAntTestsFailedMarker(String outputDirectory)
+  {
+    // Signal 'ant' that all of the tests passed by removing this
+    // special file.
+    if ((countTestsWithStatus(ITestResult.FAILURE) == 0)
+        && (countTestsWithStatus(ITestResult.SKIP) == 0))
+    {
+      new File(outputDirectory, ANT_TESTS_FAILED_FILE_NAME).delete();
+    }
+  }
+
+
+
+  private void writeReportToFile(File reportFile)
+  {
+    PrintStream reportStream = null;
+    try
+    {
+      reportStream = new PrintStream(new FileOutputStream(reportFile));
+    }
+    catch (FileNotFoundException e)
+    {
+      System.err
+          .println("Could not open "
+              + reportFile
+              + " for writing.  Will write the unit test report to the console instead.");
+      e.printStackTrace(System.err);
+      reportStream = System.err;
+    }
+
+    reportStream.println(center("UNIT TEST REPORT"));
+    reportStream.println(center("----------------") + EOL);
+    reportStream.println("Finished at: " + (new Date()));
+    reportStream.println("# Test classes: " + _classResults.size());
+    reportStream.println("# Test classes interleaved: "
+        + _classesWithTestsRunInterleaved.size());
+    reportStream.println("# Test methods: " + countTestMethods());
+    reportStream.println("# Tests passed: "
+        + countTestsWithStatus(ITestResult.SUCCESS));
+    reportStream.println("# Tests failed: "
+        + countTestsWithStatus(ITestResult.FAILURE));
+    reportStream.println(EOL + DIVIDER_LINE + DIVIDER_LINE + EOL + EOL);
+    reportStream.println(center("TEST CLASSES RUN INTERLEAVED"));
+    reportStream.println(EOL + EOL);
+    for (Iterator<Class<?>> iterator = _classesWithTestsRunInterleaved
+        .iterator(); iterator.hasNext();)
+    {
+      Class<?> cls = iterator.next();
+      reportStream.println("  " + cls.getName());
+    }
+
+    reportStream.println(EOL + DIVIDER_LINE + DIVIDER_LINE + EOL + EOL);
+    reportStream.println(center("FAILED TESTS"));
+    reportStream.println(EOL + EOL);
+    reportStream.println(_bufferedTestFailures);
+
+    reportStream.println(EOL + DIVIDER_LINE + DIVIDER_LINE + EOL);
+
+    reportStream.println(getTimingInfo());
+
+    reportStream.close();
+
+    if ((countTestsWithStatus(ITestResult.FAILURE) == 0)
+        && (countTestsWithStatus(ITestResult.SKIP) != 0))
+    {
+      System.err
+          .println("There were no explicit test failures, but some tests were skipped (possibly due to errors in @Before* or @After* methods).");
+      System.exit(-1);
+    }
+  }
+
+
+
+  private void writeReportToScreen(File reportFile)
+  {
+    // HACK: print out status for the last test object
+    outputTestProgress(_lastTestObject);
+
+    List<ITestResult> failedTests = getFailedTests();
+    StringBuilder failed = new StringBuilder();
+    for (int i = 0; i < failedTests.size(); i++)
+    {
+      ITestResult failedTest = failedTests.get(i);
+      String fqMethod = getFqMethod(failedTest);
+      int numFailures = 1;
+      // Peek ahead to see if we had multiple failures for the same
+      // method
+      // In which case, we list it once with a count of the failures.
+      while (((i + 1) < failedTests.size())
+          && fqMethod.equals(getFqMethod(failedTests.get(i + 1))))
+      {
+        numFailures++;
+        i++;
+      }
+
+      failed.append("  ").append(fqMethod);
+
+      if (numFailures > 1)
+      {
+        failed.append(" (x " + numFailures + ")");
+      }
+
+      failed.append(EOL);
+    }
+
+    if (failed.length() > 0)
+    {
+      System.err.println("The following unit tests failed: ");
+      System.err.println(failed);
+      System.err.println();
+      System.err
+          .println("Include the ant option '-Dtest.failures=true' to rerun only the failed tests.");
+    }
+    else
+    {
+      System.err.println("All of the tests passed.");
+    }
+
+    System.err.println();
+    System.err.println("Wrote full test report to:");
+    System.err.println(reportFile.getAbsolutePath());
+    System.err.println("Test classes run interleaved: "
+        + _classesWithTestsRunInterleaved.size());
+
+    // Try to hard to reclaim as much memory as possible.
+    runGc();
+
+    System.err.printf("Final amount of memory in use: %.1f MB",
+        (usedMemory() / (1024.0 * 1024.0))).println();
+    if (doProgressMemory)
+    {
+      System.err.printf("Maximum amount of memory in use: %.1f MB",
+          (maxMemInUse / (1024.0 * 1024.0))).println();
+    }
+    System.err.println("Final number of threads: "
+        + Thread.activeCount());
+
+    System.err.println();
+
+    if (doProgressThreadChanges)
+    {
+      System.err.print(threadStacksToString());
+    }
+
+    if (_classesWithTestsRunInterleaved.size() > 0)
+    {
+      System.err
+          .println("WARNING:  Some of the test methods for multiple classes "
+              + "were run out of order (i.e. interleaved with other classes).  Either "
+              + "a class doesn't have the sequential=true annotation, which should "
+              + "have been reported already or there has been a regression with TestNG.");
+    }
+  }
+
+
+
+  synchronized StringBuilder getTimingInfo()
+  {
+    StringBuilder timingOutput = new StringBuilder();
+    timingOutput.append(center("TESTS RUN BY CLASS")).append(EOL);
+    timingOutput.append(
+        center("[method-name total-time (total-invocations)]")).append(
+        EOL + EOL);
+    for (TestClassResults results : _classResults.values())
+    {
+      results.getTimingInfo(timingOutput);
+    }
+
+    timingOutput.append(EOL + DIVIDER_LINE + DIVIDER_LINE + EOL);
+
+    getSlowestTestsOutput(timingOutput);
+    return timingOutput;
+  }
+}
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/ApproximateMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/ApproximateMatchingRuleTest.java
index 62b99bc..ce6a792 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/ApproximateMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/ApproximateMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.AMR_DOUBLE_METAPHONE_NAME;
+import static org.opends.sdk.schema.SchemaConstants.AMR_DOUBLE_METAPHONE_NAME;
 import static org.testng.Assert.assertEquals;
 
 import org.opends.sdk.ConditionResult;
@@ -44,8 +44,8 @@
  */
 public class ApproximateMatchingRuleTest extends SchemaTestCase
 {
-  MatchingRule metaphone =
-      Schema.getCoreSchema().getMatchingRule(AMR_DOUBLE_METAPHONE_NAME);
+  MatchingRule metaphone = Schema.getCoreSchema().getMatchingRule(
+      AMR_DOUBLE_METAPHONE_NAME);
 
 
 
@@ -154,13 +154,12 @@
       throws Exception
   {
     // normalize the 2 provided values
-    ByteString normalizedValue1 =
-        rule.normalizeAttributeValue(ByteString.valueOf(value1));
+    ByteString normalizedValue1 = rule
+        .normalizeAttributeValue(ByteString.valueOf(value1));
 
     // check that the approximatelyMatch return the expected result.
-    ConditionResult liveResult =
-        rule.getAssertion(ByteString.valueOf(value2)).matches(
-            normalizedValue1);
+    ConditionResult liveResult = rule.getAssertion(
+        ByteString.valueOf(value2)).matches(normalizedValue1);
     assertEquals(result, liveResult);
   }
 }
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeSyntaxTest.java
index 08dbbf5..785f8e0 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_ATTRIBUTE_TYPE_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_ATTRIBUTE_TYPE_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeTest.java
index dbc9538..a24fc50 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/AttributeTypeTest.java
@@ -28,17 +28,12 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.*;
+import static org.opends.sdk.schema.SchemaConstants.*;
 
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
-import org.opends.messages.Message;
 import org.opends.sdk.DecodeException;
-import org.opends.server.types.CommonSchemaElements;
+import org.opends.sdk.LocalizedIllegalArgumentException;
 import org.testng.Assert;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -87,9 +82,8 @@
             "( 1.2.6 NAME ( 'testType' 'testnamealias' 'anothernamealias1' ) "
                 + " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SUP anothernamealias"
                 + " USAGE dSAOperation NO-USER-MODIFICATION )", false);
-    List<Message> warnings = new LinkedList<Message>();
-    schema = builder.toSchema(warnings);
-    if (!warnings.isEmpty())
+    schema = builder.toSchema();
+    if (!schema.getWarnings().isEmpty())
     {
       throw new Exception("Base schema not valid!");
     }
@@ -571,6 +565,7 @@
 
 
 
+  @Test
   public void testInheritFromNonCollective() throws Exception
   {
     // Collective can't inherit from non-collective
@@ -583,13 +578,12 @@
                 + " SUBSTR caseIgnoreSubstringsMatch"
                 + " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE"
                 + " COLLECTIVE USAGE userApplications )", false);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 
 
+  @Test
   public void testCollectiveOperational() throws Exception
   {
     // Collective can't be operational
@@ -601,13 +595,12 @@
                 + " SUBSTR caseIgnoreSubstringsMatch"
                 + " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE"
                 + " COLLECTIVE USAGE directoryOperation )", false);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 
 
+  @Test
   public void testInheritFromUserAppUsage() throws Exception
   {
     // directoryOperation can't inherit from userApplications
@@ -621,13 +614,12 @@
                 + " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE"
                 + " NO-USER-MODIFICATION USAGE directoryOperation )",
             false);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 
 
+  @Test
   public void testNoUserModNonOperational() throws Exception
   {
     // NO-USER-MODIFICATION can't have non-operational usage
@@ -640,13 +632,12 @@
                 + " SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE"
                 + " NO-USER-MODIFICATION USAGE userApplications )",
             false);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 
 
+  @Test
   public void testADSyntax() throws Exception
   {
     // AD uses single quotes around OIDs
@@ -658,9 +649,24 @@
                 + " EQUALITY 'caseIgnoreMatch' "
                 + " SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' USAGE dSAOperation )",
             false);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertTrue(builder.toSchema().getWarnings().isEmpty());
+  }
+
+
+
+  @Test(expectedExceptions = LocalizedIllegalArgumentException.class)
+  public void testADSyntaxQuoteMismatch() throws Exception
+  {
+    // AD uses single quotes around OIDs
+    SchemaBuilder builder = new SchemaBuilder(schema);
+    builder
+        .addAttributeType(
+            "(1.2.8.5 NAME 'testtype' DESC 'full type' "
+                + " SUP '1.2.5 "
+                + " EQUALITY 'caseIgnoreMatch' "
+                + " SYNTAX '1.3.6.1.4.1.1466.115.121.1.15' USAGE dSAOperation )",
+            false);
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 }
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringEqualityMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringEqualityMatchingRuleTest.java
index 5f81133..2afa9ec 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringEqualityMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringEqualityMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.EMR_BIT_STRING_OID;
+import static org.opends.sdk.schema.SchemaConstants.EMR_BIT_STRING_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringSyntaxTest.java
index 4ef06b3..1d02df6 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BitStringSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_BIT_STRING_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_BIT_STRING_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BooleanEqualityMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BooleanEqualityMatchingRuleTest.java
index e5d3306..202e3c0 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BooleanEqualityMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/BooleanEqualityMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.EMR_BOOLEAN_OID;
+import static org.opends.sdk.schema.SchemaConstants.EMR_BOOLEAN_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactEqualityMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactEqualityMatchingRuleTest.java
index b6bfa48..238b655 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactEqualityMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactEqualityMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.EMR_CASE_EXACT_OID;
+import static org.opends.sdk.schema.SchemaConstants.EMR_CASE_EXACT_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5EqualityMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5EqualityMatchingRuleTest.java
index 5d0b89d..e1115c5 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5EqualityMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5EqualityMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.EMR_CASE_EXACT_IA5_OID;
+import static org.opends.sdk.schema.SchemaConstants.EMR_CASE_EXACT_IA5_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5SubstringMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5SubstringMatchingRuleTest.java
index 8e0b902..d1deafc 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5SubstringMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactIA5SubstringMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SMR_CASE_EXACT_IA5_OID;
+import static org.opends.sdk.schema.SchemaConstants.SMR_CASE_EXACT_IA5_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactOrderingMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactOrderingMatchingRuleTest.java
index a133c75..3cf2507 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactOrderingMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactOrderingMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.OMR_CASE_EXACT_OID;
+import static org.opends.sdk.schema.SchemaConstants.OMR_CASE_EXACT_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactSubstringMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactSubstringMatchingRuleTest.java
index 7313ce7..decbbcc 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactSubstringMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseExactSubstringMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SMR_CASE_EXACT_OID;
+import static org.opends.sdk.schema.SchemaConstants.SMR_CASE_EXACT_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreEqualityMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreEqualityMatchingRuleTest.java
index 3985194..1fddb88 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreEqualityMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreEqualityMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.EMR_CASE_IGNORE_OID;
+import static org.opends.sdk.schema.SchemaConstants.EMR_CASE_IGNORE_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5EqualityMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5EqualityMatchingRuleTest.java
index 58c44ca..5d99968 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5EqualityMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5EqualityMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.EMR_CASE_IGNORE_IA5_OID;
+import static org.opends.sdk.schema.SchemaConstants.EMR_CASE_IGNORE_IA5_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5SubstringMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5SubstringMatchingRuleTest.java
index 751153b..33a8b6e 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5SubstringMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreIA5SubstringMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SMR_CASE_IGNORE_IA5_OID;
+import static org.opends.sdk.schema.SchemaConstants.SMR_CASE_IGNORE_IA5_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreOrderingMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreOrderingMatchingRuleTest.java
index e0f8291..3efdef70 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreOrderingMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreOrderingMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.OMR_CASE_IGNORE_OID;
+import static org.opends.sdk.schema.SchemaConstants.OMR_CASE_IGNORE_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreSubstringMatchingRuleTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreSubstringMatchingRuleTest.java
index 6a5165e..7826ece 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreSubstringMatchingRuleTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CaseIgnoreSubstringMatchingRuleTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SMR_CASE_IGNORE_OID;
+import static org.opends.sdk.schema.SchemaConstants.SMR_CASE_IGNORE_OID;
 
 import org.opends.sdk.ConditionResult;
 import org.testng.annotations.DataProvider;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CoreSchemaTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CoreSchemaTest.java
index e581616..12720b8 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CoreSchemaTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/CoreSchemaTest.java
@@ -42,6 +42,6 @@
   public final void testCoreSchemaWarnings()
   {
     // Make sure core schema doesn't have any warnings.
-    Assert.assertTrue(CoreSchemaImpl.CORE_SCHEMA_WARNINGS.isEmpty());
+    Assert.assertTrue(Schema.getCoreSchema().getWarnings().isEmpty());
   }
 }
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/DITContentRuleSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/DITContentRuleSyntaxTest.java
index b46fb19..12638a3 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/DITContentRuleSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/DITContentRuleSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_DIT_CONTENT_RULE_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_DIT_CONTENT_RULE_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/EnumSyntaxTestCase.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/EnumSyntaxTestCase.java
index de96a89..d20c402 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/EnumSyntaxTestCase.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/EnumSyntaxTestCase.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.OMR_OID_GENERIC_ENUM;
+import static org.opends.sdk.schema.SchemaConstants.OMR_OID_GENERIC_ENUM;
 
 import org.opends.sdk.ConditionResult;
 import org.opends.sdk.DecodeException;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GeneralizedTimeSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GeneralizedTimeSyntaxTest.java
index 7091724..db991df 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GeneralizedTimeSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GeneralizedTimeSyntaxTest.java
@@ -28,18 +28,9 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_GENERALIZED_TIME_OID;
-import static org.opends.server.util.ServerConstants.TIME_ZONE_UTC;
+import static org.opends.sdk.schema.SchemaConstants.*;
 
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.TimeZone;
-
-import org.opends.server.schema.GeneralizedTimeSyntax;
-import org.testng.Assert;
 import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
 
 
 
@@ -83,130 +74,4 @@
         { "2006", false }, };
   }
 
-
-
-  /**
-   * Create data for format(...) tests.
-   * 
-   * @return Returns test data.
-   */
-  @DataProvider(name = "createFormatData")
-  public Object[][] createFormatData()
-  {
-    return new Object[][] {
-        // Note that Calendar months run from 0-11,
-        // and that there was no such year as year 0 (1 BC -> 1 AD).
-        { 1, 0, 1, 0, 0, 0, 0, "00010101000000.000Z" },
-        { 9, 0, 1, 0, 0, 0, 0, "00090101000000.000Z" },
-        { 10, 0, 1, 0, 0, 0, 0, "00100101000000.000Z" },
-        { 99, 0, 1, 0, 0, 0, 0, "00990101000000.000Z" },
-        { 100, 0, 1, 0, 0, 0, 0, "01000101000000.000Z" },
-        { 999, 0, 1, 0, 0, 0, 0, "09990101000000.000Z" },
-        { 1000, 0, 1, 0, 0, 0, 0, "10000101000000.000Z" },
-        { 2000, 0, 1, 0, 0, 0, 0, "20000101000000.000Z" },
-        { 2099, 0, 1, 0, 0, 0, 0, "20990101000000.000Z" },
-        { 2000, 8, 1, 0, 0, 0, 0, "20000901000000.000Z" },
-        { 2000, 9, 1, 0, 0, 0, 0, "20001001000000.000Z" },
-        { 2000, 10, 1, 0, 0, 0, 0, "20001101000000.000Z" },
-        { 2000, 11, 1, 0, 0, 0, 0, "20001201000000.000Z" },
-        { 2000, 0, 9, 0, 0, 0, 0, "20000109000000.000Z" },
-        { 2000, 0, 10, 0, 0, 0, 0, "20000110000000.000Z" },
-        { 2000, 0, 19, 0, 0, 0, 0, "20000119000000.000Z" },
-        { 2000, 0, 20, 0, 0, 0, 0, "20000120000000.000Z" },
-        { 2000, 0, 29, 0, 0, 0, 0, "20000129000000.000Z" },
-        { 2000, 0, 30, 0, 0, 0, 0, "20000130000000.000Z" },
-        { 2000, 0, 31, 0, 0, 0, 0, "20000131000000.000Z" },
-        { 2000, 0, 1, 9, 0, 0, 0, "20000101090000.000Z" },
-        { 2000, 0, 1, 10, 0, 0, 0, "20000101100000.000Z" },
-        { 2000, 0, 1, 19, 0, 0, 0, "20000101190000.000Z" },
-        { 2000, 0, 1, 20, 0, 0, 0, "20000101200000.000Z" },
-        { 2000, 0, 1, 23, 0, 0, 0, "20000101230000.000Z" },
-        { 2000, 0, 1, 0, 9, 0, 0, "20000101000900.000Z" },
-        { 2000, 0, 1, 0, 10, 0, 0, "20000101001000.000Z" },
-        { 2000, 0, 1, 0, 59, 0, 0, "20000101005900.000Z" },
-        { 2000, 0, 1, 0, 0, 9, 0, "20000101000009.000Z" },
-        { 2000, 0, 1, 0, 0, 10, 0, "20000101000010.000Z" },
-        { 2000, 0, 1, 0, 0, 59, 0, "20000101000059.000Z" },
-        { 2000, 0, 1, 0, 0, 0, 9, "20000101000000.009Z" },
-        { 2000, 0, 1, 0, 0, 0, 10, "20000101000000.010Z" },
-        { 2000, 0, 1, 0, 0, 0, 99, "20000101000000.099Z" },
-        { 2000, 0, 1, 0, 0, 0, 100, "20000101000000.100Z" },
-        { 2000, 0, 1, 0, 0, 0, 999, "20000101000000.999Z" }, };
-  }
-
-
-
-  /**
-   * Tests
-   * {@link org.opends.server.schema.GeneralizedTimeSyntax#format(long)}
-   * .
-   * 
-   * @param yyyy
-   *          The year.
-   * @param MM
-   *          The month.
-   * @param dd
-   *          The day.
-   * @param HH
-   *          The hour.
-   * @param mm
-   *          The minute.
-   * @param ss
-   *          The second.
-   * @param SSS
-   *          The milli-seconds.
-   * @param expected
-   *          The expected generalized time formatted string.
-   * @throws Exception
-   *           If an unexpected error occurred.
-   */
-  @Test(dataProvider = "createFormatData")
-  public void testFormatLong(int yyyy, int MM, int dd, int HH, int mm,
-      int ss, int SSS, String expected) throws Exception
-  {
-    Calendar calendar =
-        new GregorianCalendar(TimeZone.getTimeZone(TIME_ZONE_UTC));
-    calendar.set(yyyy, MM, dd, HH, mm, ss);
-    calendar.set(Calendar.MILLISECOND, SSS);
-    long time = calendar.getTimeInMillis();
-    String actual = GeneralizedTimeSyntax.format(time);
-    Assert.assertEquals(actual, expected);
-  }
-
-
-
-  /**
-   * Tests {@link GeneralizedTimeSyntax#format(java.util.Date)}.
-   * 
-   * @param yyyy
-   *          The year.
-   * @param MM
-   *          The month.
-   * @param dd
-   *          The day.
-   * @param HH
-   *          The hour.
-   * @param mm
-   *          The minute.
-   * @param ss
-   *          The second.
-   * @param SSS
-   *          The milli-seconds.
-   * @param expected
-   *          The expected generalized time formatted string.
-   * @throws Exception
-   *           If an unexpected error occurred.
-   */
-  @Test(dataProvider = "createFormatData")
-  public void testFormatDate(int yyyy, int MM, int dd, int HH, int mm,
-      int ss, int SSS, String expected) throws Exception
-  {
-    Calendar calendar =
-        new GregorianCalendar(TimeZone.getTimeZone(TIME_ZONE_UTC));
-    calendar.set(yyyy, MM, dd, HH, mm, ss);
-    calendar.set(Calendar.MILLISECOND, SSS);
-    Date time = new Date(calendar.getTimeInMillis());
-    String actual = GeneralizedTimeSyntax.format(time);
-    Assert.assertEquals(actual, expected);
-  }
 }
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GuideSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GuideSyntaxTest.java
index 241c9a1..bb2f4ba 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GuideSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/GuideSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_GUIDE_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_GUIDE_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/IA5StringSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/IA5StringSyntaxTest.java
index b4c2656..d350d49 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/IA5StringSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/IA5StringSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_IA5_STRING_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_IA5_STRING_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/LDAPSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/LDAPSyntaxTest.java
index dd4c068..6a338e0 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/LDAPSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/LDAPSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_LDAP_SYNTAX_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_LDAP_SYNTAX_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleSyntaxTest.java
index 9e93b59..df96f25 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_MATCHING_RULE_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_MATCHING_RULE_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleUseSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleUseSyntaxTest.java
index 60a1568..54b51e1 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleUseSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/MatchingRuleUseSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_MATCHING_RULE_USE_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_MATCHING_RULE_USE_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/OtherMailboxSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/OtherMailboxSyntaxTest.java
index 70a0641..94f9cca 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/OtherMailboxSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/OtherMailboxSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_OTHER_MAILBOX_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_OTHER_MAILBOX_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/RegexSyntaxTestCase.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/RegexSyntaxTestCase.java
index d9b1330..3297e97 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/RegexSyntaxTestCase.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/RegexSyntaxTestCase.java
@@ -28,12 +28,8 @@
 
 
 
-import java.util.LinkedList;
-import java.util.List;
 import java.util.regex.Pattern;
 
-import org.opends.messages.Message;
-import org.opends.sdk.DecodeException;
 import org.testng.Assert;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -49,7 +45,7 @@
    * {@inheritDoc}
    */
   @Override
-  protected Syntax getRule() throws SchemaException, DecodeException
+  protected Syntax getRule()
   {
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
     builder.addPatternSyntax("1.1.1",
@@ -73,23 +69,21 @@
 
 
 
-  public void testInvalidPattern() throws SchemaException,
-      DecodeException
+  @Test
+  public void testInvalidPattern()
   {
     // This should fail due to invalid pattern.
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
     builder.addSyntax(
         "( 1.1.1 DESC 'Host and Port in the format of HOST:PORT' "
             + " X-PATTERN '^[a-z-A-Z+:[0-@.]+\\d$' )", true);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 
 
   @Test
-  public void testDecode() throws SchemaException, DecodeException
+  public void testDecode()
   {
     // This should fail due to invalid pattern.
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SchemaUtilsTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SchemaUtilsTest.java
new file mode 100644
index 0000000..fe2c1e7
--- /dev/null
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SchemaUtilsTest.java
@@ -0,0 +1,116 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Copyright 2009 Sun Microsystems, Inc.
+ */
+package org.opends.sdk.schema;
+
+
+
+import org.opends.sdk.DecodeException;
+import org.testng.Assert;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import com.sun.opends.sdk.util.SubstringReader;
+
+
+
+/**
+ * Test schema utilities.
+ */
+public class SchemaUtilsTest extends SchemaTestCase
+{
+
+  @DataProvider(name = "validOIDs")
+  public Object[][] createValidOIDs()
+  {
+    return new Object[][] {
+        // Compliant NOIDs
+        { "0.0" }, { "1.0" }, { "2.0" }, { "3.0" }, { "4.0" },
+        { "5.0" }, { "6.0" }, { "7.0" }, { "8.0" }, { "9.0" },
+        { "0.1" }, { "0.2" }, { "0.3" }, { "0.4" }, { "0.5" },
+        { "0.6" }, { "0.7" }, { "0.8" }, { "0.9" }, { "10.0" },
+        { "100.0" },
+        { "999.0" },
+        { "0.100" },
+        { "0.999" },
+        { "100.100" },
+        { "999.999" },
+        { "111.22.333.44.55555.66.777.88.999" },
+        { "a" },
+        { "a2" },
+        { "a-" },
+        { "one" },
+        { "one1" },
+        { "one-two" },
+        { "one1-two2-three3" },
+        // AD puts quotes around OIDs - not compliant but we need to
+        // handle them.
+        { "'0.0'" }, { "'10.0'" }, { "'999.0'" },
+        { "'111.22.333.44.55555.66.777.88.999'" }, { "'a'" },
+        { "'a2'" }, { "'a-'" }, { "'one'" }, { "'one1'" },
+        { "'one-two'" },
+        { "'one1-two2-three3'" },
+        // Not strictly legal, but we'll be lenient with what we accept.
+        { "0" }, { "1" }, { "2" }, { "3" }, { "4" }, { "5" }, { "6" },
+        { "7" }, { "8" }, { "9" }, { "00" }, { "01" }, { "01.0" },
+        { "0.01" }, { "one.two.three" }, };
+  }
+
+
+
+  @DataProvider(name = "invalidOIDs")
+  public Object[][] createInvalidOIDs()
+  {
+    return new Object[][] { { "" }, { ".0" }, { "0." }, { "100." },
+        { ".999" }, { "1one" }, { "one+two+three" },
+        // AD puts quotes around OIDs - test mismatched quotes.
+        { "'0" }, { "'10" }, { "999'" }, { "0.0'" }, };
+  }
+
+
+
+  @Test(dataProvider = "validOIDs")
+  public void testReadOIDValid(String oid) throws DecodeException
+  {
+    String expected = oid;
+    if (oid.startsWith("'"))
+    {
+      expected = oid.substring(1, oid.length() - 1);
+    }
+
+    SubstringReader reader = new SubstringReader(oid);
+    Assert.assertEquals(SchemaUtils.readOID(reader), expected);
+  }
+
+
+
+  @Test(dataProvider = "invalidOIDs", expectedExceptions = DecodeException.class)
+  public void testReadOIDInvalid(String oid) throws DecodeException
+  {
+    SubstringReader reader = new SubstringReader(oid);
+    SchemaUtils.readOID(reader);
+  }
+}
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SubstitutionSyntaxTestCase.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SubstitutionSyntaxTestCase.java
index 2af3329..1af8608 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SubstitutionSyntaxTestCase.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SubstitutionSyntaxTestCase.java
@@ -28,13 +28,8 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_IA5_STRING_OID;
+import static org.opends.sdk.schema.SchemaConstants.*;
 
-import java.util.LinkedList;
-import java.util.List;
-
-import org.opends.messages.Message;
-import org.opends.sdk.DecodeException;
 import org.testng.Assert;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -50,7 +45,7 @@
    * {@inheritDoc}
    */
   @Override
-  protected Syntax getRule() throws SchemaException, DecodeException
+  protected Syntax getRule()
   {
     // Use IA5String syntax as our substitute.
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
@@ -74,62 +69,78 @@
 
 
 
-  public void testSelfSubstitute1() throws SchemaException,
-      DecodeException
+  @Test
+  public void testSelfSubstitute1()
   {
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
     builder.addSyntax("( 1.3.6.1.4.1.1466.115.121.1.15 "
         + " DESC 'Replacing DirectorySyntax'  "
         + " X-SUBST '1.3.6.1.4.1.1466.115.121.1.15' )", true);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 
 
-  public void testSelfSubstitute2() throws SchemaException
+  @Test
+  public void testSelfSubstitute2()
   {
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
     builder.addSubstitutionSyntax("1.3.6.1.4.1.1466.115.121.1.15",
         "Replacing DirectorySyntax", "1.3.6.1.4.1.1466.115.121.1.15",
         true);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 
 
-  public void testUndefinedSubstitute1() throws SchemaException,
-      DecodeException
+  @Test
+  public void testUndefinedSubstitute1()
   {
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
     builder.addSyntax("( 1.3.6.1.4.1.1466.115.121.1.15 "
         + " DESC 'Replacing DirectorySyntax'  " + " X-SUBST '1.1.1' )",
         true);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 
 
-  public void testUndefinedSubstitute2() throws SchemaException
+  @Test
+  public void testUndefinedSubstitute2()
   {
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
     builder.addSubstitutionSyntax("1.3.6.1.4.1.1466.115.121.1.15",
         "Replacing DirectorySyntax", "1.1.1", true);
-    List<Message> warnings = new LinkedList<Message>();
-    builder.toSchema(warnings);
-    Assert.assertFalse(warnings.isEmpty());
+    Assert.assertFalse(builder.toSchema().getWarnings().isEmpty());
   }
 
 
 
-  @Test(expectedExceptions = SchemaException.class)
-  public void testSubstituteCore1() throws SchemaException,
-      DecodeException
+  @Test(expectedExceptions = ConflictingSchemaElementException.class)
+  public void testSubstituteCore1()
+      throws ConflictingSchemaElementException
+  {
+    SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
+    builder.addSyntax("( 1.3.6.1.4.1.1466.115.121.1.26 "
+        + " DESC 'Replacing DirectorySyntax'  " + " X-SUBST '9.9.9' )",
+        false);
+  }
+
+
+
+  @Test(expectedExceptions = ConflictingSchemaElementException.class)
+  public void testSubstituteCore2()
+      throws ConflictingSchemaElementException
+  {
+    SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
+    builder.addSubstitutionSyntax("1.3.6.1.4.1.1466.115.121.1.26",
+        "Replacing DirectorySyntax", "9.9.9", false);
+  }
+
+
+
+  @Test
+  public void testSubstituteCore1Override()
   {
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
     builder.addSyntax("( 1.3.6.1.4.1.1466.115.121.1.26 "
@@ -139,8 +150,8 @@
 
 
 
-  @Test(expectedExceptions = SchemaException.class)
-  public void testSubstituteCore2() throws SchemaException
+  @Test
+  public void testSubstituteCore2Override()
   {
     SchemaBuilder builder = new SchemaBuilder(Schema.getCoreSchema());
     builder.addSubstitutionSyntax("1.3.6.1.4.1.1466.115.121.1.26",
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SyntaxTestCase.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SyntaxTestCase.java
index bc69054..78198f0 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SyntaxTestCase.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/SyntaxTestCase.java
@@ -30,7 +30,7 @@
 
 import static org.testng.Assert.fail;
 
-import org.opends.messages.MessageBuilder;
+import org.opends.sdk.LocalizableMessageBuilder;
 import org.opends.sdk.DecodeException;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -76,7 +76,7 @@
     // Make sure that the specified class can be instantiated as a task.
     Syntax syntax = getRule();
 
-    MessageBuilder reason = new MessageBuilder();
+    LocalizableMessageBuilder reason = new LocalizableMessageBuilder();
     // test the valueIsAcceptable method
     Boolean liveResult =
         syntax.valueIsAcceptable(ByteString.valueOf(value), reason);
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/TelexSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/TelexSyntaxTest.java
index f1122b1..7c26fec 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/TelexSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/TelexSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_TELEX_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_TELEX_OID;
 
 import org.testng.annotations.DataProvider;
 
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UTCTimeSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UTCTimeSyntaxTest.java
index 0357844..10dc155 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UTCTimeSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UTCTimeSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_UTC_TIME_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_UTC_TIME_OID;
 import static org.testng.Assert.assertTrue;
 
 import java.util.Date;
diff --git a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UUIDSyntaxTest.java b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UUIDSyntaxTest.java
index 5335a90..ee173f8 100644
--- a/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UUIDSyntaxTest.java
+++ b/sdk/tests/unit-tests-testng/src/org/opends/sdk/schema/UUIDSyntaxTest.java
@@ -28,7 +28,7 @@
 
 
 
-import static org.opends.server.schema.SchemaConstants.SYNTAX_UUID_OID;
+import static org.opends.sdk.schema.SchemaConstants.SYNTAX_UUID_OID;
 
 import org.testng.annotations.DataProvider;
 

--
Gitblit v1.10.0