From 8da3fe556ff4195baaf4dc81eb40b9c922272a65 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 21 Jul 2015 06:50:31 +0000
Subject: [PATCH] JmxPrivilegeTestCase.java: Fix NPE which makes PrivilegeTestCase setup fail later during the build. Extracted method getJmxConnectionHandler(). Used TestNG assert methods.

---
 opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxTestCase.java |   89 +++++++++++++++-----------------------------
 1 files changed, 30 insertions(+), 59 deletions(-)

diff --git a/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxTestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxTestCase.java
index 980072f..ad13d3f 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxTestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/protocols/jmx/JmxTestCase.java
@@ -26,9 +26,11 @@
  */
 package org.opends.server.protocols.jmx;
 
-import static org.testng.Assert.assertNotNull;
+import static org.forgerock.opendj.ldap.ModificationType.*;
+import static org.opends.server.protocols.internal.InternalClientConnection.*;
+import static org.opends.server.util.CollectionUtils.*;
+import static org.testng.Assert.*;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import org.opends.server.DirectoryServerTestCase;
@@ -36,18 +38,13 @@
 import org.opends.server.api.ConnectionHandler;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyOperationBasis;
-import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.types.Attributes;
-import org.opends.server.types.Control;
 import org.opends.server.types.DN;
 import org.opends.server.types.Modification;
-import org.forgerock.opendj.ldap.ModificationType;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-/**
- * An abstract class that all JMX unit test should extend.
- */
+/** An abstract class that all JMX unit test should extend. */
 @Test(groups = { "precommit", "jmx" }, sequential = true)
 public abstract class JmxTestCase extends DirectoryServerTestCase
 {
@@ -64,15 +61,8 @@
     TestCaseUtils.restartServer();
     TestCaseUtils.initializeTestBackend(true);
 
-    synchronized (this)
-    {
-      this.wait(500);
-    }
     JmxConnectionHandler jmxCtx = getJmxConnectionHandler();
-    if (jmxCtx == null)
-    {
-      throw new Exception("Unable to get a JMX connector");
-    }
+    assertNotNull(jmxCtx, "Unable to get a JMX connector");
   }
 
   /**
@@ -82,61 +72,42 @@
    */
   protected JmxConnectionHandler getJmxConnectionHandler() throws Exception
   {
-    List<ConnectionHandler> handlers = DirectoryServer
-        .getConnectionHandlers();
+    List<ConnectionHandler> handlers = DirectoryServer.getConnectionHandlers();
     assertNotNull(handlers);
-    JmxConnectionHandler jmxConnectionHandler = null;
-    for (ConnectionHandler handler : handlers)
-    {
-      if (handler instanceof JmxConnectionHandler)
-      {
-        jmxConnectionHandler = (JmxConnectionHandler) handler;
-        break;
-      }
-    }
+    JmxConnectionHandler jmxConnectionHandler = getJmxConnectionHandler(handlers);
     if (jmxConnectionHandler == null)
     {
       enableJmx();
-      synchronized (this)
-      {
-        this.wait(2000);
-      }
-      for (ConnectionHandler handler : handlers)
-      {
-        if (handler instanceof JmxConnectionHandler)
-        {
-          jmxConnectionHandler = (JmxConnectionHandler) handler;
-          break;
-        }
-      }
+      jmxConnectionHandler = getJmxConnectionHandler(handlers);
     }
     assertNotNull(jmxConnectionHandler);
+    int cnt = 0;
+    while (cnt <= 30 && jmxConnectionHandler.getRMIConnector().jmxRmiConnectorNoClientCertificate == null)
+    {
+      Thread.sleep(100);
+      cnt++;
+    }
     return jmxConnectionHandler;
   }
 
-  /**
-   * Enable JMX with the port chosen in TestCaseUtils.
-   *
-   * @throws Exception
-   *           if the handler cannot be enabled.
-   */
+  private JmxConnectionHandler getJmxConnectionHandler(List<ConnectionHandler> handlers)
+  {
+    for (ConnectionHandler<?> handler : handlers)
+    {
+      if (handler instanceof JmxConnectionHandler)
+      {
+        return (JmxConnectionHandler) handler;
+      }
+    }
+    return null;
+  }
+
   private void enableJmx() throws Exception
   {
-    ArrayList<Modification> mods = new ArrayList<>();
-
-    InternalClientConnection conn = InternalClientConnection
-        .getRootConnection();
-    mods.add(new Modification(ModificationType.REPLACE,
-        Attributes.create(
-            "ds-cfg-enabled", "true")));
     ModifyOperationBasis op = new ModifyOperationBasis(
-        conn,
-        InternalClientConnection.nextOperationID(),
-        InternalClientConnection.nextMessageID(),
-        new ArrayList<Control>(),
-        DN
-            .valueOf("cn=JMX Connection Handler,cn=Connection Handlers,cn=config"),
-        mods);
+        getRootConnection(), nextOperationID(), nextMessageID(), null,
+        DN.valueOf("cn=JMX Connection Handler,cn=Connection Handlers,cn=config"),
+        newArrayList(new Modification(REPLACE, Attributes.create("ds-cfg-enabled", "true"))));
     op.run();
   }
 }

--
Gitblit v1.10.0