Skip to content

Commit 96e92d2

Browse files
authored
Merge pull request #1855 from microsoft/smoke-test-cleanup
Smoke test cleanup
2 parents fb7a662 + b9152d6 commit 96e92d2

File tree

46 files changed

+646
-1506
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+646
-1506
lines changed

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/AiOperationNameSpanProcessor.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.microsoft.applicationinsights.agent.internal.exporter.Exporter;
2626
import io.opentelemetry.api.trace.Span;
2727
import io.opentelemetry.context.Context;
28+
import io.opentelemetry.instrumentation.api.tracer.ConsumerSpan;
2829
import io.opentelemetry.instrumentation.api.tracer.ServerSpan;
2930
import io.opentelemetry.sdk.trace.ReadWriteSpan;
3031
import io.opentelemetry.sdk.trace.ReadableSpan;
@@ -35,10 +36,13 @@ public class AiOperationNameSpanProcessor implements SpanProcessor {
3536

3637
@Override
3738
public void onStart(Context parentContext, ReadWriteSpan span) {
38-
Span serverSpan = ServerSpan.fromContextOrNull(parentContext);
39-
if (serverSpan instanceof ReadableSpan) {
39+
Span localRootSpan = ServerSpan.fromContextOrNull(parentContext);
40+
if (localRootSpan == null) {
41+
localRootSpan = ConsumerSpan.fromContextOrNull(parentContext);
42+
}
43+
if (localRootSpan instanceof ReadableSpan) {
4044
span.setAttribute(
41-
Exporter.AI_OPERATION_NAME_KEY, getOperationName((ReadableSpan) serverSpan));
45+
Exporter.AI_OPERATION_NAME_KEY, getOperationName((ReadableSpan) localRootSpan));
4246
}
4347
}
4448

test/fakeIngestion/standalone/src/main/java/com/microsoft/applicationinsights/test/fakeingestion/MockedAppInsightsIngestionServer.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,14 +159,25 @@ public List<Envelope> waitForItems(String type, int numItems)
159159
// operationId
160160
public List<Envelope> waitForItems(String type, int numItems, String operationId)
161161
throws InterruptedException, ExecutionException, TimeoutException {
162+
return waitForItems(type, numItems, operationId, envelope -> true);
163+
}
164+
165+
public List<Envelope> waitForItems(
166+
String type, int numItems, String operationId, Predicate<Envelope> condition)
167+
throws InterruptedException, ExecutionException, TimeoutException {
162168
List<Envelope> items =
163169
waitForItems(
164170
new Predicate<Envelope>() {
165171
@Override
166172
public boolean test(Envelope input) {
167-
return input.getData().getBaseType().equals(type)
168-
&& (operationId == null
169-
|| operationId.equals(input.getTags().get("ai.operation.id")));
173+
if (!input.getData().getBaseType().equals(type)) {
174+
return false;
175+
}
176+
if (operationId != null
177+
&& !operationId.equals(input.getTags().get("ai.operation.id"))) {
178+
return false;
179+
}
180+
return condition.test(input);
170181
}
171182
},
172183
numItems,
@@ -206,6 +217,12 @@ public List<Envelope> waitForItemsInOperation(String type, int numItems, String
206217
return waitForItems(type, numItems, operationId);
207218
}
208219

220+
public List<Envelope> waitForItemsInOperation(
221+
String type, int numItems, String operationId, Predicate<Envelope> condition)
222+
throws ExecutionException, InterruptedException, TimeoutException {
223+
return waitForItems(type, numItems, operationId, condition);
224+
}
225+
209226
// this is used to filter out some sporadic messages that are captured via java.util.logging
210227
// instrumentation
211228
public List<Envelope> waitForMessageItemsInRequest(int numItems)

test/smoke/framework/testCore/src/main/java/com/microsoft/applicationinsights/smoketest/AiSmokeTest.java

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import static org.junit.Assert.assertEquals;
2525
import static org.junit.Assert.assertNotNull;
26+
import static org.junit.Assert.assertNull;
2627
import static org.junit.Assert.assertTrue;
2728

2829
import com.google.common.base.CaseFormat;
@@ -41,6 +42,7 @@
4142
import com.microsoft.applicationinsights.smoketest.schemav2.Data;
4243
import com.microsoft.applicationinsights.smoketest.schemav2.Domain;
4344
import com.microsoft.applicationinsights.smoketest.schemav2.Envelope;
45+
import com.microsoft.applicationinsights.smoketest.schemav2.RemoteDependencyData;
4446
import com.microsoft.applicationinsights.smoketest.schemav2.RequestData;
4547
import com.microsoft.applicationinsights.test.fakeingestion.MockedAppInsightsIngestionServer;
4648
import com.microsoft.applicationinsights.test.fakeingestion.MockedAppInsightsIngestionServlet;
@@ -839,4 +841,114 @@ protected <T extends Domain> T getTelemetryDataForType(int index, String type) {
839841
return mockedIngestion.getBaseDataForType(index, type);
840842
}
841843
// endregion
844+
845+
protected static Telemetry getTelemetry(int rddCount) throws Exception {
846+
return getTelemetry(rddCount, rdd -> true);
847+
}
848+
849+
protected static Telemetry getTelemetry(int rddCount, Predicate<RemoteDependencyData> condition)
850+
throws Exception {
851+
852+
if (rddCount > 3) {
853+
throw new IllegalArgumentException("this method currently only supports rddCount up to 3");
854+
}
855+
856+
Telemetry telemetry = new Telemetry();
857+
858+
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
859+
telemetry.rdEnvelope = rdList.get(0);
860+
telemetry.rd = (RequestData) ((Data<?>) telemetry.rdEnvelope.getData()).getBaseData();
861+
862+
assertEquals(0, mockedIngestion.getCountForType("EventData"));
863+
864+
if (rddCount == 0) {
865+
return telemetry;
866+
}
867+
868+
String operationId = telemetry.rdEnvelope.getTags().get("ai.operation.id");
869+
870+
List<Envelope> rddList =
871+
mockedIngestion.waitForItemsInOperation(
872+
"RemoteDependencyData",
873+
rddCount,
874+
operationId,
875+
envelope -> {
876+
RemoteDependencyData rdd =
877+
(RemoteDependencyData) ((Data<?>) envelope.getData()).getBaseData();
878+
return condition.test(rdd);
879+
});
880+
881+
telemetry.rddEnvelope1 = rddList.get(0);
882+
telemetry.rdd1 =
883+
(RemoteDependencyData) ((Data<?>) telemetry.rddEnvelope1.getData()).getBaseData();
884+
885+
if (rddCount == 1) {
886+
return telemetry;
887+
}
888+
889+
telemetry.rddEnvelope2 = rddList.get(1);
890+
telemetry.rdd2 =
891+
(RemoteDependencyData) ((Data<?>) telemetry.rddEnvelope2.getData()).getBaseData();
892+
893+
if (rddCount == 2) {
894+
return telemetry;
895+
}
896+
897+
telemetry.rddEnvelope3 = rddList.get(2);
898+
telemetry.rdd3 =
899+
(RemoteDependencyData) ((Data<?>) telemetry.rddEnvelope3.getData()).getBaseData();
900+
901+
return telemetry;
902+
}
903+
904+
public static class Telemetry {
905+
public Envelope rdEnvelope;
906+
public Envelope rddEnvelope1;
907+
public Envelope rddEnvelope2;
908+
public Envelope rddEnvelope3;
909+
910+
public RequestData rd;
911+
public RemoteDependencyData rdd1;
912+
public RemoteDependencyData rdd2;
913+
public RemoteDependencyData rdd3;
914+
}
915+
916+
public static void assertParentChild(
917+
RequestData rd, Envelope parentEnvelope, Envelope childEnvelope, String operationName) {
918+
assertParentChild(
919+
rd.getId(), parentEnvelope, childEnvelope, operationName, operationName, true);
920+
}
921+
922+
public static void assertParentChild(
923+
RemoteDependencyData rdd,
924+
Envelope parentEnvelope,
925+
Envelope childEnvelope,
926+
String operationName) {
927+
assertParentChild(
928+
rdd.getId(), parentEnvelope, childEnvelope, operationName, operationName, false);
929+
}
930+
931+
public static void assertParentChild(
932+
String parentId,
933+
Envelope parentEnvelope,
934+
Envelope childEnvelope,
935+
String parentOperationName,
936+
String childOperationName,
937+
boolean topLevelParent) {
938+
String operationId = parentEnvelope.getTags().get("ai.operation.id");
939+
assertNotNull(operationId);
940+
assertEquals(operationId, childEnvelope.getTags().get("ai.operation.id"));
941+
942+
String operationParentId = parentEnvelope.getTags().get("ai.operation.parentId");
943+
if (topLevelParent) {
944+
assertNull(operationParentId);
945+
} else {
946+
assertNotNull(operationParentId);
947+
}
948+
949+
assertEquals(parentId, childEnvelope.getTags().get("ai.operation.parentId"));
950+
951+
assertEquals(parentOperationName, parentEnvelope.getTags().get("ai.operation.name"));
952+
assertEquals(childOperationName, childEnvelope.getTags().get("ai.operation.name"));
953+
}
842954
}

test/smoke/testApps/AzureSdk/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/AzureSdkDisabledTest.java

Lines changed: 9 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,8 @@
2222
package com.microsoft.applicationinsights.smoketest;
2323

2424
import static org.junit.Assert.assertEquals;
25-
import static org.junit.Assert.assertNotNull;
2625
import static org.junit.Assert.assertTrue;
2726

28-
import com.microsoft.applicationinsights.smoketest.schemav2.Data;
29-
import com.microsoft.applicationinsights.smoketest.schemav2.Envelope;
30-
import com.microsoft.applicationinsights.smoketest.schemav2.RemoteDependencyData;
31-
import com.microsoft.applicationinsights.smoketest.schemav2.RequestData;
32-
import java.util.List;
3327
import org.junit.Test;
3428

3529
@UseAgent
@@ -38,41 +32,17 @@ public class AzureSdkDisabledTest extends AiSmokeTest {
3832
@Test
3933
@TargetUri("/test")
4034
public void test() throws Exception {
41-
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
35+
Telemetry telemetry = getTelemetry(1);
4236

43-
Envelope rdEnvelope = rdList.get(0);
44-
String operationId = rdEnvelope.getTags().get("ai.operation.id");
45-
List<Envelope> rddList =
46-
mockedIngestion.waitForItemsInOperation("RemoteDependencyData", 1, operationId);
47-
assertEquals(0, mockedIngestion.getCountForType("EventData"));
37+
assertEquals("GET /AzureSdk/test", telemetry.rd.getName());
38+
assertTrue(telemetry.rd.getProperties().isEmpty());
39+
assertTrue(telemetry.rd.getSuccess());
4840

49-
Envelope rddEnvelope = rddList.get(0);
41+
assertEquals("TestController.test", telemetry.rdd1.getName());
42+
assertTrue(telemetry.rdd1.getProperties().isEmpty());
43+
assertTrue(telemetry.rdd1.getSuccess());
5044

51-
RequestData rd = (RequestData) ((Data<?>) rdEnvelope.getData()).getBaseData();
52-
RemoteDependencyData rdd =
53-
(RemoteDependencyData) ((Data<?>) rddEnvelope.getData()).getBaseData();
54-
55-
assertTrue(rd.getProperties().isEmpty());
56-
assertTrue(rd.getSuccess());
57-
58-
assertEquals("GET /AzureSdk/test", rd.getName());
59-
assertTrue(rd.getProperties().isEmpty());
60-
assertTrue(rd.getSuccess());
61-
62-
assertEquals("TestController.test", rdd.getName());
63-
assertTrue(rdd.getProperties().isEmpty());
64-
assertTrue(rdd.getSuccess());
65-
66-
assertParentChild(rd.getId(), rdEnvelope, rddEnvelope);
67-
}
68-
69-
private static void assertParentChild(
70-
String parentId, Envelope parentEnvelope, Envelope childEnvelope) {
71-
String operationId = parentEnvelope.getTags().get("ai.operation.id");
72-
73-
assertNotNull(operationId);
74-
75-
assertEquals(operationId, childEnvelope.getTags().get("ai.operation.id"));
76-
assertEquals(parentId, childEnvelope.getTags().get("ai.operation.parentId"));
45+
assertParentChild(
46+
telemetry.rd, telemetry.rdEnvelope, telemetry.rddEnvelope1, "GET /AzureSdk/test");
7747
}
7848
}

test/smoke/testApps/AzureSdk/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/AzureSdkTest.java

Lines changed: 21 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,10 @@
2222
package com.microsoft.applicationinsights.smoketest;
2323

2424
import static org.junit.Assert.assertEquals;
25-
import static org.junit.Assert.assertNotNull;
2625
import static org.junit.Assert.assertTrue;
2726

28-
import com.microsoft.applicationinsights.smoketest.schemav2.Data;
2927
import com.microsoft.applicationinsights.smoketest.schemav2.Envelope;
3028
import com.microsoft.applicationinsights.smoketest.schemav2.RemoteDependencyData;
31-
import com.microsoft.applicationinsights.smoketest.schemav2.RequestData;
32-
import java.util.List;
3329
import org.junit.Test;
3430

3531
@UseAgent("azuresdk")
@@ -38,56 +34,33 @@ public class AzureSdkTest extends AiSmokeTest {
3834
@Test
3935
@TargetUri("/test")
4036
public void test() throws Exception {
41-
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
37+
Telemetry telemetry = getTelemetry(2);
4238

43-
Envelope rdEnvelope = rdList.get(0);
44-
String operationId = rdEnvelope.getTags().get("ai.operation.id");
45-
List<Envelope> rddList =
46-
mockedIngestion.waitForItemsInOperation("RemoteDependencyData", 2, operationId);
47-
assertEquals(0, mockedIngestion.getCountForType("EventData"));
39+
if (!telemetry.rdd1.getName().equals("TestController.test")) {
40+
RemoteDependencyData rddTemp = telemetry.rdd1;
41+
telemetry.rdd1 = telemetry.rdd2;
42+
telemetry.rdd2 = rddTemp;
4843

49-
Envelope rddEnvelope1 = rddList.get(0);
50-
Envelope rddEnvelope2 = rddList.get(1);
51-
52-
RequestData rd = (RequestData) ((Data<?>) rdEnvelope.getData()).getBaseData();
53-
RemoteDependencyData rdd1 =
54-
(RemoteDependencyData) ((Data<?>) rddEnvelope1.getData()).getBaseData();
55-
RemoteDependencyData rdd2 =
56-
(RemoteDependencyData) ((Data<?>) rddEnvelope2.getData()).getBaseData();
57-
58-
if (!rdd1.getName().equals("TestController.test")) {
59-
RemoteDependencyData rddTemp = rdd1;
60-
rdd1 = rdd2;
61-
rdd2 = rddTemp;
62-
63-
Envelope rddEnvelopeTemp = rddEnvelope1;
64-
rddEnvelope1 = rddEnvelope2;
65-
rddEnvelope2 = rddEnvelopeTemp;
44+
Envelope rddEnvelopeTemp = telemetry.rddEnvelope1;
45+
telemetry.rddEnvelope1 = telemetry.rddEnvelope2;
46+
telemetry.rddEnvelope2 = rddEnvelopeTemp;
6647
}
6748

68-
assertEquals("GET /AzureSdk/test", rd.getName());
69-
assertTrue(rd.getProperties().isEmpty());
70-
assertTrue(rd.getSuccess());
71-
72-
assertEquals("TestController.test", rdd1.getName());
73-
assertTrue(rdd1.getProperties().isEmpty());
74-
assertTrue(rdd1.getSuccess());
75-
76-
assertEquals("hello", rdd2.getName());
77-
assertTrue(rdd2.getProperties().isEmpty());
78-
assertTrue(rdd2.getSuccess());
79-
80-
assertParentChild(rd.getId(), rdEnvelope, rddEnvelope1);
81-
assertParentChild(rdd1.getId(), rddEnvelope1, rddEnvelope2);
82-
}
49+
assertEquals("GET /AzureSdk/test", telemetry.rd.getName());
50+
assertTrue(telemetry.rd.getProperties().isEmpty());
51+
assertTrue(telemetry.rd.getSuccess());
8352

84-
private static void assertParentChild(
85-
String parentId, Envelope parentEnvelope, Envelope childEnvelope) {
86-
String operationId = parentEnvelope.getTags().get("ai.operation.id");
53+
assertEquals("TestController.test", telemetry.rdd1.getName());
54+
assertTrue(telemetry.rdd1.getProperties().isEmpty());
55+
assertTrue(telemetry.rdd1.getSuccess());
8756

88-
assertNotNull(operationId);
57+
assertEquals("hello", telemetry.rdd2.getName());
58+
assertTrue(telemetry.rdd2.getProperties().isEmpty());
59+
assertTrue(telemetry.rdd2.getSuccess());
8960

90-
assertEquals(operationId, childEnvelope.getTags().get("ai.operation.id"));
91-
assertEquals(parentId, childEnvelope.getTags().get("ai.operation.parentId"));
61+
assertParentChild(
62+
telemetry.rd, telemetry.rdEnvelope, telemetry.rddEnvelope1, "GET /AzureSdk/test");
63+
assertParentChild(
64+
telemetry.rdd1, telemetry.rddEnvelope1, telemetry.rddEnvelope2, "GET /AzureSdk/test");
9265
}
9366
}

test/smoke/testApps/Cassandra/src/smokeTest/java/com/microsoft/applicationinsights/smoketestapp/CassandraDisabledTest.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@
2929
import com.microsoft.applicationinsights.smoketest.TargetUri;
3030
import com.microsoft.applicationinsights.smoketest.UseAgent;
3131
import com.microsoft.applicationinsights.smoketest.WithDependencyContainers;
32-
import com.microsoft.applicationinsights.smoketest.schemav2.Data;
33-
import com.microsoft.applicationinsights.smoketest.schemav2.Envelope;
34-
import com.microsoft.applicationinsights.smoketest.schemav2.RequestData;
35-
import java.util.List;
3632
import org.junit.Test;
3733

3834
@UseAgent("disabled_cassandra")
@@ -46,14 +42,12 @@ public class CassandraDisabledTest extends AiSmokeTest {
4642
@Test
4743
@TargetUri("/cassandra")
4844
public void cassandra() throws Exception {
49-
List<Envelope> rdList = mockedIngestion.waitForItems("RequestData", 1);
50-
Envelope rdEnvelope = rdList.get(0);
51-
RequestData rd = (RequestData) ((Data<?>) rdEnvelope.getData()).getBaseData();
45+
Telemetry telemetry = getTelemetry(0);
5246

53-
assertEquals("GET /Cassandra/*", rd.getName());
54-
assertEquals("200", rd.getResponseCode());
55-
assertTrue(rd.getProperties().isEmpty());
56-
assertTrue(rd.getSuccess());
47+
assertEquals("GET /Cassandra/*", telemetry.rd.getName());
48+
assertEquals("200", telemetry.rd.getResponseCode());
49+
assertTrue(telemetry.rd.getProperties().isEmpty());
50+
assertTrue(telemetry.rd.getSuccess());
5751

5852
// sleep a bit and make sure no cassandra dependencies are reported
5953
Thread.sleep(5000);

0 commit comments

Comments
 (0)