From 69361aeb13b19ca6c2e4f41c599f063ed620abdd Mon Sep 17 00:00:00 2001 From: Yulia Safarova Date: Fri, 14 Sep 2018 16:04:43 -0700 Subject: [PATCH 1/2] Response code shouldn't be oberwritten to 200 if not set --- .../Shared/DataContracts/RequestTelemetryTest.cs | 4 ++-- .../DataContracts/RequestTelemetry.cs | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Test/Microsoft.ApplicationInsights.Test/Shared/DataContracts/RequestTelemetryTest.cs b/Test/Microsoft.ApplicationInsights.Test/Shared/DataContracts/RequestTelemetryTest.cs index 40e74dd50b..74a94825ef 100644 --- a/Test/Microsoft.ApplicationInsights.Test/Shared/DataContracts/RequestTelemetryTest.cs +++ b/Test/Microsoft.ApplicationInsights.Test/Shared/DataContracts/RequestTelemetryTest.cs @@ -143,7 +143,7 @@ public void SerializePopulatesRequiredFieldsOfRequestTelemetry() Assert.AreEqual(2, item.data.baseData.ver); Assert.IsNotNull(item.data.baseData.id); Assert.IsNotNull(item.time); - Assert.AreEqual("200", item.data.baseData.responseCode); + Assert.AreEqual("", item.data.baseData.responseCode); Assert.AreEqual(new TimeSpan(), TimeSpan.Parse(item.data.baseData.duration)); Assert.IsTrue(item.data.baseData.success); } @@ -190,7 +190,7 @@ public void SanitizeWillInitializeStatusCode() ((ITelemetry)telemetry).Sanitize(); - Assert.AreEqual("200", telemetry.ResponseCode); + Assert.AreEqual("", telemetry.ResponseCode); } [TestMethod] diff --git a/src/Microsoft.ApplicationInsights/DataContracts/RequestTelemetry.cs b/src/Microsoft.ApplicationInsights/DataContracts/RequestTelemetry.cs index 76192ac44d..aeb62b24e5 100644 --- a/src/Microsoft.ApplicationInsights/DataContracts/RequestTelemetry.cs +++ b/src/Microsoft.ApplicationInsights/DataContracts/RequestTelemetry.cs @@ -255,10 +255,14 @@ void ITelemetry.Sanitize() this.Data.id = this.Data.id.SanitizeName(); this.Data.id = Utils.PopulateRequiredStringValue(this.Data.id, "id", typeof(RequestTelemetry).FullName); - // Required field + // Required fields if (string.IsNullOrEmpty(this.ResponseCode)) { - this.ResponseCode = "200"; + this.ResponseCode = string.Empty; + } + + if (!this.Success.HasValue) + { this.Success = true; } } From c948824b210b0111b23e9adeab178455ad3d2df9 Mon Sep 17 00:00:00 2001 From: Yulia Safarova Date: Fri, 14 Sep 2018 17:54:04 -0700 Subject: [PATCH 2/2] Set response to empty only if success was set explicitly to false --- .../Shared/DataContracts/RequestTelemetryTest.cs | 13 ++++++++++++- .../DataContracts/RequestTelemetry.cs | 10 +++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Test/Microsoft.ApplicationInsights.Test/Shared/DataContracts/RequestTelemetryTest.cs b/Test/Microsoft.ApplicationInsights.Test/Shared/DataContracts/RequestTelemetryTest.cs index 74a94825ef..dc0eefed2e 100644 --- a/Test/Microsoft.ApplicationInsights.Test/Shared/DataContracts/RequestTelemetryTest.cs +++ b/Test/Microsoft.ApplicationInsights.Test/Shared/DataContracts/RequestTelemetryTest.cs @@ -143,7 +143,7 @@ public void SerializePopulatesRequiredFieldsOfRequestTelemetry() Assert.AreEqual(2, item.data.baseData.ver); Assert.IsNotNull(item.data.baseData.id); Assert.IsNotNull(item.time); - Assert.AreEqual("", item.data.baseData.responseCode); + Assert.AreEqual("200", item.data.baseData.responseCode); Assert.AreEqual(new TimeSpan(), TimeSpan.Parse(item.data.baseData.duration)); Assert.IsTrue(item.data.baseData.success); } @@ -190,6 +190,17 @@ public void SanitizeWillInitializeStatusCode() ((ITelemetry)telemetry).Sanitize(); + Assert.AreEqual("200", telemetry.ResponseCode); + } + + [TestMethod] + public void SanitizeWillInitializeStatusCodeIfSuccessIsFalse() + { + RequestTelemetry telemetry = new RequestTelemetry(); + telemetry.Success = false; + + ((ITelemetry)telemetry).Sanitize(); + Assert.AreEqual("", telemetry.ResponseCode); } diff --git a/src/Microsoft.ApplicationInsights/DataContracts/RequestTelemetry.cs b/src/Microsoft.ApplicationInsights/DataContracts/RequestTelemetry.cs index aeb62b24e5..50115995c1 100644 --- a/src/Microsoft.ApplicationInsights/DataContracts/RequestTelemetry.cs +++ b/src/Microsoft.ApplicationInsights/DataContracts/RequestTelemetry.cs @@ -256,15 +256,15 @@ void ITelemetry.Sanitize() this.Data.id = Utils.PopulateRequiredStringValue(this.Data.id, "id", typeof(RequestTelemetry).FullName); // Required fields - if (string.IsNullOrEmpty(this.ResponseCode)) - { - this.ResponseCode = string.Empty; - } - if (!this.Success.HasValue) { this.Success = true; } + + if (string.IsNullOrEmpty(this.ResponseCode)) + { + this.ResponseCode = this.Success.Value ? "200" : string.Empty; + } } } } \ No newline at end of file