Skip to content

Commit ba381e7

Browse files
msohailhussainMichael Ng
authored andcommitted
fix(blockingtimeout): Blocking timeout was not being assigned (#202)
1 parent f1fe877 commit ba381e7

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

OptimizelySDK.Tests/ConfigTest/HttpProjectConfigManagerTest.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,11 @@ public void TestDefaultBlockingTimeoutWhileProvidingZero()
205205
.WithBlockingTimeoutPeriod(TimeSpan.FromMilliseconds(0))
206206
.WithStartByDefault(true)
207207
.Build(true);
208-
208+
209+
var fieldInfo = httpManager.GetType().GetField("BlockingTimeout", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
210+
var expectedBlockingTimeout = (TimeSpan)fieldInfo.GetValue(httpManager);
211+
Assert.AreNotEqual(expectedBlockingTimeout.TotalSeconds, TimeSpan.Zero.TotalSeconds);
212+
209213
LoggerMock.Verify(l => l.Log(LogLevel.DEBUG, $"Blocking timeout is not valid, using default blocking timeout {TimeSpan.FromSeconds(15).TotalMilliseconds}ms"));
210214
}
211215

@@ -221,6 +225,10 @@ public void TestDefaultPeriodWhileProvidingZero()
221225
.WithStartByDefault(true)
222226
.Build(true);
223227

228+
var fieldInfo = typeof(PollingProjectConfigManager).GetField("PollingInterval", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
229+
var expectedPollingInterval = (TimeSpan)fieldInfo.GetValue(httpManager);
230+
Assert.AreNotEqual(expectedPollingInterval.TotalSeconds, TimeSpan.Zero.TotalSeconds);
231+
224232
LoggerMock.Verify(l => l.Log(LogLevel.DEBUG, $"Polling interval is not valid for periodic calls, using default period {TimeSpan.FromMinutes(5).TotalMilliseconds}ms"));
225233
}
226234

@@ -236,6 +244,10 @@ public void TestDefaultPeriodWhileProvidingNegative()
236244
.WithStartByDefault(true)
237245
.Build(true);
238246

247+
var fieldInfo = typeof(PollingProjectConfigManager).GetField("PollingInterval", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
248+
var expectedPollingInterval = (TimeSpan)fieldInfo.GetValue(httpManager);
249+
Assert.AreNotEqual(expectedPollingInterval.TotalSeconds, TimeSpan.Zero.TotalSeconds);
250+
239251
LoggerMock.Verify(l => l.Log(LogLevel.DEBUG, $"Polling interval is not valid for periodic calls, using default period {TimeSpan.FromMinutes(5).TotalMilliseconds}ms"));
240252
}
241253

@@ -247,6 +259,10 @@ public void TestDefaultPeriodWhileNotProvidingValue()
247259
.WithDatafile(TestData.Datafile)
248260
.WithLogger(LoggerMock.Object)
249261
.Build(true);
262+
263+
var fieldInfo = typeof(PollingProjectConfigManager).GetField("PollingInterval", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
264+
var expectedPollingInterval = (TimeSpan)fieldInfo.GetValue(httpManager);
265+
Assert.AreNotEqual(expectedPollingInterval.TotalSeconds, TimeSpan.Zero.TotalSeconds);
250266

251267
LoggerMock.Verify(l => l.Log(LogLevel.DEBUG, $"No polling interval provided, using default period {TimeSpan.FromMinutes(5).TotalMilliseconds}ms"));
252268
}
@@ -260,6 +276,10 @@ public void TestDefaultBlockingTimeoutWhileNotProvidingValue()
260276
.WithLogger(LoggerMock.Object)
261277
.Build(true);
262278

279+
var fieldInfo = httpManager.GetType().GetField("BlockingTimeout", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
280+
var expectedBlockingTimeout = (TimeSpan)fieldInfo.GetValue(httpManager);
281+
Assert.AreNotEqual(expectedBlockingTimeout.TotalSeconds, TimeSpan.Zero.TotalSeconds);
282+
263283
LoggerMock.Verify(l => l.Log(LogLevel.DEBUG, $"No Blocking timeout provided, using default blocking timeout {TimeSpan.FromSeconds(15).TotalMilliseconds}ms"));
264284
}
265285

OptimizelySDK/Config/HttpProjectConfigManager.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,20 +264,21 @@ public HttpProjectConfigManager Build(bool defer)
264264
if (IsPollingIntervalProvided && (Period.TotalMilliseconds <= 0 || Period.TotalMilliseconds > MAX_MILLISECONDS_LIMIT)) {
265265
Logger.Log(LogLevel.DEBUG, $"Polling interval is not valid for periodic calls, using default period {DEFAULT_PERIOD.TotalMilliseconds}ms");
266266
Period = DEFAULT_PERIOD;
267-
} else {
267+
} else if(!IsPollingIntervalProvided) {
268268
Logger.Log(LogLevel.DEBUG, $"No polling interval provided, using default period {DEFAULT_PERIOD.TotalMilliseconds}ms");
269+
Period = DEFAULT_PERIOD;
269270
}
270271

271272

272273
if (IsBlockingTimeoutProvided && (BlockingTimeoutSpan.TotalMilliseconds <= 0 || BlockingTimeoutSpan.TotalMilliseconds > MAX_MILLISECONDS_LIMIT)) {
273274
Logger.Log(LogLevel.DEBUG, $"Blocking timeout is not valid, using default blocking timeout {DEFAULT_BLOCKINGOUT_PERIOD.TotalMilliseconds}ms");
274275
BlockingTimeoutSpan = DEFAULT_BLOCKINGOUT_PERIOD;
275-
} else {
276+
} else if(!IsBlockingTimeoutProvided) {
276277
Logger.Log(LogLevel.DEBUG, $"No Blocking timeout provided, using default blocking timeout {DEFAULT_BLOCKINGOUT_PERIOD.TotalMilliseconds}ms");
278+
BlockingTimeoutSpan = DEFAULT_BLOCKINGOUT_PERIOD;
277279
}
278280

279281

280-
281282
configManager = new HttpProjectConfigManager(Period, Url, BlockingTimeoutSpan, AutoUpdate, Logger, ErrorHandler);
282283

283284
if (Datafile != null)

0 commit comments

Comments
 (0)