KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > test > util > test > SchedulerUnitTestCase


1 /*
2   * JBoss, Home of Professional Open Source
3   * Copyright 2005, JBoss Inc., and individual contributors as indicated
4   * by the @authors tag. See the copyright.txt in the distribution for a
5   * full listing of individual contributors.
6   *
7   * This is free software; you can redistribute it and/or modify it
8   * under the terms of the GNU Lesser General Public License as
9   * published by the Free Software Foundation; either version 2.1 of
10   * the License, or (at your option) any later version.
11   *
12   * This software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this software; if not, write to the Free
19   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21   */

22 package org.jboss.test.util.test;
23
24 import java.net.URL JavaDoc;
25 import java.util.Date JavaDoc;
26 import javax.management.ObjectName JavaDoc;
27 import javax.management.MBeanServerInvocationHandler JavaDoc;
28
29 import org.jboss.test.JBossTestCase;
30 import org.jboss.varia.scheduler.ScheduleManager;
31 import org.jboss.varia.scheduler.example.SchedulableMBeanExampleMBean;
32
33 /**
34  * Test case for the Scheduler Utility. The test
35  * checks if multiple scheduler can be created,
36  * that the notifications goes to the right target
37  * and that the reuse of the Scheduler works.
38  *
39  * @see org.jboss.util.Scheduler
40  * @see org.jboss.util.SchedulerMBean
41  *
42  * @author Andreas Schaefer
43  * @author Scott.Stark@jboss.org
44  * @version $Revision: 58158 $
45  */

46 public class SchedulerUnitTestCase
47    extends JBossTestCase
48 {
49
50    private String JavaDoc file = "../resources/util/test-default-scheduler-service.xml";
51
52    /**
53     * Constructor for the SchedulerUnitTestCase object
54     *
55     * @param name Test case name
56     */

57    public SchedulerUnitTestCase(String JavaDoc name)
58    {
59       super(name);
60    }
61
62    protected void setUp() throws Exception JavaDoc {
63       super.setUp();
64    }
65
66    protected void tearDown() throws Exception JavaDoc {
67       super.tearDown();
68    }
69
70    // Public --------------------------------------------------------
71

72    private void registered(ObjectName JavaDoc on) throws Exception JavaDoc
73    {
74       assertTrue(on + " isRegistered", getServer().isRegistered(on));
75    }
76
77    private SchedulableMBeanExampleMBean get(ObjectName JavaDoc on) throws Exception JavaDoc
78    {
79       SchedulableMBeanExampleMBean ex = (SchedulableMBeanExampleMBean)
80          MBeanServerInvocationHandler.newProxyInstance(getServer(), on,
81                SchedulableMBeanExampleMBean.class, false);
82       return ex;
83    }
84
85    private void check(ObjectName JavaDoc on, int hits, long remaining) throws Exception JavaDoc
86    {
87       SchedulableMBeanExampleMBean ex = get(on);
88       assertNotNull("name " + on, ex);
89
90       assertEquals("hits", hits, ex.getHitCount());
91
92       Date JavaDoc hd = ex.getHitDate();
93       if (hits > 0)
94       {
95          Date JavaDoc now = new Date JavaDoc();
96          assertNotNull("hit date", hd);
97          assertTrue("date " + hd + " " + now, !hd.after(now));
98          assertTrue("note", ex.getHitNotification() != null);
99          assertTrue("sched", ex.getSchedulerName() != null);
100          assertEquals("remaining", remaining, ex.getRemainingRepetitions());
101       }
102       assertEquals(null, ex.getTestString());
103    }
104
105    /**
106     * Tests the default scheduler.
107     */

108    public void testDefaultScheduler()
109       throws Exception JavaDoc
110    {
111       ObjectName JavaDoc ex1 = new ObjectName JavaDoc("test:name=SchedulableMBeanExample,instance=1");
112       ObjectName JavaDoc ex2 = new ObjectName JavaDoc("test:name=SchedulableMBeanExample,instance=2");
113       ObjectName JavaDoc ex3 = new ObjectName JavaDoc("test:name=SchedulableMBeanExample,instance=3");
114       ObjectName JavaDoc scheduler0 = new ObjectName JavaDoc("test:service=Scheduler");
115       ObjectName JavaDoc scheduler1 = new ObjectName JavaDoc("test:service=Scheduler,name=SchedulableMBeanExample,instance=1");
116       ObjectName JavaDoc scheduler2 = new ObjectName JavaDoc("test:service=Scheduler,name=SchedulableMBeanExample,instance=2");
117       ObjectName JavaDoc manager1 = new ObjectName JavaDoc("test:service=Scheduler,name=ScheduleManager");
118
119       deploy(file);
120       try
121       {
122          registered(new ObjectName JavaDoc(ScheduleManager.DEFAULT_TIMER_NAME));
123          registered(ex1);
124          registered(ex2);
125          registered(ex3);
126          registered(scheduler0);
127          registered(scheduler1);
128          registered(scheduler2);
129          registered(manager1);
130          check(ex1, 0, 0);
131          check(ex2, 0, 0);
132          check(ex3, 0, 0);
133
134          Thread.sleep(1100); // NOW == one second
135
check(ex1, 1, 0);
136          check(ex2, 0, 0); // StartAtStartup is false
137
check(ex3, 1, 2);
138          invoke(scheduler2, "startSchedule", null, null);
139
140          Thread.sleep(400); // one period
141
check(ex1, 1, 0); // done
142
check(ex2, 0, 0); // wait 500 more
143
check(ex3, 2, 1); // last
144

145          Thread.sleep(500); // one period
146
check(ex1, 1, 0); // done
147
check(ex2, 1, -1); // first
148
check(ex3, 3, 0); // done
149

150          Thread.sleep(500); // one period
151
check(ex2, 2, -1); // first
152
invoke(scheduler2, "stopSchedule", new Object JavaDoc[] { Boolean.TRUE }, new String JavaDoc[] { boolean.class.getName() });
153
154          Thread.sleep(500); // one period
155
check(ex2, 2, -1); // no more
156
invoke(scheduler2, "startSchedule", null, null);
157
158          Thread.sleep(1001); // one period
159
check(ex2, 3, -1); // restated
160
}
161       finally
162       {
163          undeploy(file);
164       }
165    }
166
167    /**
168     * Test the deployment of a ear containing a sar which creates an
169     * instance of the org.jboss.varia.scheduler.Scheduler service with a
170     * Schedulable class that exists in an external jar referenced by the
171     * sar manifest.
172     *
173     * @throws Exception
174    public void testExternalServiceJar() throws Exception
175    {
176       // Deploy the external jar containg the Schedulable
177       deploy("scheduler.jar");
178       // Deploy the ear/sar
179       deploy("scheduler.ear");
180
181       try
182       {
183          ObjectName scheduler = new ObjectName("test:service=TestScheduler");
184          assertTrue("test:service=TestScheduler isRegistered",
185             getServer().isRegistered(scheduler));
186       }
187       finally
188       {
189          undeploy("scheduler.ear");
190          undeploy("scheduler.jar");
191       }
192    }
193     */

194 }
195
Popular Tags