From 43c930854ada707bbf213c46865bb7d0e4160348 Mon Sep 17 00:00:00 2001 From: NomanShoaib Date: Tue, 1 Aug 2023 17:35:53 +0500 Subject: [PATCH 1/4] Added warn log if the interval is set to less than 30 --- .../PollingProjectConfigManagerTest.cs | 20 +++++++++++++++++++ .../Config/PollingProjectConfigManager.cs | 4 ++++ 2 files changed, 24 insertions(+) diff --git a/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs b/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs index e9de6752..13753225 100644 --- a/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs +++ b/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs @@ -139,6 +139,26 @@ public void TestTimedoutOnlyIfSchedulerStarted() configManager.Dispose(); } + [Test] + public void TestWarnLogIfPollingTimeIsLessThanThirty() + { + // period to call is 29 milliseconds + var configManager = new TestPollingProjectConfigManager(TimeSpan.FromMilliseconds(29), + TimeSpan.FromMilliseconds(20), true, LoggerMock.Object, new int[] { }); + LoggerMock.Verify(l => l.Log(LogLevel.WARN, + "Polling intervals below 30 seconds are not recommended."), Times.Once); + } + + [Test] + public void TestWarnLogNotTriggeredIfPollingTimeIsGreaterThanThirty() + { + // period to call is 32 second + var configManager = new TestPollingProjectConfigManager(TimeSpan.FromSeconds(32), + TimeSpan.FromMilliseconds(31), true, LoggerMock.Object, new int[] { }); + LoggerMock.Verify(l => l.Log(LogLevel.WARN, + "Polling intervals below 30 seconds are not recommended."), Times.Once); + } + [Test] public void TestDontTimedoutIfSchedulerNotStarted() { diff --git a/OptimizelySDK/Config/PollingProjectConfigManager.cs b/OptimizelySDK/Config/PollingProjectConfigManager.cs index da07daef..a1b42ebf 100644 --- a/OptimizelySDK/Config/PollingProjectConfigManager.cs +++ b/OptimizelySDK/Config/PollingProjectConfigManager.cs @@ -65,6 +65,10 @@ public PollingProjectConfigManager(TimeSpan period, TimeSpan blockingTimeout, Logger = logger; ErrorHandler = errorHandler; BlockingTimeout = blockingTimeout; + if (period.TotalMilliseconds < 30) + { + Logger?.Log(LogLevel.WARN, "Polling intervals below 30 seconds are not recommended."); + } PollingInterval = period; AutoUpdate = autoUpdate; From 745e361660a2cb315ea235be4553b41a823d88e4 Mon Sep 17 00:00:00 2001 From: NomanShoaib Date: Wed, 2 Aug 2023 20:06:07 +0500 Subject: [PATCH 2/4] fixed comments --- .../ConfigTest/PollingProjectConfigManagerTest.cs | 15 +++++++-------- .../Config/PollingProjectConfigManager.cs | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs b/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs index 13753225..baa7636c 100644 --- a/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs +++ b/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs @@ -142,21 +142,20 @@ public void TestTimedoutOnlyIfSchedulerStarted() [Test] public void TestWarnLogIfPollingTimeIsLessThanThirty() { - // period to call is 29 milliseconds - var configManager = new TestPollingProjectConfigManager(TimeSpan.FromMilliseconds(29), - TimeSpan.FromMilliseconds(20), true, LoggerMock.Object, new int[] { }); + var below30Seconds = TimeSpan.FromSeconds(29); + _ = new TestPollingProjectConfigManager(below30Seconds, + TimeSpan.FromSeconds(10), true, LoggerMock.Object, new int[] { }); LoggerMock.Verify(l => l.Log(LogLevel.WARN, "Polling intervals below 30 seconds are not recommended."), Times.Once); } - [Test] public void TestWarnLogNotTriggeredIfPollingTimeIsGreaterThanThirty() { - // period to call is 32 second - var configManager = new TestPollingProjectConfigManager(TimeSpan.FromSeconds(32), - TimeSpan.FromMilliseconds(31), true, LoggerMock.Object, new int[] { }); + var above30Seconds = TimeSpan.FromMinutes(1); + _ = new TestPollingProjectConfigManager(above30Seconds, + TimeSpan.FromMilliseconds(10), true, LoggerMock.Object, new int[] { }); LoggerMock.Verify(l => l.Log(LogLevel.WARN, - "Polling intervals below 30 seconds are not recommended."), Times.Once); + "Polling intervals below 30 seconds are not recommended."), Times.Never); } [Test] diff --git a/OptimizelySDK/Config/PollingProjectConfigManager.cs b/OptimizelySDK/Config/PollingProjectConfigManager.cs index a1b42ebf..d7f2245b 100644 --- a/OptimizelySDK/Config/PollingProjectConfigManager.cs +++ b/OptimizelySDK/Config/PollingProjectConfigManager.cs @@ -65,7 +65,7 @@ public PollingProjectConfigManager(TimeSpan period, TimeSpan blockingTimeout, Logger = logger; ErrorHandler = errorHandler; BlockingTimeout = blockingTimeout; - if (period.TotalMilliseconds < 30) + if (period.Seconds < 30) { Logger?.Log(LogLevel.WARN, "Polling intervals below 30 seconds are not recommended."); } From 4e0e2a5091c40647513b072f64a1cf68254f8559 Mon Sep 17 00:00:00 2001 From: NomanShoaib Date: Wed, 2 Aug 2023 20:21:30 +0500 Subject: [PATCH 3/4] fixed lint issue --- OptimizelySDK/Config/PollingProjectConfigManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OptimizelySDK/Config/PollingProjectConfigManager.cs b/OptimizelySDK/Config/PollingProjectConfigManager.cs index d7f2245b..1b8ebcf2 100644 --- a/OptimizelySDK/Config/PollingProjectConfigManager.cs +++ b/OptimizelySDK/Config/PollingProjectConfigManager.cs @@ -65,7 +65,7 @@ public PollingProjectConfigManager(TimeSpan period, TimeSpan blockingTimeout, Logger = logger; ErrorHandler = errorHandler; BlockingTimeout = blockingTimeout; - if (period.Seconds < 30) + if (period.Seconds < 30) { Logger?.Log(LogLevel.WARN, "Polling intervals below 30 seconds are not recommended."); } From 7a8646b57ce367162d0b4c5553152ade2e0e8efe Mon Sep 17 00:00:00 2001 From: NomanShoaib Date: Wed, 2 Aug 2023 20:37:33 +0500 Subject: [PATCH 4/4] fix --- OptimizelySDK/Config/PollingProjectConfigManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OptimizelySDK/Config/PollingProjectConfigManager.cs b/OptimizelySDK/Config/PollingProjectConfigManager.cs index 1b8ebcf2..12dacff7 100644 --- a/OptimizelySDK/Config/PollingProjectConfigManager.cs +++ b/OptimizelySDK/Config/PollingProjectConfigManager.cs @@ -65,7 +65,7 @@ public PollingProjectConfigManager(TimeSpan period, TimeSpan blockingTimeout, Logger = logger; ErrorHandler = errorHandler; BlockingTimeout = blockingTimeout; - if (period.Seconds < 30) + if (period.TotalSeconds < 30) { Logger?.Log(LogLevel.WARN, "Polling intervals below 30 seconds are not recommended."); }