View Javadoc

1   /*
2    * $Id: TimerTestCase.java 22387 2011-07-12 03:53:36Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.util.timer;
12  
13  import org.mule.tck.junit4.AbstractMuleTestCase;
14  
15  import java.util.Timer;
16  
17  import org.junit.Test;
18  
19  import static org.junit.Assert.assertNotNull;
20  import static org.junit.Assert.assertTrue;
21  
22  public class TimerTestCase extends AbstractMuleTestCase implements TimeEventListener
23  {
24      private volatile boolean fired;
25  
26      @Test
27      public void testTimer() throws Exception
28      {
29          Timer timer = new Timer();
30  
31          EventTimerTask task = new EventTimerTask(this);
32  
33          timer.schedule(task, 0, 1000);
34          task.start();
35          Thread.sleep(1500);
36          assertTrue(fired);
37      }
38  
39      @Test
40      public void testStopTimer() throws Exception
41      {
42          fired = false;
43          Timer timer = new Timer();
44  
45          EventTimerTask task = new EventTimerTask(this);
46  
47          timer.schedule(task, 0, 1000);
48          task.start();
49          Thread.sleep(1500);
50          assertTrue(fired);
51          fired = false;
52          task.stop();
53          Thread.sleep(1500);
54          assertTrue(!fired);
55      }
56  
57      @Test
58      public void testMultipleListeners() throws Exception
59      {
60          fired = false;
61          Timer timer = new Timer();
62          AnotherListener listener = new AnotherListener();
63  
64          EventTimerTask task = new EventTimerTask(this);
65          task.addListener(listener);
66  
67          timer.schedule(task, 0, 1000);
68  
69          task.start();
70          Thread.sleep(1500);
71          assertTrue(fired);
72          assertTrue(listener.wasFired());
73          listener.setWasFired(false);
74  
75          fired = false;
76          task.stop();
77          Thread.sleep(1500);
78          assertTrue(!fired);
79          assertTrue(!listener.wasFired());
80      }
81  
82      @Test
83      public void testRemoveListeners() throws Exception
84      {
85          fired = false;
86          Timer timer = new Timer();
87          AnotherListener listener = new AnotherListener();
88  
89          EventTimerTask task = new EventTimerTask(this);
90          task.addListener(listener);
91  
92          timer.schedule(task, 0, 1000);
93  
94          task.start();
95          Thread.sleep(1500);
96          assertTrue(fired);
97          assertTrue(listener.wasFired());
98          listener.setWasFired(false);
99  
100         fired = false;
101         task.stop();
102         task.removeListener(this);
103         task.start();
104         Thread.sleep(1500);
105         assertTrue(!fired);
106         assertTrue(listener.wasFired());
107         listener.setWasFired(false);
108         task.stop();
109         task.removeAllListeners();
110         task.start();
111         Thread.sleep(1500);
112         assertTrue(!fired);
113         assertTrue(!listener.wasFired());
114     }
115 
116     public void timeExpired(TimeEvent e)
117     {
118         assertTrue(e.getTimeExpired() > 0);
119         assertNotNull(e.getName());
120         fired = true;
121 
122     }
123 
124     private class AnotherListener implements TimeEventListener
125     {
126 
127         private boolean wasFired;
128 
129         public void timeExpired(TimeEvent e)
130         {
131             wasFired = true;
132         }
133 
134         /**
135          * @return Returns the wasFired.
136          */
137         public boolean wasFired()
138         {
139             return wasFired;
140         }
141 
142         /**
143          * @param wasFired The wasFired to set.
144          */
145         public void setWasFired(boolean wasFired)
146         {
147             this.wasFired = wasFired;
148         }
149 
150     }
151 
152 }