Skip to content

Commit d89b256

Browse files
authored
Nicer smoke test assertions (#4141)
1 parent d7b8319 commit d89b256

File tree

24 files changed

+762
-281
lines changed

24 files changed

+762
-281
lines changed

smoke-tests/apps/AutoPerfCounters/src/smokeTest/java/com/microsoft/applicationinsights/smoketest/AutoPerfCountersTest.java

Lines changed: 24 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,7 @@
1515
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.TOMCAT_8_JAVA_8_OPENJ9;
1616
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8;
1717
import static com.microsoft.applicationinsights.smoketest.EnvironmentValue.WILDFLY_13_JAVA_8_OPENJ9;
18-
import static org.assertj.core.api.Assertions.assertThat;
19-
20-
import com.microsoft.applicationinsights.smoketest.schemav2.DataPoint;
21-
import com.microsoft.applicationinsights.smoketest.schemav2.Envelope;
22-
import com.microsoft.applicationinsights.smoketest.schemav2.MetricData;
23-
import java.util.List;
24-
import java.util.Objects;
25-
import java.util.concurrent.TimeUnit;
26-
import java.util.function.Predicate;
18+
2719
import org.junit.jupiter.api.Test;
2820
import org.junit.jupiter.api.extension.RegisterExtension;
2921

@@ -34,105 +26,31 @@ abstract class AutoPerfCountersTest {
3426

3527
@Test
3628
@TargetUri(value = "index.jsp")
37-
void testPerformanceCounterData() throws Exception {
38-
System.out.println("Waiting for performance data...");
39-
long start = System.currentTimeMillis();
40-
41-
int timeout = 10;
42-
43-
Envelope availableMem =
44-
testing.mockedIngestion.waitForItem(
45-
getPerfMetricPredicate("\\Memory\\Available Bytes"), timeout, TimeUnit.SECONDS);
46-
Envelope totalCpu =
47-
testing.mockedIngestion.waitForItem(
48-
getPerfMetricPredicate("\\Processor(_Total)\\% Processor Time"),
49-
timeout,
50-
TimeUnit.SECONDS);
51-
52-
Envelope processIo =
53-
testing.mockedIngestion.waitForItem(
54-
getPerfMetricPredicate("\\Process(??APP_WIN32_PROC??)\\IO Data Bytes/sec"),
55-
timeout,
56-
TimeUnit.SECONDS);
57-
Envelope processMemUsed =
58-
testing.mockedIngestion.waitForItem(
59-
getPerfMetricPredicate("\\Process(??APP_WIN32_PROC??)\\Private Bytes"),
60-
timeout,
61-
TimeUnit.SECONDS);
62-
Envelope processCpu =
63-
testing.mockedIngestion.waitForItem(
64-
getPerfMetricPredicate("\\Process(??APP_WIN32_PROC??)\\% Processor Time"),
65-
timeout,
66-
TimeUnit.SECONDS);
67-
Envelope processCpuNormalized =
68-
testing.mockedIngestion.waitForItem(
69-
getPerfMetricPredicate("\\Process(??APP_WIN32_PROC??)\\% Processor Time Normalized"),
70-
timeout,
71-
TimeUnit.SECONDS);
72-
System.out.println("PerformanceCounterData are good: " + (System.currentTimeMillis() - start));
73-
74-
MetricData metricMem = SmokeTestExtension.getBaseData(availableMem);
75-
assertPerfMetric(metricMem);
76-
assertThat(metricMem.getMetrics().get(0).getName()).isEqualTo("\\Memory\\Available Bytes");
77-
78-
MetricData pdCpu = SmokeTestExtension.getBaseData(totalCpu);
79-
assertPerfMetric(pdCpu);
80-
assertThat(pdCpu.getMetrics().get(0).getName())
81-
.isEqualTo("\\Processor(_Total)\\% Processor Time");
82-
83-
assertPerfMetric(SmokeTestExtension.getBaseData(processIo));
84-
assertPerfMetric(SmokeTestExtension.getBaseData(processMemUsed));
85-
assertPerfMetric(SmokeTestExtension.getBaseData(processCpu));
86-
assertPerfMetric(SmokeTestExtension.getBaseData(processCpuNormalized));
87-
88-
start = System.currentTimeMillis();
89-
System.out.println("Waiting for metric data...");
90-
Envelope deadlocks =
91-
testing.mockedIngestion.waitForItem(
92-
getPerfMetricPredicate("Suspected Deadlocked Threads"), timeout, TimeUnit.SECONDS);
93-
Envelope heapUsed =
94-
testing.mockedIngestion.waitForItem(
95-
getPerfMetricPredicate("Heap Memory Used (MB)"), timeout, TimeUnit.SECONDS);
96-
Envelope gcTotalCount =
97-
testing.mockedIngestion.waitForItem(
98-
getPerfMetricPredicate("GC Total Count"), timeout, TimeUnit.SECONDS);
99-
Envelope gcTotalTime =
100-
testing.mockedIngestion.waitForItem(
101-
getPerfMetricPredicate("GC Total Time"), timeout, TimeUnit.SECONDS);
102-
System.out.println("MetricData are good: " + (System.currentTimeMillis() - start));
103-
104-
MetricData mdDeadlocks = SmokeTestExtension.getBaseData(deadlocks);
105-
assertPerfMetric(mdDeadlocks);
106-
assertThat(mdDeadlocks.getMetrics().get(0).getValue()).isEqualTo(0);
107-
108-
MetricData mdHeapUsed = SmokeTestExtension.getBaseData(heapUsed);
109-
assertPerfMetric(mdHeapUsed);
110-
assertThat(mdHeapUsed.getMetrics().get(0).getValue()).isGreaterThan(0);
111-
112-
MetricData mdGcTotalCount = SmokeTestExtension.getBaseData(gcTotalCount);
113-
assertPerfMetric(mdGcTotalCount);
114-
115-
MetricData mdGcTotalTime = SmokeTestExtension.getBaseData(gcTotalTime);
116-
assertPerfMetric(mdGcTotalTime);
117-
}
29+
void testPerformanceCounterData() {
11830

119-
private void assertPerfMetric(MetricData perfMetric) {
120-
List<DataPoint> metrics = perfMetric.getMetrics();
121-
assertThat(metrics).hasSize(1);
122-
}
31+
testing.waitAndAssertMetric("\\Memory\\Available Bytes", MetricAssert::hasValueGreaterThanZero);
32+
33+
testing.waitAndAssertMetric(
34+
"\\Processor(_Total)\\% Processor Time", MetricAssert::hasValueGreaterThanZero);
35+
36+
testing.waitAndAssertMetric("\\Process(??APP_WIN32_PROC??)\\IO Data Bytes/sec", metric -> {});
37+
38+
testing.waitAndAssertMetric(
39+
"\\Process(??APP_WIN32_PROC??)\\Private Bytes", MetricAssert::hasValueGreaterThanZero);
40+
41+
testing.waitAndAssertMetric(
42+
"\\Process(??APP_WIN32_PROC??)\\% Processor Time", MetricAssert::hasValueGreaterThanZero);
43+
44+
testing.waitAndAssertMetric(
45+
"\\Process(??APP_WIN32_PROC??)\\% Processor Time Normalized",
46+
MetricAssert::hasValueGreaterThanZero);
47+
48+
testing.waitAndAssertMetric("Suspected Deadlocked Threads", metric -> metric.hasValue(0));
49+
50+
testing.waitAndAssertMetric("Heap Memory Used (MB)", MetricAssert::hasValueGreaterThanZero);
12351

124-
private static Predicate<Envelope> getPerfMetricPredicate(String name) {
125-
Objects.requireNonNull(name, "name");
126-
return new Predicate<Envelope>() {
127-
@Override
128-
public boolean test(Envelope input) {
129-
if (!input.getData().getBaseType().equals("MetricData")) {
130-
return false;
131-
}
132-
MetricData md = SmokeTestExtension.getBaseData(input);
133-
return name.equals(md.getMetrics().get(0).getName());
134-
}
135-
};
52+
testing.waitAndAssertMetric("GC Total Count", metric -> {});
53+
testing.waitAndAssertMetric("GC Total Time", metric -> {});
13654
}
13755

13856
@Environment(TOMCAT_8_JAVA_8)

0 commit comments

Comments
 (0)