Skip to content

Commit 5e5be42

Browse files
authored
Reduce flakyness of Resource tests (#12252)
1 parent 9936812 commit 5e5be42

File tree

8 files changed

+69
-76
lines changed

8 files changed

+69
-76
lines changed

instrumentation/resources/library/build.gradle.kts

+19
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,22 @@ tasks {
6969
)
7070
}
7171
}
72+
73+
testing {
74+
suites {
75+
// Security Manager tests involve setup that can poison the environment for other tests
76+
val testSecurityManager by registering(JvmTestSuite::class) {
77+
dependencies {
78+
implementation(project(":instrumentation:resources:library"))
79+
implementation("io.opentelemetry:opentelemetry-sdk-common")
80+
implementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating")
81+
}
82+
}
83+
}
84+
}
85+
86+
tasks {
87+
check {
88+
dependsOn(testing.suites)
89+
}
90+
}

instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/HostResource.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
public final class HostResource {
1818

1919
// copied from HostIncubatingAttributes
20-
public static final AttributeKey<String> HOST_ARCH = AttributeKey.stringKey("host.arch");
21-
public static final AttributeKey<String> HOST_NAME = AttributeKey.stringKey("host.name");
20+
private static final AttributeKey<String> HOST_ARCH = AttributeKey.stringKey("host.arch");
21+
private static final AttributeKey<String> HOST_NAME = AttributeKey.stringKey("host.name");
2222

2323
private static final Resource INSTANCE = buildResource();
2424

instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/HostResourceTest.java

-19
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,7 @@
1111
import io.opentelemetry.sdk.resources.Resource;
1212
import io.opentelemetry.semconv.SchemaUrls;
1313
import io.opentelemetry.semconv.incubating.HostIncubatingAttributes;
14-
import org.junit.jupiter.api.Nested;
1514
import org.junit.jupiter.api.Test;
16-
import org.junit.jupiter.api.TestInstance;
17-
import org.junit.jupiter.api.condition.EnabledOnJre;
18-
import org.junit.jupiter.api.condition.JRE;
19-
import org.junit.jupiter.api.extension.ExtendWith;
2015

2116
class HostResourceTest {
2217
@Test
@@ -30,18 +25,4 @@ void shouldCreateRuntimeAttributes() {
3025
assertThat(attributes.get(HostIncubatingAttributes.HOST_NAME)).isNotBlank();
3126
assertThat(attributes.get(HostIncubatingAttributes.HOST_ARCH)).isNotBlank();
3227
}
33-
34-
@Nested
35-
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
36-
@ExtendWith(SecurityManagerExtension.class)
37-
@EnabledOnJre(
38-
value = {JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_16},
39-
disabledReason = "Java 17 deprecates security manager for removal")
40-
static class SecurityManagerEnabled {
41-
@Test
42-
void empty() {
43-
Attributes attributes = HostResource.buildResource().getAttributes();
44-
assertThat(attributes.asMap()).containsOnlyKeys(HostIncubatingAttributes.HOST_NAME);
45-
}
46-
}
4728
}

instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/OsResourceTest.java

-18
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,7 @@
1010
import io.opentelemetry.sdk.resources.Resource;
1111
import io.opentelemetry.semconv.SchemaUrls;
1212
import io.opentelemetry.semconv.incubating.OsIncubatingAttributes;
13-
import org.junit.jupiter.api.Nested;
1413
import org.junit.jupiter.api.Test;
15-
import org.junit.jupiter.api.TestInstance;
16-
import org.junit.jupiter.api.condition.EnabledOnJre;
17-
import org.junit.jupiter.api.condition.JRE;
18-
import org.junit.jupiter.api.extension.ExtendWith;
1914
import org.junitpioneer.jupiter.SetSystemProperty;
2015

2116
class OsResourceTest {
@@ -138,17 +133,4 @@ void unknown() {
138133
assertThat(resource.getAttribute(OsIncubatingAttributes.OS_TYPE)).isNull();
139134
assertThat(resource.getAttribute(OsIncubatingAttributes.OS_DESCRIPTION)).isNotEmpty();
140135
}
141-
142-
@Nested
143-
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
144-
@ExtendWith(SecurityManagerExtension.class)
145-
@EnabledOnJre(
146-
value = {JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_16},
147-
disabledReason = "Java 17 deprecates security manager for removal")
148-
static class SecurityManagerEnabled {
149-
@Test
150-
void empty() {
151-
assertThat(OsResource.buildResource()).isEqualTo(Resource.empty());
152-
}
153-
}
154136
}

instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessResourceTest.java

-19
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,7 @@
1111
import io.opentelemetry.sdk.resources.Resource;
1212
import io.opentelemetry.semconv.SchemaUrls;
1313
import io.opentelemetry.semconv.incubating.ProcessIncubatingAttributes;
14-
import org.junit.jupiter.api.Nested;
1514
import org.junit.jupiter.api.Test;
16-
import org.junit.jupiter.api.TestInstance;
17-
import org.junit.jupiter.api.condition.EnabledOnJre;
18-
import org.junit.jupiter.api.condition.JRE;
19-
import org.junit.jupiter.api.extension.ExtendWith;
2015
import org.junitpioneer.jupiter.SetSystemProperty;
2116

2217
class ProcessResourceTest {
@@ -52,18 +47,4 @@ void windows() {
5247
// With Java 9+ and a compiled jar, ResourceAttributes.PROCESS_COMMAND_ARGS
5348
// will be set instead of ResourceAttributes.PROCESS_COMMAND_LINE
5449
}
55-
56-
@Nested
57-
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
58-
@ExtendWith(SecurityManagerExtension.class)
59-
@EnabledOnJre(
60-
value = {JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_16},
61-
disabledReason = "Java 17 deprecates security manager for removal")
62-
static class SecurityManagerEnabled {
63-
@Test
64-
void empty() {
65-
Attributes attributes = ProcessResource.buildResource().getAttributes();
66-
assertThat(attributes.asMap()).containsOnlyKeys(ProcessIncubatingAttributes.PROCESS_PID);
67-
}
68-
}
6950
}

instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/ProcessRuntimeResourceTest.java

-18
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,7 @@
1111
import io.opentelemetry.sdk.resources.Resource;
1212
import io.opentelemetry.semconv.SchemaUrls;
1313
import io.opentelemetry.semconv.incubating.ProcessIncubatingAttributes;
14-
import org.junit.jupiter.api.Nested;
1514
import org.junit.jupiter.api.Test;
16-
import org.junit.jupiter.api.TestInstance;
17-
import org.junit.jupiter.api.condition.EnabledOnJre;
18-
import org.junit.jupiter.api.condition.JRE;
19-
import org.junit.jupiter.api.extension.ExtendWith;
2015

2116
class ProcessRuntimeResourceTest {
2217
@Test
@@ -32,17 +27,4 @@ void shouldCreateRuntimeAttributes() {
3227
assertThat(attributes.get(ProcessIncubatingAttributes.PROCESS_RUNTIME_DESCRIPTION))
3328
.isNotBlank();
3429
}
35-
36-
@Nested
37-
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
38-
@ExtendWith(SecurityManagerExtension.class)
39-
@EnabledOnJre(
40-
value = {JRE.JAVA_8, JRE.JAVA_11, JRE.JAVA_16},
41-
disabledReason = "Java 17 deprecates security manager for removal")
42-
static class SecurityManagerEnabled {
43-
@Test
44-
void empty() {
45-
assertThat(ProcessRuntimeResource.buildResource()).isEqualTo(Resource.empty());
46-
}
47-
}
4830
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.resources;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
import io.opentelemetry.api.common.Attributes;
11+
import io.opentelemetry.sdk.resources.Resource;
12+
import io.opentelemetry.semconv.incubating.HostIncubatingAttributes;
13+
import io.opentelemetry.semconv.incubating.ProcessIncubatingAttributes;
14+
import org.junit.jupiter.api.Test;
15+
import org.junit.jupiter.api.TestInstance;
16+
import org.junit.jupiter.api.condition.EnabledOnJre;
17+
import org.junit.jupiter.api.condition.JRE;
18+
import org.junit.jupiter.api.extension.ExtendWith;
19+
20+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
21+
@ExtendWith(SecurityManagerExtension.class)
22+
@EnabledOnJre(
23+
value = {JRE.JAVA_8, JRE.JAVA_11},
24+
disabledReason = "Java 17 deprecates security manager for removal")
25+
class SecurityManagerResourceTest {
26+
27+
@Test
28+
void hostResourceTestEmpty() {
29+
Attributes attributes = HostResource.buildResource().getAttributes();
30+
assertThat(attributes.asMap()).containsOnlyKeys(HostIncubatingAttributes.HOST_NAME);
31+
}
32+
33+
@Test
34+
void osResourceEmpty() {
35+
assertThat(OsResource.buildResource()).isEqualTo(Resource.empty());
36+
}
37+
38+
@Test
39+
void processResourceEmpty() {
40+
Attributes attributes = ProcessResource.buildResource().getAttributes();
41+
assertThat(attributes.asMap()).containsOnlyKeys(ProcessIncubatingAttributes.PROCESS_PID);
42+
}
43+
44+
@Test
45+
void processRuntimeResourceEmpty() {
46+
assertThat(ProcessRuntimeResource.buildResource()).isEqualTo(Resource.empty());
47+
}
48+
}

0 commit comments

Comments
 (0)