Skip to content

Commit 6040b38

Browse files
authored
Merge pull request #1141 from microsoft/ref/heads/trask/change-default-to-w3c-with-back-compat
Enable W3C tracing with backcompat by default
2 parents 1386782 + 26deab0 commit 6040b38

File tree

8 files changed

+66
-44
lines changed

8 files changed

+66
-44
lines changed

agent/src/main/java/com/microsoft/applicationinsights/agent/internal/config/builder/BuiltInInstrumentationBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class BuiltInInstrumentationBuilder {
3232
private boolean enabled;
3333

3434
private boolean httpEnabled;
35-
private boolean w3cEnabled;
35+
private boolean w3cEnabled = true;
3636
private boolean w3cBackCompatEnabled = true;
3737

3838
private boolean jdbcEnabled;

agent/src/main/java/com/microsoft/applicationinsights/agent/internal/config/builder/XmlAgentConfigurationBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ private void setBuiltInInstrumentation(AgentConfiguration agentConfiguration,
166166

167167
nodes = builtInElement.getElementsByTagName(HTTP_TAG);
168168
Element httpElement = XmlParserUtils.getFirst(nodes);
169-
boolean w3cEnabled = XmlParserUtils.w3cEnabled(httpElement, W3C_ENABLED, false);
169+
boolean w3cEnabled = XmlParserUtils.w3cEnabled(httpElement, W3C_ENABLED, true);
170170
boolean w3cBackCompatEnabled = XmlParserUtils.w3cEnabled(httpElement, W3C_BACK_COMPAT_ENABLED, true);
171171
builtInConfigurationBuilder.setHttpEnabled(XmlParserUtils.getEnabled(httpElement, HTTP_TAG), w3cEnabled,
172172
w3cBackCompatEnabled);

azure-application-insights-spring-boot-starter/src/main/java/com/microsoft/applicationinsights/autoconfigure/ApplicationInsightsProperties.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,9 +416,9 @@ static class Web {
416416
private boolean enabled = true;
417417

418418
/**
419-
* Flag to enable/disable enableW3C headers. It is disabled by default.
419+
* Flag to enable/disable enableW3C headers. It is enabled by default.
420420
*/
421-
private boolean enableW3C = false;
421+
private boolean enableW3C = true;
422422

423423
/**
424424
* Flag to enable backward compatibility mode for W3C. By default this is
Lines changed: 48 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.microsoft.applicationinsights.smoketestapp;
22

3-
import java.util.List;
4-
53
import com.microsoft.applicationinsights.internal.schemav2.Data;
64
import com.microsoft.applicationinsights.internal.schemav2.Envelope;
75
import com.microsoft.applicationinsights.internal.schemav2.RemoteDependencyData;
@@ -11,8 +9,9 @@
119
import com.microsoft.applicationinsights.smoketest.UseAgent;
1210
import org.junit.Test;
1311

14-
import static org.junit.Assert.assertEquals;
15-
import static org.junit.Assert.assertTrue;
12+
import java.util.List;
13+
14+
import static org.junit.Assert.*;
1615

1716
@UseAgent
1817
public class HttpClientSmokeTest extends AiSmokeTest {
@@ -23,13 +22,16 @@ public void testAsyncDependencyCallWithApacheHttpClient4() throws Exception {
2322
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
2423
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
2524

26-
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
27-
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
25+
Envelope rdEnvelope = rdList.get(0);
26+
Envelope rddEnvelope = rddList.get(0);
27+
28+
RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData();
29+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData();
2830

2931
assertTrue(rd.getSuccess());
3032
assertEquals("GET /", rdd.getName());
3133
assertEquals("www.bing.com", rdd.getTarget());
32-
assertTrue(rdd.getId().contains(rd.getId()));
34+
assertParentChild(rd, rdEnvelope, rddEnvelope);
3335
}
3436

3537
@Test
@@ -38,13 +40,16 @@ public void testAsyncDependencyCallWithApacheHttpClient4WithResponseHandler() th
3840
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
3941
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
4042

41-
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
42-
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
43+
Envelope rdEnvelope = rdList.get(0);
44+
Envelope rddEnvelope = rddList.get(0);
45+
46+
RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData();
47+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData();
4348

4449
assertTrue(rd.getSuccess());
4550
assertEquals("GET /", rdd.getName());
4651
assertEquals("www.bing.com", rdd.getTarget());
47-
assertTrue(rdd.getId().contains(rd.getId()));
52+
assertParentChild(rd, rdEnvelope, rddEnvelope);
4853
}
4954

5055
@Test
@@ -53,13 +58,16 @@ public void testAsyncDependencyCallWithApacheHttpClient3() throws Exception {
5358
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
5459
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
5560

56-
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
57-
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
61+
Envelope rdEnvelope = rdList.get(0);
62+
Envelope rddEnvelope = rddList.get(0);
63+
64+
RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData();
65+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData();
5866

5967
assertTrue(rd.getSuccess());
6068
assertEquals("GET /", rdd.getName());
6169
assertEquals("www.bing.com", rdd.getTarget());
62-
assertTrue(rdd.getId().contains(rd.getId()));
70+
assertParentChild(rd, rdEnvelope, rddEnvelope);
6371
}
6472

6573
@Test
@@ -68,13 +76,16 @@ public void testAsyncDependencyCallWithOkHttp3() throws Exception {
6876
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
6977
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
7078

71-
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
72-
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
79+
Envelope rdEnvelope = rdList.get(0);
80+
Envelope rddEnvelope = rddList.get(0);
81+
82+
RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData();
83+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData();
7384

7485
assertTrue(rd.getSuccess());
7586
assertEquals("GET /", rdd.getName());
7687
assertEquals("www.bing.com", rdd.getTarget());
77-
assertTrue(rdd.getId().contains(rd.getId()));
88+
assertParentChild(rd, rdEnvelope, rddEnvelope);
7889
}
7990

8091
@Test
@@ -83,13 +94,16 @@ public void testAsyncDependencyCallWithOkHttp2() throws Exception {
8394
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
8495
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
8596

86-
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
87-
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
97+
Envelope rdEnvelope = rdList.get(0);
98+
Envelope rddEnvelope = rddList.get(0);
99+
100+
RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData();
101+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData();
88102

89103
assertTrue(rd.getSuccess());
90104
assertEquals("GET /", rdd.getName());
91105
assertEquals("www.bing.com", rdd.getTarget());
92-
assertTrue(rdd.getId().contains(rd.getId()));
106+
assertParentChild(rd, rdEnvelope, rddEnvelope);
93107
}
94108

95109
@Test
@@ -98,12 +112,24 @@ public void testAsyncDependencyCallWithHttpURLConnection() throws Exception {
98112
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
99113
List<Envelope> rddList = mockedIngestion.waitForItems("RemoteDependencyData", 1);
100114

101-
RequestData rd = (RequestData) ((Data) rdList.get(0).getData()).getBaseData();
102-
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddList.get(0).getData()).getBaseData();
115+
Envelope rdEnvelope = rdList.get(0);
116+
Envelope rddEnvelope = rddList.get(0);
117+
118+
RequestData rd = (RequestData) ((Data) rdEnvelope.getData()).getBaseData();
119+
RemoteDependencyData rdd = (RemoteDependencyData) ((Data) rddEnvelope.getData()).getBaseData();
103120

104121
assertTrue(rd.getSuccess());
105122
assertEquals("GET /", rdd.getName());
106123
assertEquals("www.bing.com", rdd.getTarget());
107-
assertTrue(rdd.getId().contains(rd.getId()));
124+
assertParentChild(rd, rdEnvelope, rddEnvelope);
125+
}
126+
127+
private static void assertParentChild(RequestData rd, Envelope rdEnvelope, Envelope rddEnvelope) {
128+
String operationId = rdEnvelope.getTags().get("ai.operation.id");
129+
130+
assertNotNull(operationId);
131+
132+
assertEquals(operationId, rddEnvelope.getTags().get("ai.operation.id"));
133+
assertEquals(rd.getId(), rddEnvelope.getTags().get("ai.operation.parentId"));
108134
}
109135
}

test/smoke/testApps/SpringBootTest/src/smokeTest/java/com/springbootstartertest/smoketest/SpringbootSmokeTest.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public void testResultCodeWhenRestControllerThrows() throws Exception {
9393
}
9494
assertThat(code, greaterThanOrEqualTo(500));
9595

96-
assertSameOperationId(rdEnvelope, edEnvelope);
96+
assertParentChild(rd, rdEnvelope, edEnvelope);
9797
}
9898

9999
@Test
@@ -115,18 +115,15 @@ private static void commonValidation() throws Exception {
115115
assertEquals("GET /", rdd.getName());
116116
assertEquals("www.bing.com", rdd.getTarget());
117117

118-
assertTrue(rdd.getId().contains(d.getId()));
119-
assertSameOperationId(rdEnvelope, rddEnvelope);
118+
assertParentChild(d, rdEnvelope, rddEnvelope);
120119
}
121120

122-
private static void assertSameOperationId(Envelope rdEnvelope, Envelope rddEnvelope) {
121+
private static void assertParentChild(RequestData rd, Envelope rdEnvelope, Envelope rddEnvelope) {
123122
String operationId = rdEnvelope.getTags().get("ai.operation.id");
124-
String operationParentId = rdEnvelope.getTags().get("ai.operation.parentId");
125123

126124
assertNotNull(operationId);
127-
assertNotNull(operationParentId);
128125

129126
assertEquals(operationId, rddEnvelope.getTags().get("ai.operation.id"));
130-
assertEquals(operationParentId, rddEnvelope.getTags().get("ai.operation.parentId"));
127+
assertEquals(rd.getId(), rddEnvelope.getTags().get("ai.operation.parentId"));
131128
}
132129
}

web/src/main/java/com/microsoft/applicationinsights/web/extensibility/modules/WebRequestTrackingTelemetryModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class WebRequestTrackingTelemetryModule implements WebTelemetryModule, Te
4646
private TelemetryClient telemetryClient;
4747
private boolean isInitialized = false;
4848

49-
public boolean isW3CEnabled = false;
49+
public boolean isW3CEnabled = true;
5050

5151
/**
5252
* Tag to indicate if W3C tracing protocol is enabled.

web/src/test/java/com/microsoft/applicationinsights/web/extensibility/initializers/WebOperationIdTelemetryInitializerTests.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,10 @@ public void testRequestTelemetryInitializedWithOperationId() throws Exception {
8181
RequestTelemetry requestTelemetry = items.get(0);
8282

8383
// the WebRequestTrackingModule automatically creates a hierarchical ID for request telemetry of the
84-
// following form: "|guid.", where guid is the OperationId
85-
Assert.assertEquals("Operation id not match", requestTelemetry.getId(), "|" + requestTelemetry.getContext().getOperation().getId() + ".");
84+
// following form: "|guid.spanid", where guid is the OperationId
85+
String requestTelemetryId = requestTelemetry.getId();
86+
requestTelemetryId = requestTelemetryId.substring(0, requestTelemetryId.indexOf('.') + 1);
87+
Assert.assertEquals("Operation id not match", requestTelemetryId, "|" + requestTelemetry.getContext().getOperation().getId() + ".");
8688
}
8789

8890
@Test

web/src/test/java/com/microsoft/applicationinsights/web/extensibility/modules/WebRequestTrackingTelemetryModuleTests.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@ public void testUserAgentIsBeingSet() throws Exception {
185185
@Test
186186
public void testCrossComponentCorrelationHeadersAreCaptured() throws Exception {
187187

188+
// Turn W3C off
189+
defaultModule.isW3CEnabled = false;
190+
188191
//setup: initialize a request telemetry context
189192
RequestTelemetryContext context = new RequestTelemetryContext(DateTimeUtils.getDateTimeNow().getTime());
190193
ThreadContext.setRequestTelemetryContext(context);
@@ -536,12 +539,9 @@ public void testTelemetryCreatedWithinRequestScopeIsRequestChild() throws Except
536539
//mock a servlet request with cross-component correlation headers
537540
Map<String, String> headers = new HashMap<String, String>();
538541

539-
String incomingId = "|guid.bcec871c_1.";
542+
String incomingId = "|01234567012345670123456701234567.bcec871c_1.";
540543
headers.put(TelemetryCorrelationUtils.CORRELATION_HEADER_NAME, incomingId);
541544

542-
String correlationContext = "key1=value1, key2=value2";
543-
headers.put(TelemetryCorrelationUtils.CORRELATION_CONTEXT_HEADER_NAME, correlationContext);
544-
545545
HttpServletRequest request = ServletUtils.createServletRequestWithHeaders(headers, 1);
546546
HttpServletResponse response = (HttpServletResponse)ServletUtils.generateDummyServletResponse();
547547

@@ -559,11 +559,8 @@ public void testTelemetryCreatedWithinRequestScopeIsRequestChild() throws Except
559559
RequestTelemetry requestTelemetry = ThreadContext.getRequestTelemetryContext().getHttpRequestTelemetry();
560560

561561
//validate manually tracked telemetry is a child of the request telemetry
562-
assertEquals("guid", exceptionTelemetry.getContext().getOperation().getId());
562+
assertEquals("01234567012345670123456701234567", exceptionTelemetry.getContext().getOperation().getId());
563563
assertEquals(requestTelemetry.getId(), exceptionTelemetry.getContext().getOperation().getParentId());
564-
assertEquals(2, exceptionTelemetry.getProperties().size());
565-
assertEquals("value1", exceptionTelemetry.getProperties().get("key1"));
566-
assertEquals("value2", exceptionTelemetry.getProperties().get("key2"));
567564
}
568565

569566
@Test

0 commit comments

Comments
 (0)