Moved tests from testsuite to context
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright 2002-2005 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.scheduling;
|
||||
|
||||
/**
|
||||
* @author Juergen Hoeller
|
||||
* @since 09.10.2004
|
||||
*/
|
||||
public class TestMethodInvokingTask {
|
||||
|
||||
public int counter = 0;
|
||||
|
||||
private Object lock = new Object();
|
||||
|
||||
public void doSomething() {
|
||||
this.counter++;
|
||||
}
|
||||
|
||||
public void doWait() {
|
||||
this.counter++;
|
||||
// wait until stop is called
|
||||
synchronized (this.lock) {
|
||||
try {
|
||||
this.lock.wait();
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
// fall through
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
synchronized(this.lock) {
|
||||
this.lock.notify();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright 2002-2006 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.scheduling.timer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.springframework.scheduling.TestMethodInvokingTask;
|
||||
|
||||
/**
|
||||
* @author Juergen Hoeller
|
||||
* @since 20.02.2004
|
||||
*/
|
||||
public class TimerSupportTests extends TestCase {
|
||||
|
||||
public void testTimerFactoryBean() throws Exception {
|
||||
final TestTimerTask timerTask0 = new TestTimerTask();
|
||||
|
||||
TestMethodInvokingTask task1 = new TestMethodInvokingTask();
|
||||
MethodInvokingTimerTaskFactoryBean mittfb = new MethodInvokingTimerTaskFactoryBean();
|
||||
mittfb.setTargetObject(task1);
|
||||
mittfb.setTargetMethod("doSomething");
|
||||
mittfb.afterPropertiesSet();
|
||||
final TimerTask timerTask1 = (TimerTask) mittfb.getObject();
|
||||
|
||||
final TestRunnable timerTask2 = new TestRunnable();
|
||||
|
||||
ScheduledTimerTask[] tasks = new ScheduledTimerTask[3];
|
||||
tasks[0] = new ScheduledTimerTask(timerTask0, 0, 10, false);
|
||||
tasks[1] = new ScheduledTimerTask(timerTask1, 10, 20, true);
|
||||
tasks[2] = new ScheduledTimerTask(timerTask2, 20);
|
||||
|
||||
final List success = new ArrayList(3);
|
||||
final Timer timer = new Timer(true) {
|
||||
public void schedule(TimerTask task, long delay, long period) {
|
||||
if (task == timerTask0 && delay == 0 && period == 10) {
|
||||
success.add(Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
public void scheduleAtFixedRate(TimerTask task, long delay, long period) {
|
||||
if (task == timerTask1 && delay == 10 && period == 20) {
|
||||
success.add(Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
public void schedule(TimerTask task, long delay) {
|
||||
if (task instanceof DelegatingTimerTask && delay == 20) {
|
||||
success.add(Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
public void cancel() {
|
||||
success.add(Boolean.TRUE);
|
||||
}
|
||||
};
|
||||
|
||||
TimerFactoryBean timerFactoryBean = new TimerFactoryBean() {
|
||||
protected Timer createTimer(String name, boolean daemon) {
|
||||
return timer;
|
||||
}
|
||||
};
|
||||
try {
|
||||
timerFactoryBean.setScheduledTimerTasks(tasks);
|
||||
timerFactoryBean.afterPropertiesSet();
|
||||
assertTrue(timerFactoryBean.getObject() instanceof Timer);
|
||||
timerTask0.run();
|
||||
timerTask1.run();
|
||||
timerTask2.run();
|
||||
}
|
||||
finally {
|
||||
timerFactoryBean.destroy();
|
||||
}
|
||||
|
||||
assertTrue("Correct Timer invocations", success.size() == 4);
|
||||
assertTrue("TimerTask0 works", timerTask0.counter == 1);
|
||||
assertTrue("TimerTask1 works", task1.counter == 1);
|
||||
assertTrue("TimerTask2 works", timerTask2.counter == 1);
|
||||
}
|
||||
|
||||
public void testPlainTimerFactoryBean() {
|
||||
TimerFactoryBean tfb = new TimerFactoryBean();
|
||||
tfb.afterPropertiesSet();
|
||||
tfb.destroy();
|
||||
}
|
||||
|
||||
|
||||
private static class TestTimerTask extends TimerTask {
|
||||
|
||||
private int counter = 0;
|
||||
|
||||
public void run() {
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static class TestRunnable implements Runnable {
|
||||
|
||||
private int counter = 0;
|
||||
|
||||
public void run() {
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user