From d0c00b676d4363fe01d69c250cad5171e177dc77 Mon Sep 17 00:00:00 2001 From: Derek Baum <1357242+db82407@users.noreply.github.com> Date: Wed, 14 Jul 2021 14:46:30 +0100 Subject: [PATCH] add recur perf test --- .../net/fortuna/ical4j/model/RecurTest.java | 97 +++++++++++++++---- 1 file changed, 77 insertions(+), 20 deletions(-) diff --git a/src/test/java/net/fortuna/ical4j/model/RecurTest.java b/src/test/java/net/fortuna/ical4j/model/RecurTest.java index 13f369deb..a19ee8a18 100644 --- a/src/test/java/net/fortuna/ical4j/model/RecurTest.java +++ b/src/test/java/net/fortuna/ical4j/model/RecurTest.java @@ -92,6 +92,8 @@ public class RecurTest extends TestCase { private WeekDayList expectedDayList; + private long maxTime; + /** * @param testMethod * @param recur @@ -132,6 +134,21 @@ public RecurTest(Recur recur, Date seed, Date periodStart, Date periodEnd, Value this.expectedCount = expectedCount; } + /** + * @param recur + * @param seed + * @param periodStart + * @param periodEnd + * @param value + * @param expectedCount + * @param maxTime + */ + public RecurTest(Recur recur, Date seed, Date periodStart, Date periodEnd, Value value, int expectedCount, long maxTime) { + this("testGetDatesMaxTime", recur, seed, periodStart, periodEnd, value); + this.expectedCount = expectedCount; + this.maxTime = maxTime; + } + /** * @param recur * @param seed @@ -225,6 +242,22 @@ public void testGetDatesCount() { // assertTrue("Date list exceeds expected count", dates.size() <= expectedCount); } + private static TimeZoneRegistry tzReg = TimeZoneRegistryFactory.getInstance().createRegistry(); + + public void testGetDatesMaxTime() { + DateTime start = new DateTime(seed); + start.setTimeZone(tzReg.getTimeZone("Europe/London")); + Period period = new Period(new DateTime(periodStart), new DateTime(periodEnd)); + + long t0 = System.currentTimeMillis(); + DateList dates = recur.getDates(start, period, value); + long dt = System.currentTimeMillis() - t0; + + String message = String.format("maxTime exceeded %dms", maxTime); + assertEquals(message, maxTime, Math.max(dt, maxTime)); + assertEquals(expectedCount, dates.size()); + } + /** * */ @@ -424,7 +457,7 @@ private DateList asDateList(Date[] dates) { * 366 or -366 to -1. It MUST only be used in conjunction with another * BYxxx rule part. For example "the last work day of the month" could * be represented as: - * + * * RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 * */ @@ -482,7 +515,7 @@ private void getDates(java.util.Date startRange, java.util.Date endRange, java.u net.fortuna.ical4j.model.Date start = new net.fortuna.ical4j.model.Date(startRange); net.fortuna.ical4j.model.Date end = new net.fortuna.ical4j.model.Date(endRange); net.fortuna.ical4j.model.Date seed = new net.fortuna.ical4j.model.Date(eventStart); - + DateList dates = recur.getDates(seed, start, end, Value.DATE); for (int i=0; i