Merge pull request #4 from joerghoh/bugfix/fix-CleanUpTest
SLING-11346 : merge from upstream
diff --git a/src/test/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTest.java b/src/test/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTest.java
index 4be8487..c729b7a 100644
--- a/src/test/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTest.java
+++ b/src/test/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTest.java
@@ -56,6 +56,8 @@
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.MockitoRule;
import org.mockito.quality.Strictness;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
@RunWith(MockitoJUnitRunner.class)
public class CleanUpTest {
@@ -141,15 +143,11 @@
@Before
public void setUp() {
- // let's use a fixed calendar which we can fast-forward as needed
- Calendar realCalendar = Calendar.getInstance();
- clock = new DynamicClock(Clock.fixed(realCalendar.toInstant(), ZoneId.systemDefault()), null);
-
setupConfiguration();
setUpTask();
+ getCalendarInstance();
createResource(JobManagerConfiguration.DEFAULT_REPOSITORY_PATH);
- task.setClock(clock);
}
public static DefaultInstanceDescription createInstanceDescription(
String instanceId, boolean isLocal, ClusterView clusterView) {
@@ -231,10 +229,19 @@
return ctx.create().resource(rootPath);
}
- // new calendar based on the (test) clock
+ // new calendar based on current date
private Calendar getCalendarInstance() {
+ Calendar cal = Calendar.getInstance();
+ return getCalendarInstance(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH),
+ cal.get(Calendar.HOUR),cal.get(Calendar.MINUTE));
+ }
+
+ // new calendar based on provided data
+ private Calendar getCalendarInstance(int year, int month, int day, int hour, int minute) {
Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(clock.millis());
+ calendar.set(year,month,day,hour,minute);
+ this.clock = new DynamicClock(Clock.fixed(calendar.toInstant(), ZoneId.systemDefault()), null);
+ task.setClock(clock);
return calendar;
}
@@ -390,7 +397,7 @@
@Test
public void testUnassignedSimple() throws PersistenceException {
- Calendar calendar = getCalendarInstance();
+ Calendar calendar = getCalendarInstance(2022,4,17,17,30); // 2022 May 17, 17:30
Resource job = createJobResourceForDate(UNASSIGNED_JOBS_JCR_PATH, calendar);
calendar.add(Calendar.DAY_OF_YEAR,-1);
createEmptyJobResourceForDate(UNASSIGNED_JOBS_JCR_PATH, calendar);
@@ -400,20 +407,33 @@
// so let's simulate an hour
simulate(60, Duration.ofMinutes(1));
- // after the first run it will just have marked the folder for deletion, but not deleted, so counter is still the same
- assertEquals(8, countFolders(UNASSIGNED_JOBS_JCR_PATH));
-
- // simulate 72 hours
- for( int i = 0; i < 72; i++) {
- simulate(60, Duration.ofMinutes(1));
- }
+ // after the first run it will just have marked the folder for deletion, but not deleted,
+ // so counter is still the same
assertEquals(8, countFolders(UNASSIGNED_JOBS_JCR_PATH));
deleteResource(job);
+ // additional 72 hours
for( int i = 0; i < 72; i++) {
simulate(60, Duration.ofMinutes(1));
}
- assertEquals(4, countFolders(UNASSIGNED_JOBS_JCR_PATH));
+
+ assertEquals(4, countFolders(UNASSIGNED_JOBS_JCR_PATH)); // unassigned/test/2022/05
+ }
+
+ @Test
+ public void testUnassignedDec31() throws PersistenceException {
+ Calendar calendar = getCalendarInstance(2021,11,31,17,30); // 2021 Dec 31, 17:30
+ Resource job = createJobResourceForDate(UNASSIGNED_JOBS_JCR_PATH, calendar);
+ calendar.add(Calendar.DAY_OF_YEAR,-1);
+ createEmptyJobResourceForDate(UNASSIGNED_JOBS_JCR_PATH, calendar);
+ assertEquals(11, countFolders(UNASSIGNED_JOBS_JCR_PATH));
+ deleteResource(job);
+
+ // 72 hours later => now it's 2022
+ for( int i = 0; i < 72; i++) {
+ simulate(60, Duration.ofMinutes(1));
+ }
+ assertEquals(2, countFolders(UNASSIGNED_JOBS_JCR_PATH)); // unassigned/test
}
}