Skip to content

Commit 39b6341

Browse files
authored
Merge pull request #3 from robsunday/jmx-scraper-impl
More tests
2 parents 8dfe174 + 350f8a9 commit 39b6341

File tree

4 files changed

+95
-5
lines changed

4 files changed

+95
-5
lines changed

jmx-scraper/src/main/java/io/opentelemetry/contrib/jmxscraper/config/JmxScraperConfigFactory.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
public class JmxScraperConfigFactory {
1717
private static final String PREFIX = "otel.";
1818
static final String SERVICE_URL = PREFIX + "jmx.service.url";
19-
static final String CUSTOM_JMX_SCRAPING_CONFIG = PREFIX + "jmx.custom.jmx.scraping.config";
19+
static final String CUSTOM_JMX_SCRAPING_CONFIG = PREFIX + "jmx.custom.scraping.config";
2020
static final String TARGET_SYSTEM = PREFIX + "jmx.target.system";
2121
static final String INTERVAL_MILLISECONDS = PREFIX + "jmx.interval.milliseconds";
2222
static final String METRICS_EXPORTER_TYPE = PREFIX + "metrics.exporter";

jmx-scraper/src/test/java/io/opentelemetry/contrib/jmxscraper/JmxScraperTest.java

+43-3
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,15 @@
55

66
package io.opentelemetry.contrib.jmxscraper;
77

8+
import static org.assertj.core.api.Assertions.assertThat;
89
import static org.assertj.core.api.Assertions.assertThatThrownBy;
910
import static org.mockito.Mockito.mock;
1011

12+
import io.opentelemetry.contrib.jmxscraper.config.ConfigurationException;
13+
import io.opentelemetry.contrib.jmxscraper.config.JmxScraperConfig;
1114
import io.opentelemetry.contrib.jmxscraper.config.JmxScraperConfigFactory;
15+
import java.io.IOException;
16+
import java.io.InputStream;
1217
import java.util.Arrays;
1318
import java.util.Collections;
1419
import java.util.List;
@@ -18,7 +23,7 @@ class JmxScraperTest {
1823
@Test
1924
void shouldThrowExceptionWhenInvalidCommandLineArgsProvided() {
2025
// Given
21-
List<String> emptyArgs = Collections.singletonList("-inexistingOption");
26+
List<String> emptyArgs = Collections.singletonList("-nonExistentOption");
2227
JmxScraperConfigFactory configFactoryMock = mock(JmxScraperConfigFactory.class);
2328

2429
// When and Then
@@ -29,11 +34,46 @@ void shouldThrowExceptionWhenInvalidCommandLineArgsProvided() {
2934
@Test
3035
void shouldThrowExceptionWhenTooManyCommandLineArgsProvided() {
3136
// Given
32-
List<String> emptyArgs = Arrays.asList("-config", "path", "-inexistingOption");
37+
List<String> args = Arrays.asList("-config", "path", "-nonExistentOption");
3338
JmxScraperConfigFactory configFactoryMock = mock(JmxScraperConfigFactory.class);
3439

3540
// When and Then
36-
assertThatThrownBy(() -> JmxScraper.createConfigFromArgs(emptyArgs, configFactoryMock))
41+
assertThatThrownBy(() -> JmxScraper.createConfigFromArgs(args, configFactoryMock))
3742
.isInstanceOf(ArgumentsParsingException.class);
3843
}
44+
45+
@Test
46+
void shouldCreateConfig_propertiesLoadedFromFile()
47+
throws ConfigurationException, ArgumentsParsingException {
48+
// Given
49+
String filePath = ClassLoader.getSystemClassLoader().getResource("validConfig.properties").getPath();
50+
List<String> args = Arrays.asList("-config", filePath);
51+
JmxScraperConfigFactory configFactory = new JmxScraperConfigFactory();
52+
53+
// When
54+
JmxScraperConfig config = JmxScraper.createConfigFromArgs(args, configFactory);
55+
56+
// Then
57+
assertThat(config).isNotNull();
58+
}
59+
60+
@Test
61+
void shouldCreateConfig_propertiesLoadedFromStdIn()
62+
throws ConfigurationException, ArgumentsParsingException, IOException {
63+
InputStream originalIn = System.in;
64+
try(InputStream stream = ClassLoader.getSystemClassLoader().getResourceAsStream("validConfig.properties")) {
65+
// Given
66+
System.setIn(stream);
67+
List<String> args = Arrays.asList("-config", "-");
68+
JmxScraperConfigFactory configFactory = new JmxScraperConfigFactory();
69+
70+
// When
71+
JmxScraperConfig config = JmxScraper.createConfigFromArgs(args, configFactory);
72+
73+
// Then
74+
assertThat(config).isNotNull();
75+
} finally {
76+
System.setIn(originalIn);
77+
}
78+
}
3979
}

jmx-scraper/src/test/java/io/opentelemetry/contrib/jmxscraper/config/JmxScraperConfigFactoryTest.java

+31-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ void shouldFailValidation_missingConfigPathAndTargetSystem() {
148148
assertThatThrownBy(() -> configFactory.createConfig(properties))
149149
.isInstanceOf(ConfigurationException.class)
150150
.hasMessage(
151-
"otel.jmx.custom.jmx.scraping.config or otel.jmx.target.system must be specified.");
151+
"otel.jmx.custom.scraping.config or otel.jmx.target.system must be specified.");
152152
}
153153

154154
@Test
@@ -180,6 +180,36 @@ void shouldFailValidation_missingOtlpEndpoint() {
180180
.hasMessage("otel.exporter.otlp.endpoint must be specified for otlp format.");
181181
}
182182

183+
@Test
184+
void shouldPassValidation_noMetricsExporterType() throws ConfigurationException {
185+
// Given
186+
JmxScraperConfigFactory configFactory = new JmxScraperConfigFactory();
187+
Properties properties = (Properties) validProperties.clone();
188+
properties.remove(JmxScraperConfigFactory.OTLP_ENDPOINT);
189+
properties.remove(JmxScraperConfigFactory.METRICS_EXPORTER_TYPE);
190+
191+
// When
192+
JmxScraperConfig config = configFactory.createConfig(properties);
193+
194+
// Then
195+
assertThat(config).isNotNull();
196+
}
197+
198+
@Test
199+
void shouldPassValidation_nonOtlpMetricsExporterType() throws ConfigurationException {
200+
// Given
201+
JmxScraperConfigFactory configFactory = new JmxScraperConfigFactory();
202+
Properties properties = (Properties) validProperties.clone();
203+
properties.remove(JmxScraperConfigFactory.OTLP_ENDPOINT);
204+
properties.setProperty(JmxScraperConfigFactory.METRICS_EXPORTER_TYPE, "logging");
205+
206+
// When
207+
JmxScraperConfig config = configFactory.createConfig(properties);
208+
209+
// Then
210+
assertThat(config).isNotNull();
211+
}
212+
183213
@Test
184214
void shouldFailValidation_negativeInterval() {
185215
// Given
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
otel.jmx.service.url=service:jmx:rmi:///jndi/rmi://myhost:12345/jmxrmi
2+
otel.jmx.custom.scraping.config=/my/scraping-config.yaml
3+
otel.jmx.target.system=jvm,cassandra
4+
otel.jmx.interval.milliseconds=20000
5+
otel.metrics.exporter=otlp
6+
otel.metric.export.interval=1000
7+
otel.exporter.otlp.endpoint=https://myotlpendpoint
8+
otel.jmx.username=myUser\n\
9+
name
10+
otel.jmx.password=myPassw\\ord
11+
otel.jmx.remote.profile=SASL/DIG\EST-MD5
12+
otel.jmx.realm=myRealm
13+
otel.resource.attributes=one=two,three=four
14+
javax.net.ssl.keyStore=/my/key/store
15+
javax.net.ssl.keyStorePassword=abc123
16+
javax.net.ssl.keyStoreType=JKS
17+
javax.net.ssl.trustStore=/my/trust/store
18+
javax.net.ssl.trustStorePassword=def456
19+
javax.net.ssl.trustStoreType=JKS
20+
otel.jmx.aggregate.across.mbeans=true

0 commit comments

Comments
 (0)