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