diff --git a/smoke-tests/apps/HttpClients/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/HttpClientTest.java b/smoke-tests/apps/HttpClients/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/HttpClientTest.java index e171507f207..a1cc4d81b9d 100644 --- a/smoke-tests/apps/HttpClients/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/HttpClientTest.java +++ b/smoke-tests/apps/HttpClients/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/HttpClientTest.java @@ -15,8 +15,6 @@ import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9; import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8; import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.data.MapEntry.entry; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -80,52 +78,57 @@ private static void verify() throws Exception { } private static void verify(String successUrlWithQueryString) throws Exception { - Telemetry telemetry = testing.getTelemetry(3); - - assertThat(telemetry.rd.getProperties()) - .containsExactly(entry("_MS.ProcessedByMetricExtractors", "True")); - assertThat(telemetry.rd.getSuccess()).isTrue(); - // TODO (trask) add this check in all smoke tests? - assertThat(telemetry.rdEnvelope.getSampleRate()).isNull(); - - assertThat(telemetry.rdd1.getName()).isEqualTo("GET /mock/200"); - assertThat(telemetry.rdd1.getData()).isEqualTo(successUrlWithQueryString); - assertThat(telemetry.rdd1.getType()).isEqualTo("Http"); - assertThat(telemetry.rdd1.getTarget()).isEqualTo("host.testcontainers.internal:6060"); - assertThat(telemetry.rdd1.getResultCode()).isEqualTo("200"); - assertThat(telemetry.rdd1.getProperties()) - .containsExactly(entry("_MS.ProcessedByMetricExtractors", "True")); - assertThat(telemetry.rdd1.getSuccess()).isTrue(); - assertThat(telemetry.rddEnvelope1.getSampleRate()).isNull(); - - assertThat(telemetry.rdd2.getName()).isEqualTo("GET /mock/404"); - assertThat(telemetry.rdd2.getData()) - .isEqualTo("http://host.testcontainers.internal:6060/mock/404"); - assertThat(telemetry.rdd2.getType()).isEqualTo("Http"); - assertThat(telemetry.rdd2.getTarget()).isEqualTo("host.testcontainers.internal:6060"); - assertThat(telemetry.rdd2.getResultCode()).isEqualTo("404"); - assertThat(telemetry.rdd2.getProperties()) - .containsExactly(entry("_MS.ProcessedByMetricExtractors", "True")); - assertThat(telemetry.rdd2.getSuccess()).isFalse(); - assertThat(telemetry.rddEnvelope2.getSampleRate()).isNull(); - - assertThat(telemetry.rdd3.getName()).isEqualTo("GET /mock/500"); - assertThat(telemetry.rdd3.getData()) - .isEqualTo("http://host.testcontainers.internal:6060/mock/500"); - assertThat(telemetry.rdd3.getType()).isEqualTo("Http"); - assertThat(telemetry.rdd3.getTarget()).isEqualTo("host.testcontainers.internal:6060"); - assertThat(telemetry.rdd3.getResultCode()).isEqualTo("500"); - assertThat(telemetry.rdd3.getProperties()) - .containsExactly(entry("_MS.ProcessedByMetricExtractors", "True")); - assertThat(telemetry.rdd3.getSuccess()).isFalse(); - assertThat(telemetry.rddEnvelope3.getSampleRate()).isNull(); - - SmokeTestExtension.assertParentChild( - telemetry.rd, telemetry.rdEnvelope, telemetry.rddEnvelope1, "GET /HttpClients/*"); - SmokeTestExtension.assertParentChild( - telemetry.rd, telemetry.rdEnvelope, telemetry.rddEnvelope2, "GET /HttpClients/*"); - SmokeTestExtension.assertParentChild( - telemetry.rd, telemetry.rdEnvelope, telemetry.rddEnvelope3, "GET /HttpClients/*"); + testing.waitAndAssertTrace( + trace -> + trace + .hasRequestSatisying( + request -> + request + .hasSuccess(true) + .hasProperty("_MS.ProcessedByMetricExtractors", "True") + .hasNoParent() + // TODO (trask) add this check in all smoke tests? + .hasNoSampleRate() + .hasTag("ai.operation.name", "GET /HttpClients/*")) + .hasDependencySatisying( + dependency -> + dependency + .hasName("GET /mock/200") + .hasData(successUrlWithQueryString) + .hasType("Http") + .hasTarget("host.testcontainers.internal:6060") + .hasResultCode("200") + .hasSuccess(true) + .hasProperty("_MS.ProcessedByMetricExtractors", "True") + .hasParent(trace.getRequestId(0)) + .hasNoSampleRate() + .hasTag("ai.operation.name", "GET /HttpClients/*")) + .hasDependencySatisying( + dependency -> + dependency + .hasName("GET /mock/404") + .hasData("http://host.testcontainers.internal:6060/mock/404") + .hasType("Http") + .hasTarget("host.testcontainers.internal:6060") + .hasResultCode("404") + .hasSuccess(false) + .hasProperty("_MS.ProcessedByMetricExtractors", "True") + .hasParent(trace.getRequestId(0)) + .hasNoSampleRate() + .hasTag("ai.operation.name", "GET /HttpClients/*")) + .hasDependencySatisying( + dependency -> + dependency + .hasName("GET /mock/500") + .hasData("http://host.testcontainers.internal:6060/mock/500") + .hasType("Http") + .hasTarget("host.testcontainers.internal:6060") + .hasResultCode("500") + .hasSuccess(false) + .hasProperty("_MS.ProcessedByMetricExtractors", "True") + .hasParent(trace.getRequestId(0)) + .hasNoSampleRate() + .hasTag("ai.operation.name", "GET /HttpClients/*"))); } @Environment(TOMCAT_8_JAVA_8) diff --git a/smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/DependencyAssert.java b/smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/DependencyAssert.java index 5d48725ed5a..61df96d3b94 100644 --- a/smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/DependencyAssert.java +++ b/smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/DependencyAssert.java @@ -55,14 +55,49 @@ public DependencyAssert hasTag(String key, String value) { @CanIgnoreReturnValue public DependencyAssert hasNoParent() { isNotNull(); - assertThat(getDependencyData().getProperties().get("ai.operation.parentId")).isNull(); + assertThat(actual.getTags()).doesNotContainKey("ai.operation.parentId"); return this; } @CanIgnoreReturnValue public DependencyAssert hasParent(String parentId) { isNotNull(); - assertThat(getDependencyData().getProperties().get("ai.operation.parentId")).isNull(); + assertThat(actual.getTags()).containsEntry("ai.operation.parentId", parentId); + return this; + } + + @CanIgnoreReturnValue + public DependencyAssert hasData(String data) { + isNotNull(); + assertThat(getDependencyData().getData()).isEqualTo(data); + return this; + } + + @CanIgnoreReturnValue + public DependencyAssert hasType(String type) { + isNotNull(); + assertThat(getDependencyData().getType()).isEqualTo(type); + return this; + } + + @CanIgnoreReturnValue + public DependencyAssert hasResultCode(String resultCode) { + isNotNull(); + assertThat(getDependencyData().getResultCode()).isEqualTo(resultCode); + return this; + } + + @CanIgnoreReturnValue + public DependencyAssert hasSampleRate(Float expectedSampleRate) { + isNotNull(); + assertThat(actual.getSampleRate()).isEqualTo(expectedSampleRate); + return this; + } + + @CanIgnoreReturnValue + public DependencyAssert hasNoSampleRate() { + isNotNull(); + assertThat(actual.getSampleRate()).isNull(); return this; } diff --git a/smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/RequestAssert.java b/smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/RequestAssert.java index b2da8938e43..1d741ff9f59 100644 --- a/smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/RequestAssert.java +++ b/smoke-tests/framework/src/main/java/com/microsoft/applicationinsights/smoketest/RequestAssert.java @@ -47,14 +47,28 @@ public RequestAssert hasTag(String key, String value) { @CanIgnoreReturnValue public RequestAssert hasNoParent() { isNotNull(); - assertThat(getRequestData().getProperties().get("ai.operation.parentId")).isNull(); + assertThat(actual.getTags()).doesNotContainKey("ai.operation.parentId"); return this; } @CanIgnoreReturnValue public RequestAssert hasParent(String parentId) { isNotNull(); - assertThat(getRequestData().getProperties().get("ai.operation.parentId")).isNull(); + assertThat(actual.getTags()).containsEntry("ai.operation.parentId", parentId); + return this; + } + + @CanIgnoreReturnValue + public RequestAssert hasSampleRate(Float expectedSampleRate) { + isNotNull(); + assertThat(actual.getSampleRate()).isEqualTo(expectedSampleRate); + return this; + } + + @CanIgnoreReturnValue + public RequestAssert hasNoSampleRate() { + isNotNull(); + assertThat(actual.getSampleRate()).isNull(); return this; }