001: /*
002: * JBoss, Home of Professional Open Source.
003: * Copyright 2006, Red Hat Middleware LLC, and individual contributors
004: * as indicated by the @author tags. See the copyright.txt file in the
005: * distribution for a full listing of individual contributors.
006: *
007: * This is free software; you can redistribute it and/or modify it
008: * under the terms of the GNU Lesser General Public License as
009: * published by the Free Software Foundation; either version 2.1 of
010: * the License, or (at your option) any later version.
011: *
012: * This software is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * You should have received a copy of the GNU Lesser General Public
018: * License along with this software; if not, write to the Free
019: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
021: */
022: package org.jboss.test.util.test;
023:
024: import java.net.URL;
025: import javax.management.ObjectName;
026:
027: import org.jboss.test.JBossTestCase;
028:
029: /**
030: * Test case for the Scheduler Utility. The test
031: * checks if multiple scheduler can be created,
032: * that the notifications goes to the right target
033: * and that the reuse of the Scheduler works.
034: *
035: * @see org.jboss.util.Scheduler
036: * @see org.jboss.util.SchedulerMBean
037: *
038: * @author Andreas Schaefer
039: * @author Scott.Stark@jboss.org
040: * @version $Revision: 57211 $
041: */
042: public class SchedulerUnitTestCase extends JBossTestCase {
043: /**
044: * Constructor for the SchedulerUnitTestCase object
045: *
046: * @param name Test case name
047: */
048: public SchedulerUnitTestCase(String name) {
049: super (name);
050: }
051:
052: // Public --------------------------------------------------------
053:
054: /**
055: * Checks if the Scheduler is deployed and if not then
056: * deployed the default one now.
057: */
058: public void testDefaultScheduler() throws Exception {
059: // The class loader used to locate the configuration file
060: ClassLoader lLoader = Thread.currentThread()
061: .getContextClassLoader();
062: assertTrue("ContextClassloader missing", lLoader != null);
063: //Get URL for deployable *service.xml file in resources
064: URL serviceURL = lLoader
065: .getResource("util/test-default-scheduler-service.xml");
066: if (serviceURL == null) {
067: //if we're running from the jmxtest.jar, it should be here instead
068: serviceURL = lLoader
069: .getResource("test-default-scheduler-service.xml");
070: }
071: assertTrue(
072: "resource test-default-scheduler-service.xml not found",
073: serviceURL != null);
074: try {
075: deploy(serviceURL.toString());
076: ObjectName scheduler = new ObjectName(
077: "test:service=Scheduler");
078: assertTrue("test:service=Scheduler isRegistered",
079: getServer().isRegistered(scheduler));
080: ObjectName ex1 = new ObjectName(
081: "test:name=SchedulableMBeanExample");
082: assertTrue(
083: "test:name=SchedulableMBeanExample isRegistered",
084: getServer().isRegistered(ex1));
085: ObjectName scheduler2 = new ObjectName(
086: "test:service=Scheduler,name=SchedulableMBeanExample");
087: assertTrue(
088: "test:service=Scheduler,name=SchedulableMBeanExample isRegistered",
089: getServer().isRegistered(scheduler2));
090: } finally {
091: undeploy(serviceURL.toString());
092: } // end of try-finally
093: }
094:
095: /** Test the deployment of a ear containing a sar which creates an
096: * instance of the org.jboss.varia.scheduler.Scheduler service with a
097: * Schedulable class that exists in an external jar referenced by the
098: * sar manifest.
099: *
100: * @throws Exception
101: */
102: public void testExternalServiceJar() throws Exception {
103: // Deploy the external jar containg the Schedulable
104: deploy("scheduler.jar");
105: // Deploy the ear/sar
106: deploy("scheduler.ear");
107:
108: try {
109: ObjectName scheduler = new ObjectName(
110: "test:service=TestScheduler");
111: assertTrue("test:service=TestScheduler isRegistered",
112: getServer().isRegistered(scheduler));
113: } finally {
114: undeploy("scheduler.ear");
115: undeploy("scheduler.jar");
116: }
117: }
118: }
|