sch.hour("2");
sch.minute("*");
sch.second("0");
sch.year("*");
CalendarBasedTimeout calendarTimeout = new CalendarBasedTimeout(sch);
Calendar firstTimeout = calendarTimeout.getFirstTimeout();
Assert.assertNotNull("first timeout is null", firstTimeout);
logger.info("First timeout is " + firstTimeout.getTime());
// currentCal sets up a dummy time in the future, the timezone is America/Chicago in which this imaginary system is
// running
TimeZone currentTimezone = TimeZone.getTimeZone("America/Chicago");
Calendar currentCal = new GregorianCalendar(currentTimezone);
currentCal.set(Calendar.YEAR, 2014);
currentCal.set(Calendar.MONTH, 1);
currentCal.set(Calendar.DATE, 8);
currentCal.set(Calendar.HOUR_OF_DAY, 1);
currentCal.set(Calendar.MINUTE, 1);
currentCal.set(Calendar.SECOND, 1);
currentCal.set(Calendar.MILLISECOND, 0);
// https://issues.jboss.org/browse/WFLY-2840 - @Schedule EJB Timer not using timezone when calcualting next timeout
// Next test WFLY-2840, by calling getNextTimeout with the dummy time above, the expected result is for the timer to
// fire at 1:02:00
// If the bug is not fixed it will return 2:00:00
Calendar nextTimeout = calendarTimeout.getNextTimeout(currentCal);
logger.info("Next timeout is " + nextTimeout.getTime());
Calendar expectedCal = new GregorianCalendar(currentTimezone);
expectedCal.set(Calendar.YEAR, 2014);
expectedCal.set(Calendar.MONTH, 1);