Skip to content

Commit bad1e7c

Browse files
committed
add some basic testing
1 parent b9a1d90 commit bad1e7c

File tree

3 files changed

+51
-2
lines changed

3 files changed

+51
-2
lines changed

instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/JmxTelemetry.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,4 @@ public void startRemote(Supplier<List<? extends MBeanServerConnection>> connecti
3535
public void startLocal() {
3636
service.startLocal(metricConfiguration);
3737
}
38-
3938
}

instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/JmxTelemetryBuilder.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ public class JmxTelemetryBuilder {
3939
*/
4040
@CanIgnoreReturnValue
4141
public JmxTelemetryBuilder beanDiscoveryDelay(long delayMs) {
42+
if (delayMs < 0) {
43+
throw new IllegalArgumentException("delay must be greater than 0");
44+
}
4245
this.discoveryDelayMs = delayMs;
4346
return this;
4447
}
@@ -62,7 +65,8 @@ public JmxTelemetryBuilder addClasspathRules(String target) {
6265
RuleParser parserInstance = RuleParser.get();
6366
parserInstance.addMetricDefsTo(metricConfiguration, inputStream, target);
6467
} catch (Exception e) {
65-
throw new IllegalArgumentException("Unable to load JMX rules from classpath: " + yamlResource, e);
68+
throw new IllegalArgumentException(
69+
"Unable to load JMX rules from classpath: " + yamlResource, e);
6670
}
6771
return this;
6872
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.instrumentation.jmx;
7+
8+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
9+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
10+
11+
import io.opentelemetry.api.OpenTelemetry;
12+
import java.nio.file.Files;
13+
import java.nio.file.Path;
14+
import org.junit.jupiter.api.Test;
15+
import org.junit.jupiter.api.io.TempDir;
16+
17+
public class JmxTelemetryTest {
18+
19+
@Test
20+
void createDefault() {
21+
JmxTelemetryBuilder builder = JmxTelemetry.builder(OpenTelemetry.noop());
22+
assertThat(builder.build()).isNotNull();
23+
}
24+
25+
@Test
26+
void missingClasspathTarget() {
27+
JmxTelemetryBuilder builder = JmxTelemetry.builder(OpenTelemetry.noop());
28+
assertThatThrownBy(() -> builder.addClasspathRules("should-not-exist"))
29+
.isInstanceOf(IllegalArgumentException.class);
30+
}
31+
32+
@Test
33+
void invalidExternalYaml(@TempDir Path dir) throws Exception {
34+
Path invalid = Files.createTempFile(dir, "invalid", ".yaml");
35+
JmxTelemetryBuilder builder = JmxTelemetry.builder(OpenTelemetry.noop());
36+
assertThatThrownBy(() -> builder.addCustomRules(invalid))
37+
.isInstanceOf(IllegalArgumentException.class);
38+
}
39+
40+
@Test
41+
void invalidStartDelay() {
42+
JmxTelemetryBuilder builder = JmxTelemetry.builder(OpenTelemetry.noop());
43+
assertThatThrownBy(() -> builder.beanDiscoveryDelay(-1))
44+
.isInstanceOf(IllegalArgumentException.class);
45+
}
46+
}

0 commit comments

Comments
 (0)