1 22 package org.jboss.test.util.test; 23 24 import java.net.URL ; 25 import java.util.Date ; 26 import javax.management.ObjectName ; 27 import javax.management.MBeanServerInvocationHandler ; 28 29 import org.jboss.test.JBossTestCase; 30 import org.jboss.varia.scheduler.ScheduleManager; 31 import org.jboss.varia.scheduler.example.SchedulableMBeanExampleMBean; 32 33 46 public class SchedulerUnitTestCase 47 extends JBossTestCase 48 { 49 50 private String file = "../resources/util/test-default-scheduler-service.xml"; 51 52 57 public SchedulerUnitTestCase(String name) 58 { 59 super(name); 60 } 61 62 protected void setUp() throws Exception { 63 super.setUp(); 64 } 65 66 protected void tearDown() throws Exception { 67 super.tearDown(); 68 } 69 70 72 private void registered(ObjectName on) throws Exception 73 { 74 assertTrue(on + " isRegistered", getServer().isRegistered(on)); 75 } 76 77 private SchedulableMBeanExampleMBean get(ObjectName on) throws Exception 78 { 79 SchedulableMBeanExampleMBean ex = (SchedulableMBeanExampleMBean) 80 MBeanServerInvocationHandler.newProxyInstance(getServer(), on, 81 SchedulableMBeanExampleMBean.class, false); 82 return ex; 83 } 84 85 private void check(ObjectName on, int hits, long remaining) throws Exception 86 { 87 SchedulableMBeanExampleMBean ex = get(on); 88 assertNotNull("name " + on, ex); 89 90 assertEquals("hits", hits, ex.getHitCount()); 91 92 Date hd = ex.getHitDate(); 93 if (hits > 0) 94 { 95 Date now = new Date (); 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 108 public void testDefaultScheduler() 109 throws Exception 110 { 111 ObjectName ex1 = new ObjectName ("test:name=SchedulableMBeanExample,instance=1"); 112 ObjectName ex2 = new ObjectName ("test:name=SchedulableMBeanExample,instance=2"); 113 ObjectName ex3 = new ObjectName ("test:name=SchedulableMBeanExample,instance=3"); 114 ObjectName scheduler0 = new ObjectName ("test:service=Scheduler"); 115 ObjectName scheduler1 = new ObjectName ("test:service=Scheduler,name=SchedulableMBeanExample,instance=1"); 116 ObjectName scheduler2 = new ObjectName ("test:service=Scheduler,name=SchedulableMBeanExample,instance=2"); 117 ObjectName manager1 = new ObjectName ("test:service=Scheduler,name=ScheduleManager"); 118 119 deploy(file); 120 try 121 { 122 registered(new ObjectName (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); check(ex1, 1, 0); 136 check(ex2, 0, 0); check(ex3, 1, 2); 138 invoke(scheduler2, "startSchedule", null, null); 139 140 Thread.sleep(400); check(ex1, 1, 0); check(ex2, 0, 0); check(ex3, 2, 1); 145 Thread.sleep(500); check(ex1, 1, 0); check(ex2, 1, -1); check(ex3, 3, 0); 150 Thread.sleep(500); check(ex2, 2, -1); invoke(scheduler2, "stopSchedule", new Object [] { Boolean.TRUE }, new String [] { boolean.class.getName() }); 153 154 Thread.sleep(500); check(ex2, 2, -1); invoke(scheduler2, "startSchedule", null, null); 157 158 Thread.sleep(1001); check(ex2, 3, -1); } 161 finally 162 { 163 undeploy(file); 164 } 165 } 166 167 194 } 195 | Popular Tags |