diff --git a/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs b/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs index e9de6752..baa7636c 100644 --- a/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs +++ b/OptimizelySDK.Tests/ConfigTest/PollingProjectConfigManagerTest.cs @@ -139,6 +139,25 @@ public void TestTimedoutOnlyIfSchedulerStarted() configManager.Dispose(); } + [Test] + public void TestWarnLogIfPollingTimeIsLessThanThirty() + { + 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() + { + 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.Never); + } + [Test] public void TestDontTimedoutIfSchedulerNotStarted() { diff --git a/OptimizelySDK/Config/PollingProjectConfigManager.cs b/OptimizelySDK/Config/PollingProjectConfigManager.cs index da07daef..12dacff7 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.TotalSeconds < 30) + { + Logger?.Log(LogLevel.WARN, "Polling intervals below 30 seconds are not recommended."); + } PollingInterval = period; AutoUpdate = autoUpdate;