Skip to content

Instantly share code, notes, and snippets.

@kostapc
Last active November 8, 2016 17:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kostapc/3917d8ec50af8bf665023145456db5d5 to your computer and use it in GitHub Desktop.
Save kostapc/3917d8ec50af8bf665023145456db5d5 to your computer and use it in GitHub Desktop.
testing CronUtils for periods
package ru.infon.azerfon.mas.module;
import com.cronutils.model.CronType;
import com.cronutils.model.definition.CronDefinition;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.model.time.ExecutionTime;
import com.cronutils.parser.CronParser;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.scheduling.support.CronSequenceGenerator;
import java.util.Date;
/**
* 18.05.2016
* KostaPC
*/
public class CronUtilsTest {
private static CronDefinition cronDefinition = CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ);
private static CronParser parser = new CronParser(cronDefinition);
private final static DateTimeFormatter formatter = DateTimeFormat.forPattern("YYYY-MM-DD HH:mm:ss");
@Test
public void testFixedTime() {
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("10 5 * * * ?"));
DateTime now = DateTime.parse("2005-08-09 18:32:42", formatter);
DateTime lastExecution = executionTime.lastExecution(now);
System.out.println("last execution: "+lastExecution);
DateTime assertDate = DateTime.parse("2005-01-09 18:05:10", formatter);
Assert.assertEquals(assertDate, lastExecution);
}
@Test //FAILED
public void testMinutes() {
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("0/2 * * * * ?"));
DateTime now = DateTime.parse("2005-08-09 18:32:42", formatter);
DateTime lastExecution = executionTime.lastExecution(now);
System.out.println("last execution: "+lastExecution);
DateTime assertDate = DateTime.parse("2005-01-09 18:28:00", formatter);
Assert.assertEquals(assertDate, lastExecution);
}
@Test // FAILED
public void testSeconds() {
ExecutionTime executionTime = ExecutionTime.forCron(parser.parse("0/20 * * * * ?"));
DateTime now = DateTime.parse("2005-08-09 18:32:42", formatter);
DateTime lastExecution = executionTime.lastExecution(now);
System.out.println("last execution: "+lastExecution);
DateTime assertDate = DateTime.parse("2005-01-09 18:32:41", formatter);
Assert.assertEquals(assertDate, lastExecution);
}
@Test
public void cronSequenceGenerator() {
final CronSequenceGenerator generator = new CronSequenceGenerator("0/2 * * * * ?");
DateTime now = DateTime.parse("2005-08-09 18:32:42", formatter);
DateTime expected = now.plusSeconds(2);
Date date = generator.next(now.toDate());
System.out.println("date: "+date);
Assert.assertEquals(expected, new DateTime(date));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment