Skip to content

Commit 732e255

Browse files
authored
Fix testStatsbeatNotShutDownWhen400InvalidDataReturned flaky test (Azure#44957)
* Fix testStatsbeatNotShutDownWhen400InvalidDataReturned flaky test * fix
1 parent ecbb078 commit 732e255

File tree

6 files changed

+32
-17
lines changed

6 files changed

+32
-17
lines changed

sdk/monitor/azure-monitor-opentelemetry-autoconfigure/spotbugs-exclude.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,5 +104,12 @@
104104
<Bug pattern="DM_CONVERT_CASE" />
105105
<Class name="com.azure.monitor.opentelemetry.autoconfigure.implementation.quickpulse.filtering.Filter" />
106106
</Match>
107-
107+
<Match>
108+
<Bug pattern="MS_EXPOSE_REP" />
109+
<Class name="com.azure.monitor.opentelemetry.exporter.implementation.statsbeat.StatsbeatModule" /> <!--non-public API, only for testing-->
110+
</Match>
111+
<Match>
112+
<Bug pattern="MS_EXPOSE_REP" />
113+
<Class name="com.azure.monitor.opentelemetry.autoconfigure.implementation.statsbeat.StatsbeatModule" /> <!--non-public API, only for testing-->
114+
</Match>
108115
</FindBugsFilter>

sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/main/java/com/azure/monitor/opentelemetry/autoconfigure/implementation/statsbeat/StatsbeatModule.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ public class StatsbeatModule {
3636
private final AzureMetadataService azureMetadataService;
3737
private final AtomicBoolean started = new AtomicBoolean();
3838

39-
private final AtomicBoolean shutdown = new AtomicBoolean();
39+
private static final AtomicBoolean shutdown = new AtomicBoolean();
40+
41+
// Only for testing
42+
public static AtomicBoolean getShutdown() {
43+
return shutdown;
44+
}
4045

4146
public StatsbeatModule(Consumer<MetadataInstanceResponse> vmMetadataServiceCallback) {
4247
customDimensions = new CustomDimensions();

sdk/monitor/azure-monitor-opentelemetry-autoconfigure/src/test/java/com/azure/monitor/opentelemetry/autoconfigure/AzureMonitorStatsbeatTest.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.azure.core.http.HttpRequest;
1111
import com.azure.core.http.HttpResponse;
1212
import com.azure.core.http.policy.HttpPipelinePolicy;
13+
import com.azure.monitor.opentelemetry.autoconfigure.implementation.statsbeat.StatsbeatModule;
1314
import com.azure.monitor.opentelemetry.autoconfigure.implementation.utils.TestUtils;
1415
import com.azure.monitor.opentelemetry.autoconfigure.implementation.MockHttpResponse;
1516
import com.azure.monitor.opentelemetry.autoconfigure.implementation.NoopTracer;
@@ -22,8 +23,6 @@
2223
import io.opentelemetry.api.metrics.Meter;
2324
import io.opentelemetry.sdk.OpenTelemetrySdk;
2425
import org.junit.jupiter.api.Test;
25-
import org.junit.jupiter.api.condition.DisabledOnOs;
26-
import org.junit.jupiter.api.condition.OS;
2726
import org.junit.jupiter.api.parallel.Execution;
2827
import org.junit.jupiter.api.parallel.ExecutionMode;
2928
import reactor.core.publisher.Mono;
@@ -73,7 +72,6 @@ public void testStatsbeat() throws Exception {
7372
}
7473

7574
@Test
76-
@DisabledOnOs(value = { OS.MAC }, disabledReason = "Unstable")
7775
public void testStatsbeatShutdownWhen400InvalidIKeyReturned() throws Exception {
7876
String fakeBody
7977
= "{\"itemsReceived\":4,\"itemsAccepted\":0,\"errors\":[{\"index\":0,\"statusCode\":400,\"message\":\"Invalid instrumentation key\"},{\"index\":1,\"statusCode\":400,\"message\":\"Invalid instrumentation key\"},{\"index\":2,\"statusCode\":400,\"message\":\"Invalid instrumentation key\"},{\"index\":3,\"statusCode\":400,\"message\":\"Invalid instrumentation key\"}]}";
@@ -112,10 +110,7 @@ private void verifyStatsbeatShutdownOrnNot(String fakeBody, boolean shutdown) th
112110
.isEqualTo(new URL("https://westus-0.in.applicationinsights.azure.com/v2.1/track"));
113111

114112
if (shutdown) {
115-
assertThat(customValidationPolicy.getActualTelemetryItems()
116-
.stream()
117-
.filter(item -> item.getName().equals("Statsbeat"))
118-
.count()).isEqualTo(0);
113+
assertThat(StatsbeatModule.getShutdown()).isTrue();
119114
} else {
120115
verifyStatsbeatTelemetry(customValidationPolicy);
121116
}

sdk/monitor/azure-monitor-opentelemetry-exporter/spotbugs-exclude.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,12 @@
8484
<Bug pattern="UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR" />
8585
<Class name="com.azure.monitor.opentelemetry.exporter.AzureMonitorExporterBuilder" />
8686
</Match>
87+
<Match>
88+
<Bug pattern="MS_EXPOSE_REP" />
89+
<Class name="com.azure.monitor.opentelemetry.exporter.implementation.statsbeat.StatsbeatModule" /> <!--non-public API, only for testing-->
90+
</Match>
91+
<Match>
92+
<Bug pattern="MS_EXPOSE_REP" />
93+
<Class name="com.azure.monitor.opentelemetry.autoconfigure.implementation.statsbeat.StatsbeatModule" /> <!--non-public API, only for testing-->
94+
</Match>
8795
</FindBugsFilter>

sdk/monitor/azure-monitor-opentelemetry-exporter/src/main/java/com/azure/monitor/opentelemetry/exporter/implementation/statsbeat/StatsbeatModule.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ public class StatsbeatModule {
3636
private final AzureMetadataService azureMetadataService;
3737
private final AtomicBoolean started = new AtomicBoolean();
3838

39-
private final AtomicBoolean shutdown = new AtomicBoolean();
39+
private static final AtomicBoolean shutdown = new AtomicBoolean();
40+
41+
// Only for testing
42+
public static AtomicBoolean getShutdown() {
43+
return shutdown;
44+
}
4045

4146
public StatsbeatModule(Consumer<MetadataInstanceResponse> vmMetadataServiceCallback) {
4247
customDimensions = new CustomDimensions();

sdk/monitor/azure-monitor-opentelemetry-exporter/src/test/java/com/azure/monitor/opentelemetry/exporter/AzureMonitorStatsbeatTest.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.azure.core.http.HttpRequest;
1111
import com.azure.core.http.HttpResponse;
1212
import com.azure.core.http.policy.HttpPipelinePolicy;
13+
import com.azure.monitor.opentelemetry.exporter.implementation.statsbeat.StatsbeatModule;
1314
import com.azure.monitor.opentelemetry.exporter.implementation.MockHttpResponse;
1415
import com.azure.monitor.opentelemetry.exporter.implementation.NoopTracer;
1516
import com.azure.monitor.opentelemetry.exporter.implementation.models.MetricsData;
@@ -22,8 +23,6 @@
2223
import io.opentelemetry.api.metrics.Meter;
2324
import io.opentelemetry.sdk.OpenTelemetrySdk;
2425
import org.junit.jupiter.api.Test;
25-
import org.junit.jupiter.api.condition.DisabledOnOs;
26-
import org.junit.jupiter.api.condition.OS;
2726
import org.junit.jupiter.api.parallel.Execution;
2827
import org.junit.jupiter.api.parallel.ExecutionMode;
2928
import reactor.core.publisher.Mono;
@@ -74,7 +73,6 @@ public void testStatsbeat() throws Exception {
7473
}
7574

7675
@Test
77-
@DisabledOnOs(value = { OS.MAC }, disabledReason = "Unstable")
7876
public void testStatsbeatShutdownWhen400InvalidIKeyReturned() throws Exception {
7977
String fakeBody
8078
= "{\"itemsReceived\":4,\"itemsAccepted\":0,\"errors\":[{\"index\":0,\"statusCode\":400,\"message\":\"Invalid instrumentation key\"},{\"index\":1,\"statusCode\":400,\"message\":\"Invalid instrumentation key\"},{\"index\":2,\"statusCode\":400,\"message\":\"Invalid instrumentation key\"},{\"index\":3,\"statusCode\":400,\"message\":\"Invalid instrumentation key\"}]}";
@@ -113,10 +111,7 @@ private void verifyStatsbeatShutdownOrnNot(String fakeBody, boolean shutdown) th
113111
.isEqualTo(new URL("https://westus-0.in.applicationinsights.azure.com/v2.1/track"));
114112

115113
if (shutdown) {
116-
assertThat(customValidationPolicy.getActualTelemetryItems()
117-
.stream()
118-
.filter(item -> item.getName().equals("Statsbeat"))
119-
.count()).isEqualTo(0);
114+
assertThat(StatsbeatModule.getShutdown()).isTrue();
120115
} else {
121116
verifyStatsbeatTelemetry(customValidationPolicy);
122117
}

0 commit comments

Comments
 (0)