Skip to content

Commit 030ed55

Browse files
server/test: ResourceCleanupService test fix for daylight saving time (#10749)
1 parent 0e0ae22 commit 030ed55

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

server/src/test/java/org/apache/cloudstack/resource/ResourceCleanupServiceImplTest.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
package org.apache.cloudstack.resource;
1818

1919
import java.lang.reflect.Field;
20+
import java.time.Duration;
21+
import java.time.Instant;
22+
import java.time.ZoneId;
23+
import java.time.ZonedDateTime;
24+
import java.time.zone.ZoneRules;
2025
import java.util.ArrayList;
2126
import java.util.Calendar;
2227
import java.util.Date;
@@ -629,9 +634,23 @@ public void testCalculatePastDateFromConfig() {
629634
Date result = resourceCleanupService.calculatePastDateFromConfig(
630635
ResourceCleanupService.ExpungedResourcesPurgeKeepPastDays.key(),
631636
days);
632-
Date today = new Date();
633-
long diff = today.getTime() - result.getTime();
634-
Assert.assertEquals(days, TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));
637+
Instant resultInstant = result.toInstant();
638+
ZoneId systemZone = ZoneId.systemDefault();
639+
ZoneRules rules = systemZone.getRules();
640+
ZonedDateTime resultDateTime = resultInstant.atZone(systemZone);
641+
boolean isDSTInResultDateTime = rules.isDaylightSavings(resultDateTime.toInstant());
642+
643+
ZonedDateTime todayDateTime = ZonedDateTime.now(systemZone);
644+
boolean isDSTInTodayDateTime = rules.isDaylightSavings(todayDateTime.toInstant());
645+
646+
Duration duration = Duration.between(resultDateTime, todayDateTime);
647+
long actualDays = TimeUnit.DAYS.convert(duration.toMillis(), TimeUnit.MILLISECONDS);
648+
649+
if (!isDSTInResultDateTime && isDSTInTodayDateTime) {
650+
Assert.assertEquals(days - 1, actualDays);
651+
} else {
652+
Assert.assertEquals(days, actualDays);
653+
}
635654
}
636655

637656
@Test

0 commit comments

Comments
 (0)