This is an automated email from the ASF dual-hosted git repository. weizhou pushed a commit to branch 4.20 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.20 by this push: new 030ed55f36c server/test: ResourceCleanupService test fix for daylight saving time (#10749) 030ed55f36c is described below commit 030ed55f36cfdefd81042290c4c9bf0fded44992 Author: Suresh Kumar Anaparti <sureshkumar.anapa...@gmail.com> AuthorDate: Wed Apr 30 14:53:12 2025 +0530 server/test: ResourceCleanupService test fix for daylight saving time (#10749) --- .../resource/ResourceCleanupServiceImplTest.java | 25 +++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/server/src/test/java/org/apache/cloudstack/resource/ResourceCleanupServiceImplTest.java b/server/src/test/java/org/apache/cloudstack/resource/ResourceCleanupServiceImplTest.java index 7446e290488..2ca9c0ef11b 100644 --- a/server/src/test/java/org/apache/cloudstack/resource/ResourceCleanupServiceImplTest.java +++ b/server/src/test/java/org/apache/cloudstack/resource/ResourceCleanupServiceImplTest.java @@ -17,6 +17,11 @@ package org.apache.cloudstack.resource; import java.lang.reflect.Field; +import java.time.Duration; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.zone.ZoneRules; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -629,9 +634,23 @@ public class ResourceCleanupServiceImplTest { Date result = resourceCleanupService.calculatePastDateFromConfig( ResourceCleanupService.ExpungedResourcesPurgeKeepPastDays.key(), days); - Date today = new Date(); - long diff = today.getTime() - result.getTime(); - Assert.assertEquals(days, TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS)); + Instant resultInstant = result.toInstant(); + ZoneId systemZone = ZoneId.systemDefault(); + ZoneRules rules = systemZone.getRules(); + ZonedDateTime resultDateTime = resultInstant.atZone(systemZone); + boolean isDSTInResultDateTime = rules.isDaylightSavings(resultDateTime.toInstant()); + + ZonedDateTime todayDateTime = ZonedDateTime.now(systemZone); + boolean isDSTInTodayDateTime = rules.isDaylightSavings(todayDateTime.toInstant()); + + Duration duration = Duration.between(resultDateTime, todayDateTime); + long actualDays = TimeUnit.DAYS.convert(duration.toMillis(), TimeUnit.MILLISECONDS); + + if (!isDSTInResultDateTime && isDSTInTodayDateTime) { + Assert.assertEquals(days - 1, actualDays); + } else { + Assert.assertEquals(days, actualDays); + } } @Test