From 89d2b350910b36c61121ad70fcf3ce06d628f708 Mon Sep 17 00:00:00 2001
From: lutoff <lutoff@localhost>
Date: Thu, 14 Jun 2007 09:05:00 +0000
Subject: [PATCH] Update JMX unit-tests Re-enable JMX unit-tests (disabled in rev 2071 due to unit-test failure)

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/jmx/JmxTestCase.java |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 104 insertions(+), 1 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/jmx/JmxTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/jmx/JmxTestCase.java
index 64fb61f..7f9dcd8 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/jmx/JmxTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/jmx/JmxTestCase.java
@@ -26,7 +26,22 @@
  */
 package org.opends.server.protocols.jmx;
 
+import static org.testng.Assert.assertNotNull;
+
+import java.util.ArrayList;
+import java.util.List;
+
 import org.opends.server.DirectoryServerTestCase;
+import org.opends.server.TestCaseUtils;
+import org.opends.server.api.ConnectionHandler;
+import org.opends.server.core.DirectoryServer;
+import org.opends.server.core.ModifyOperation;
+import org.opends.server.protocols.internal.InternalClientConnection;
+import org.opends.server.types.Control;
+import org.opends.server.types.DN;
+import org.opends.server.types.Modification;
+import org.opends.server.types.ModificationType;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 /**
@@ -34,4 +49,92 @@
  */
 @Test(groups = { "precommit", "jmx" })
 public abstract class JmxTestCase extends DirectoryServerTestCase
-{}
+{
+  /**
+   * Set up the environment for performing the tests in this suite.
+   * 
+   * @throws Exception
+   *           If the environment could not be set up.
+   */
+  @BeforeClass
+  public void setUp() throws Exception
+  {
+    // Make sure that the server is up and running.
+    TestCaseUtils.startServer();
+    synchronized (this)
+    {
+      this.wait(500);
+    }
+    JmxConnectionHandler jmxCtx = getJmxConnectionHandler();
+    if (jmxCtx == null)
+    {
+      throw new Exception("Unable to get a JMX connector");
+    }
+  }
+
+  /**
+   * Get a reference to the JMX connection handler.
+   * 
+   * @throws an
+   *           Exception is something went wrong.
+   */
+  protected JmxConnectionHandler getJmxConnectionHandler() throws Exception
+  {
+    List<ConnectionHandler> handlers = DirectoryServer
+        .getConnectionHandlers();
+    assertNotNull(handlers);
+    JmxConnectionHandler jmxConnectionHandler = null;
+    for (ConnectionHandler handler : handlers)
+    {
+      if (handler instanceof JmxConnectionHandler)
+      {
+        jmxConnectionHandler = (JmxConnectionHandler) handler;
+        break;
+      }
+    }
+    if (jmxConnectionHandler == null)
+    {
+      enableJmx();
+      synchronized (this)
+      {
+        this.wait(500);
+      }
+      for (ConnectionHandler handler : handlers)
+      {
+        if (handler instanceof JmxConnectionHandler)
+        {
+          jmxConnectionHandler = (JmxConnectionHandler) handler;
+          break;
+        }
+      }
+    }
+
+    return jmxConnectionHandler;
+  }
+
+  /**
+   * Enable JMX with the port chosen in TestCaseUtils.
+   * 
+   * @throws Exception
+   *           if the handler cannot be enabled.
+   */
+  private void enableJmx() throws Exception
+  {
+    ArrayList<Modification> mods = new ArrayList<Modification>();
+
+    InternalClientConnection conn = InternalClientConnection
+        .getRootConnection();
+    mods.add(new Modification(ModificationType.REPLACE,
+        new org.opends.server.types.Attribute(
+            "ds-cfg-connection-handler-enabled", "true")));
+    ModifyOperation op = new ModifyOperation(
+        conn,
+        conn.nextOperationID(),
+        conn.nextMessageID(),
+        new ArrayList<Control>(),
+        DN
+            .decode("cn=JMX Connection Handler,cn=Connection Handlers,cn=config"),
+        mods);
+    op.run();
+  }
+}

--
Gitblit v1.10.0