git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1071411 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Timothy A. Bish 2011-02-16 21:38:41 +00:00
parent e8d9b709e0
commit e0c678e9a0
2 changed files with 86 additions and 2 deletions

View File

@ -43,7 +43,7 @@ public class CronParser {
CronEntry hours = entries.get(HOURS); CronEntry hours = entries.get(HOURS);
CronEntry dayOfMonth = entries.get(DAY_OF_MONTH); CronEntry dayOfMonth = entries.get(DAY_OF_MONTH);
CronEntry month = entries.get(MONTH); CronEntry month = entries.get(MONTH);
CronEntry dayOfWeek = entries.get(DAY_OF_MONTH); CronEntry dayOfWeek = entries.get(DAY_OF_WEEK);
int currentMinutes = working.get(Calendar.MINUTE); int currentMinutes = working.get(Calendar.MINUTE);
if (!isCurrent(minutes, currentMinutes)) { if (!isCurrent(minutes, currentMinutes)) {
@ -71,7 +71,7 @@ public class CronParser {
} }
int currentDayOfMonth = working.get(Calendar.DAY_OF_MONTH); int currentDayOfMonth = working.get(Calendar.DAY_OF_MONTH);
if (!isCurrent(dayOfMonth, currentDayOfMonth)) { if (!isCurrent(dayOfMonth, currentDayOfMonth)) {
int nextDay = getNext(dayOfMonth, currentMonth); int nextDay = getNext(dayOfMonth, currentDayOfMonth);
working.add(Calendar.DAY_OF_MONTH, nextDay); working.add(Calendar.DAY_OF_MONTH, nextDay);
result = working.getTimeInMillis(); result = working.getTimeInMillis();
} }

View File

@ -17,6 +17,7 @@
package org.apache.activemq.broker.scheduler; package org.apache.activemq.broker.scheduler;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import java.util.Calendar; import java.util.Calendar;
@ -26,6 +27,79 @@ import org.junit.Test;
public class CronParserTest { public class CronParserTest {
@Test
public void testgetNextTimeDayOfWeek() throws MessageFormatException {
// using an absolute date so that result will be absolute - Monday 15 Nov 2010
Calendar current = Calendar.getInstance();
current.set(2010, Calendar.NOVEMBER, 15, 9, 15, 30);
System.out.println("start:" + current.getTime());
String test = "* * * * 5";
long next = CronParser.getNextScheduledTime(test, current.getTimeInMillis());
Calendar result = Calendar.getInstance();
result.setTimeInMillis(next);
System.out.println("next:" + result.getTime());
assertEquals(30,result.get(Calendar.SECOND));
assertEquals(15,result.get(Calendar.MINUTE));
assertEquals(9,result.get(Calendar.HOUR));
// expecting Friday 19th
assertEquals(19,result.get(Calendar.DAY_OF_MONTH));
assertEquals(Calendar.NOVEMBER,result.get(Calendar.MONTH));
assertEquals(2010,result.get(Calendar.YEAR));
}
@Test
public void testgetNextTimeMonth() throws MessageFormatException {
// using an absolute date so that result will be absolute - Monday 15 Nov 2010
Calendar current = Calendar.getInstance();
current.set(2010, Calendar.NOVEMBER, 15, 9, 15, 30);
System.out.println("start:" + current.getTime());
String test = "* * * 12 *";
long next = CronParser.getNextScheduledTime(test, current.getTimeInMillis());
Calendar result = Calendar.getInstance();
result.setTimeInMillis(next);
System.out.println("next:" + result.getTime());
assertEquals(30,result.get(Calendar.SECOND));
assertEquals(15,result.get(Calendar.MINUTE));
assertEquals(9,result.get(Calendar.HOUR));
assertEquals(15,result.get(Calendar.DAY_OF_MONTH));
assertEquals(Calendar.DECEMBER,result.get(Calendar.MONTH));
assertEquals(2010,result.get(Calendar.YEAR));
}
@Test
public void testgetNextTimeDays() throws MessageFormatException {
// using an absolute date so that result will be absolute - Monday 15 Nov 2010
Calendar current = Calendar.getInstance();
current.set(2010, Calendar.NOVEMBER, 15, 9, 15, 30);
System.out.println("start:" + current.getTime());
String test = "* * 16 * *";
long next = CronParser.getNextScheduledTime(test, current.getTimeInMillis());
Calendar result = Calendar.getInstance();
result.setTimeInMillis(next);
System.out.println("next:" + result.getTime());
assertEquals(30,result.get(Calendar.SECOND));
assertEquals(15,result.get(Calendar.MINUTE));
assertEquals(9,result.get(Calendar.HOUR));
assertEquals(16,result.get(Calendar.DAY_OF_MONTH));
assertEquals(Calendar.NOVEMBER,result.get(Calendar.MONTH));
assertEquals(2010,result.get(Calendar.YEAR));
}
@Test @Test
public void testgetNextTimeMinutes() throws MessageFormatException { public void testgetNextTimeMinutes() throws MessageFormatException {
String test = "30 * * * *"; String test = "30 * * * *";
@ -153,6 +227,16 @@ public class CronParserTest {
} catch (Throwable e) { } catch (Throwable e) {
} }
test = "0 1 2 3 4";
list = CronParser.tokenize(test);
assertEquals(list.size(), 5);
assertEquals(list.get(0), "0");
assertEquals(list.get(1), "1");
assertEquals(list.get(2), "2");
assertEquals(list.get(3), "3");
assertEquals(list.get(4), "4");
} }
public void testGetNextScheduledTime() { public void testGetNextScheduledTime() {