From 702da59f26f15be29a449c98d5aa4105f032e9e7 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Wed, 20 Sep 2006 22:22:05 +0000
Subject: [PATCH] Add a set of test cases for the JMX alert handler.

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/TestAlertGenerator.java      |  123 +++++++++++++++++
 opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/JMXAlertHandlerTestCase.java |  244 ++++++++++++++++++++++++++++++++++
 2 files changed, 367 insertions(+), 0 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/JMXAlertHandlerTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/JMXAlertHandlerTestCase.java
new file mode 100644
index 0000000..5e7a20a
--- /dev/null
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/JMXAlertHandlerTestCase.java
@@ -0,0 +1,244 @@
+/*
+ * 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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.extensions;
+
+
+
+import java.util.ArrayList;
+import javax.management.Attribute;
+import javax.management.AttributeList;
+import javax.management.AttributeNotFoundException;
+import javax.management.InvalidAttributeValueException;
+import javax.management.MBeanException;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import org.opends.server.TestCaseUtils;
+import org.opends.server.api.AlertHandler;
+import org.opends.server.core.DirectoryServer;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the JMX Alert Handler.
+ */
+public class JMXAlertHandlerTestCase
+       extends ExtensionsTestCase
+{
+  /**
+   * Ensures that the Directory Server is running.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @BeforeClass()
+  public void startServer()
+         throws Exception
+  {
+    TestCaseUtils.startServer();
+  }
+
+
+
+  /**
+   * Retrieves the set of JMX alert handlers registered with the Directory
+   * Server.  There should just be one.
+   *
+   * @return  The set of JMX alert handlers registered with the Directory
+   *          Server.
+   */
+  @DataProvider(name = "jmxAlertHandlers")
+  public Object[][] getJMXAlertHandlers()
+  {
+    ArrayList<AlertHandler> handlers = new ArrayList<AlertHandler>();
+    for (AlertHandler handler : DirectoryServer.getAlertHandlers())
+    {
+      if (handler instanceof JMXAlertHandler)
+      {
+        handlers.add(handler);
+      }
+    }
+
+    Object[][] handlerArray = new Object[handlers.size()][1];
+    for (int i=0; i < handlerArray.length; i++)
+    {
+      handlerArray[i] = new Object[] { handlers.get(i) };
+    }
+
+    return handlerArray;
+  }
+
+
+
+  /**
+   * Tests the <CODE>getObjectName</CODE> method.
+   *
+   * @param  handler  The JMX alert handler to use for the test.
+   */
+  @Test(dataProvider = "jmxAlertHandlers")
+  public void testGetObjectName(JMXAlertHandler handler)
+  {
+    assertNotNull(handler.getObjectName());
+  }
+
+
+
+  /**
+   * Tests the <CODE>sendAlertNotification</CODE> method.
+   *
+   * @param  handler  The JMX alert handler to use for the test.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test(dataProvider = "jmxAlertHandlers")
+  public void testSendAlertNotification(JMXAlertHandler handler)
+         throws Exception
+  {
+    TestAlertGenerator generator = new TestAlertGenerator();
+
+    handler.sendAlertNotification(generator, generator.getAlertType(), 1,
+                                  "This is a test alert message.");
+  }
+
+
+
+  /**
+   * Tests the <CODE>getNotificationInfo</CODE> method.
+   *
+   * @param  handler  The JMX alert handler to use for the test.
+   */
+  @Test(dataProvider = "jmxAlertHandlers")
+  public void testGetNotificationInfo(JMXAlertHandler handler)
+  {
+    assertNotNull(handler.getNotificationInfo());
+  }
+
+
+
+  /**
+   * Tests the <CODE>getAttribute</CODE> method.
+   *
+   * @param  handler  The JMX alert handler to use for the test.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test(dataProvider = "jmxAlertHandlers",
+        expectedExceptions = { AttributeNotFoundException.class })
+  public void testGetAttribute(JMXAlertHandler handler)
+         throws AttributeNotFoundException
+  {
+    assertNull(handler.getAttribute("foo"));
+  }
+
+
+
+  /**
+   * Tests the <CODE>getAttributes</CODE> method.
+   *
+   * @param  handler  The JMX alert handler to use for the test.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test(dataProvider = "jmxAlertHandlers")
+  public void testGetAttributes(JMXAlertHandler handler)
+  {
+    assertEquals(handler.getAttributes(new String[] { "foo" }),
+                 new AttributeList());
+  }
+
+
+
+  /**
+   * Tests the <CODE>setAttribute</CODE> method.
+   *
+   * @param  handler  The JMX alert handler to use for the test.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test(dataProvider = "jmxAlertHandlers",
+        expectedExceptions = { AttributeNotFoundException.class,
+                               InvalidAttributeValueException.class })
+  public void testSetAttribute(JMXAlertHandler handler)
+         throws AttributeNotFoundException, InvalidAttributeValueException
+  {
+
+    handler.setAttribute(new Attribute("foo", "bar"));
+  }
+
+
+
+  /**
+   * Tests the <CODE>setAttributes</CODE> method.
+   *
+   * @param  handler  The JMX alert handler to use for the test.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test(dataProvider = "jmxAlertHandlers")
+  public void testSetAttributes(JMXAlertHandler handler)
+  {
+    assertEquals(handler.setAttributes(new AttributeList()),
+                 new AttributeList());
+  }
+
+
+
+  /**
+   * Tests the <CODE>invoke</CODE> method.
+   *
+   * @param  handler  The JMX alert handler to use for the test.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test(dataProvider = "jmxAlertHandlers",
+        expectedExceptions = { MBeanException.class })
+  public void testInvoke(JMXAlertHandler handler)
+         throws MBeanException
+  {
+    handler.invoke("foo", new Object[] { "bar", "baz" },
+                   new String[] { "java.lang.String", "java.lang.String" });
+  }
+
+
+
+  /**
+   * Tests the <CODE>getMBeanInfo</CODE> method.
+   *
+   * @param  handler  The JMX alert handler to use for the test.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test(dataProvider = "jmxAlertHandlers")
+  public void testGetMBeanInfo(JMXAlertHandler handler)
+  {
+    assertNotNull(handler.getMBeanInfo());
+  }
+}
+
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/TestAlertGenerator.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/TestAlertGenerator.java
new file mode 100644
index 0000000..2fb0f4c
--- /dev/null
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/TestAlertGenerator.java
@@ -0,0 +1,123 @@
+/*
+ * 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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.extensions;
+
+
+
+import java.util.LinkedHashMap;
+
+import org.opends.server.api.AlertGenerator;
+import org.opends.server.types.DN;
+
+
+
+/**
+ * This class defines a simple alert generator that may be used for testing
+ * purposes.
+ */
+public class TestAlertGenerator
+       implements AlertGenerator
+{
+  /**
+   * The fully-qualified name of this class for debugging purposes.
+   */
+  private static final String CLASS_NAME =
+       "org.opends.server.extensions.TestAlertGenerator";
+
+
+
+  // The DN of the "configuration entry" for this alert generator.
+  private DN configEntryDN;
+
+  // The alert description used for testing purposes.
+  private String alertDescription;
+
+  // The alert type used for testing purposes.
+  private String alertType;
+
+
+
+  /**
+   * Creates a new instance of this test alert generator.
+   *
+   * @throws  Exception  if an unexpected problem occurs.
+   */
+  public TestAlertGenerator()
+         throws Exception
+  {
+    configEntryDN    = DN.decode("cn=Test Alert Generator,cn=config");
+    alertType        = "org.opends.server.TestAlert";
+    alertDescription = "This is a test alert.";
+  }
+
+
+
+  /**
+   * Retrieves the alert type for this test alert generator.
+   *
+   * @return  The alert type for this test alert generator.
+   */
+  public String getAlertType()
+  {
+    return alertType;
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public DN getComponentEntryDN()
+  {
+    return configEntryDN;
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public String getClassName()
+  {
+    return CLASS_NAME;
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  public LinkedHashMap<String,String> getAlerts()
+  {
+    LinkedHashMap<String,String> alerts = new LinkedHashMap<String,String>();
+
+    alerts.put(alertType, alertDescription);
+
+    return alerts;
+  }
+}
+

--
Gitblit v1.10.0