From f5772f028015d53ed9d5768bb869834f17c85074 Mon Sep 17 00:00:00 2001 From: stefanosiano Date: Thu, 23 Jan 2025 16:55:52 +0100 Subject: [PATCH 1/3] changed RateLimiterTest `close cancels the timer` to use reflection --- .../io/sentry/transport/RateLimiterTest.kt | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt b/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt index 5e038f7b5d..795664dfa2 100644 --- a/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt +++ b/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt @@ -28,6 +28,8 @@ import io.sentry.hints.DiskFlushNotification import io.sentry.protocol.SentryId import io.sentry.protocol.SentryTransaction import io.sentry.protocol.User +import io.sentry.test.getProperty +import io.sentry.test.injectForField import io.sentry.util.HintUtils import org.awaitility.kotlin.await import org.mockito.kotlin.eq @@ -38,6 +40,7 @@ import org.mockito.kotlin.verify import org.mockito.kotlin.verifyNoMoreInteractions import org.mockito.kotlin.whenever import java.io.File +import java.util.Timer import java.util.UUID import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit @@ -363,19 +366,10 @@ class RateLimiterTest { @Test fun `close cancels the timer`() { val rateLimiter = fixture.getSUT() - whenever(fixture.currentDateProvider.currentTimeMillis).thenReturn(0, 1, 2001) - - val applied = CountDownLatch(1) - var activeForReplay = false - rateLimiter.addRateLimitObserver { - applied.countDown() - activeForReplay = rateLimiter.isActiveForCategory(Replay) - } - - rateLimiter.updateRetryAfterLimits("1:replay:key", null, 1) + val timer = mock() + rateLimiter.injectForField("timer", timer) rateLimiter.close() - - applied.await(2, TimeUnit.SECONDS) - assertTrue(activeForReplay) + verify(timer).cancel() + assertNull(rateLimiter.getProperty("timer")) } } From 3cf6083788be8ffabd3453d1c592a84d7544ed99 Mon Sep 17 00:00:00 2001 From: Sentry Github Bot Date: Thu, 23 Jan 2025 16:00:34 +0000 Subject: [PATCH 2/3] Format code --- sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt b/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt index 795664dfa2..4570392ca8 100644 --- a/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt +++ b/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt @@ -42,8 +42,6 @@ import org.mockito.kotlin.whenever import java.io.File import java.util.Timer import java.util.UUID -import java.util.concurrent.CountDownLatch -import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicBoolean import kotlin.test.Test import kotlin.test.assertEquals From 07fced2d529ab056ce9620faba1e24d1e56db0dc Mon Sep 17 00:00:00 2001 From: stefanosiano Date: Thu, 23 Jan 2025 17:03:39 +0100 Subject: [PATCH 3/3] changed RateLimiterTest `close cancels the timer` to use reflection --- sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt b/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt index 4570392ca8..ade4ab88b9 100644 --- a/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt +++ b/sentry/src/test/java/io/sentry/transport/RateLimiterTest.kt @@ -366,8 +366,14 @@ class RateLimiterTest { val rateLimiter = fixture.getSUT() val timer = mock() rateLimiter.injectForField("timer", timer) + + // When the rate limiter is closed rateLimiter.close() + + // Then the timer is cancelled verify(timer).cancel() + + // And is removed by the rateLimiter assertNull(rateLimiter.getProperty("timer")) } }