Skip to content

Commit f180b62

Browse files
improved logging (#227)
1 parent d9050b9 commit f180b62

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

OptimizelySDK.Tests/ConfigTest/HttpProjectConfigManagerTest.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
using OptimizelySDK.Tests.Utils;
2323
using System;
2424
using System.Diagnostics;
25+
using System.Net;
2526
using System.Net.Http;
2627
using System.Threading;
2728
using System.Threading.Tasks;
@@ -70,6 +71,24 @@ public void TestHttpConfigManagerRetreiveProjectConfigByURL()
7071
httpManager.Dispose();
7172
}
7273

74+
[Test]
75+
public void TestHttpConfigManagerWithInvalidStatus()
76+
{
77+
var t = MockSendAsync(statusCode: HttpStatusCode.Forbidden);
78+
79+
HttpProjectConfigManager httpManager = new HttpProjectConfigManager.Builder()
80+
.WithUrl("https://cdn.optimizely.com/datafiles/QBw9gFM8oTn7ogY9ANCC1z.json")
81+
.WithLogger(LoggerMock.Object)
82+
.WithPollingInterval(TimeSpan.FromMilliseconds(1000))
83+
.WithBlockingTimeoutPeriod(TimeSpan.FromMilliseconds(500))
84+
.WithStartByDefault()
85+
.Build();
86+
87+
LoggerMock.Verify(_ => _.Log(LogLevel.ERROR, $"Error fetching datafile \"{HttpStatusCode.Forbidden}\""), Times.AtLeastOnce);
88+
89+
httpManager.Dispose();
90+
}
91+
7392
[Test]
7493
public void TestHttpClientHandler()
7594
{
@@ -143,6 +162,7 @@ public void TestHttpConfigManagerRetreiveProjectConfigByFormat()
143162
requestMessage.RequestUri.ToString() == "https://cdn.optimizely.com/json/10192104166.json"
144163
)));
145164
Assert.IsNotNull(httpManager.GetConfig());
165+
LoggerMock.Verify(_ => _.Log(LogLevel.DEBUG, "Making datafile request to url \"https://cdn.optimizely.com/json/10192104166.json\""));
146166
httpManager.Dispose();
147167
}
148168

@@ -459,9 +479,9 @@ public void TestFormatUrlHigherPriorityThanDefaultUrl()
459479

460480
}
461481

462-
public Task MockSendAsync(string datafile = null, TimeSpan? delay = null)
482+
public Task MockSendAsync(string datafile = null, TimeSpan? delay = null, HttpStatusCode statusCode = HttpStatusCode.OK)
463483
{
464-
return TestHttpProjectConfigManagerUtil.MockSendAsync(HttpClientMock, datafile, delay);
484+
return TestHttpProjectConfigManagerUtil.MockSendAsync(HttpClientMock, datafile, delay, statusCode);
465485
}
466486

467487
#endregion

OptimizelySDK.Tests/Utils/TestHttpProjectConfigManagerUtil.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717

1818
using System;
19+
using System.Net;
1920
using System.Net.Http;
2021
using System.Threading.Tasks;
2122
using Moq;
@@ -28,7 +29,7 @@ namespace OptimizelySDK.Tests.Utils
2829
/// </summary>
2930
public static class TestHttpProjectConfigManagerUtil
3031
{
31-
public static Task MockSendAsync(Mock<HttpProjectConfigManager.HttpClient> HttpClientMock, string datafile = null, TimeSpan? delay=null)
32+
public static Task MockSendAsync(Mock<HttpProjectConfigManager.HttpClient> HttpClientMock, string datafile = null, TimeSpan? delay=null, HttpStatusCode statusCode = HttpStatusCode.OK)
3233
{
3334
var t = new System.Threading.Tasks.TaskCompletionSource<bool>();
3435

@@ -39,7 +40,7 @@ public static Task MockSendAsync(Mock<HttpProjectConfigManager.HttpClient> HttpC
3940
Task.Delay(delay.Value).Wait();
4041
}
4142

42-
return System.Threading.Tasks.Task.FromResult<HttpResponseMessage>(new HttpResponseMessage { StatusCode = System.Net.HttpStatusCode.OK, Content = new StringContent(datafile ?? string.Empty) });
43+
return System.Threading.Tasks.Task.FromResult<HttpResponseMessage>(new HttpResponseMessage { StatusCode = statusCode, Content = new StringContent(datafile ?? string.Empty) });
4344
})
4445
.Callback(()
4546
=> {

OptimizelySDK/Config/HttpProjectConfigManager.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ static HttpProjectConfigManager()
8888

8989
private string GetRemoteDatafileResponse()
9090
{
91+
Logger.Log(LogLevel.DEBUG, $"Making datafile request to url \"{Url}\"");
9192
var request = new System.Net.Http.HttpRequestMessage {
9293
RequestUri = new Uri(Url),
9394
Method = System.Net.Http.HttpMethod.Get,
@@ -107,7 +108,7 @@ private string GetRemoteDatafileResponse()
107108
// Return from here if datafile is not modified.
108109
var result = httpResponse.Result;
109110
if (!result.IsSuccessStatusCode) {
110-
Logger.Log(LogLevel.ERROR, "Unexpected response from event endpoint, status: " + result.StatusCode);
111+
Logger.Log(LogLevel.ERROR, $"Error fetching datafile \"{result.StatusCode}\"");
111112
return null;
112113
}
113114

@@ -134,7 +135,7 @@ private string GetRemoteDatafileResponse()
134135
var result = (System.Net.HttpWebResponse)request.GetResponse();
135136

136137
if (result.StatusCode != System.Net.HttpStatusCode.OK) {
137-
Logger.Log(LogLevel.ERROR, "Unexpected response from event endpoint, status: " + result.StatusCode);
138+
Logger.Log(LogLevel.ERROR, $"Error fetching datafile \"{result.StatusCode}\"");
138139
}
139140
var lastModified = result.Headers.GetValues("Last-Modified");
140141
if(!string.IsNullOrEmpty(lastModified.First()))

0 commit comments

Comments
 (0)