Skip to content

Commit 01b7651

Browse files
author
Sergei Malafeev
authored
Allow users to disable metrics via environment variable: 'LS_METRICS_ENABLED=false' (#154)
1 parent fb88a7c commit 01b7651

File tree

5 files changed

+76
-11
lines changed

5 files changed

+76
-11
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<a name="Pending Release"></a>
22
## [Pending Release](https://github.com/lightstep/lightstep-tracer-java-common/compare/0.30.0...master)
3+
* Allow users to disable metrics via environment variable: `LS_METRICS_ENABLED=false`
34

45
<a name="0.30.0"></a>
56
## [0.30.0](https://github.com/lightstep/lightstep-tracer-java-common/compare/0.21.0...0.30.0)

common/pom.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,15 @@
7070

7171
<!-- Test Dependencies -->
7272
<dependency>
73-
<groupId>junit</groupId>
74-
<artifactId>junit</artifactId>
75-
<version>4.12</version>
73+
<groupId>org.powermock</groupId>
74+
<artifactId>powermock-module-junit4</artifactId>
75+
<version>2.0.7</version>
7676
<scope>test</scope>
7777
</dependency>
7878
<dependency>
79-
<groupId>org.mockito</groupId>
80-
<artifactId>mockito-core</artifactId>
81-
<version>2.18.3</version>
79+
<groupId>org.powermock</groupId>
80+
<artifactId>powermock-api-mockito2</artifactId>
81+
<version>2.0.7</version>
8282
<scope>test</scope>
8383
</dependency>
8484
</dependencies>

common/src/main/java/com/lightstep/tracer/shared/LightStepConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ private Metrics() {
3333

3434
static final int DEFAULT_INTERVAL_SECS = 30;
3535
static final String DEFAULT_URL = "https://ingest.lightstep.com:443/metrics";
36+
static final String LS_METRICS_ENABLED = "LS_METRICS_ENABLED";
37+
static final boolean DEFAULT_DISABLE_METRICS = false;
3638
}
3739

3840
public final class Tags {

common/src/main/java/com/lightstep/tracer/shared/Options.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ public static class OptionsBuilder {
214214
private Map<Format<?>, Propagator> propagators = new HashMap<>();
215215
private boolean disableMetaEventLogging = false;
216216
private String metricsUrl = LightStepConstants.Metrics.DEFAULT_URL;
217-
private boolean disableMetricsReporting = false;
217+
private boolean disableMetricsReporting = getEnvMetricsDisabled();
218218
private CollectorClient collectorClient;
219219
private String grpcCollectorTarget;
220220
private boolean grpcRoundRobin = false;
@@ -249,6 +249,14 @@ public OptionsBuilder(Options options) {
249249
this.okhttpDns = options.okhttpDns;
250250
}
251251

252+
private static boolean getEnvMetricsDisabled() {
253+
String metricEnabled = System.getenv(LightStepConstants.Metrics.LS_METRICS_ENABLED);
254+
if (metricEnabled != null) {
255+
return "false".equals(metricEnabled);
256+
}
257+
return LightStepConstants.Metrics.DEFAULT_DISABLE_METRICS;
258+
}
259+
252260
/**
253261
* Adds a user defined {@link Propagator} to be used during
254262
* {@link io.opentracing.Tracer#inject} and {@link io.opentracing.Tracer#extract} for

common/src/test/java/com/lightstep/tracer/shared/OptionsTest.java

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static com.lightstep.tracer.shared.LightStepConstants.Tags.COMPONENT_NAME_KEY;
44
import static com.lightstep.tracer.shared.LightStepConstants.Tags.GUID_KEY;
5-
import static com.lightstep.tracer.shared.LightStepConstants.Tags.LEGACY_COMPONENT_NAME_KEY;
65
import static com.lightstep.tracer.shared.LightStepConstants.Collector.DEFAULT_PLAINTEXT_PORT;
76
import static com.lightstep.tracer.shared.LightStepConstants.Collector.DEFAULT_SECURE_PORT;
87
import static com.lightstep.tracer.shared.LightStepConstants.Collector.PATH;
@@ -18,10 +17,9 @@
1817
import static org.junit.Assert.assertNull;
1918
import static org.junit.Assert.assertSame;
2019
import static org.junit.Assert.assertTrue;
20+
import static org.mockito.ArgumentMatchers.anyString;
2121

22-
import io.opentracing.ScopeManager;
2322
import io.opentracing.propagation.Format.Builtin;
24-
import io.opentracing.propagation.TextMap;
2523
import io.opentracing.util.ThreadLocalScopeManager;
2624
import java.net.InetAddress;
2725
import java.util.Collections;
@@ -30,7 +28,16 @@
3028
import com.lightstep.tracer.shared.Options.OkHttpDns;
3129

3230
import org.junit.Test;
33-
31+
import org.junit.runner.RunWith;
32+
import org.mockito.Mockito;
33+
import org.mockito.invocation.InvocationOnMock;
34+
import org.mockito.stubbing.Answer;
35+
import org.powermock.api.mockito.PowerMockito;
36+
import org.powermock.core.classloader.annotations.PrepareForTest;
37+
import org.powermock.modules.junit4.PowerMockRunner;
38+
39+
@RunWith(PowerMockRunner.class)
40+
@PrepareForTest({Options.class})
3441
public class OptionsTest {
3542
private static final String ACCESS_TOKEN = "my-access-token";
3643
private static final String SERVICE_VERSION = "v0.1.0";
@@ -51,6 +58,17 @@ public List<InetAddress> lookup(String hostname) {
5158
}
5259
};
5360

61+
private void mockSystem() {
62+
PowerMockito.mockStatic(System.class);
63+
Mockito.when(System.getProperty(anyString(), anyString())).thenAnswer(
64+
new Answer<String>() {
65+
@Override
66+
public String answer(InvocationOnMock invocationOnMock) {
67+
return invocationOnMock.getArgument(1);
68+
}
69+
});
70+
}
71+
5472
/**
5573
* Basic test of OptionsBuilder that ensures if I set everything explicitly, that these values
5674
* are propagated to the Options object.
@@ -256,6 +274,42 @@ public void testOptionsBuilder_defaultDisableMetricsReporting() throws Exception
256274
assertFalse(options.disableMetricsReporting);
257275
}
258276

277+
@Test
278+
public void testOptionsBuilder_disableMetricsReporting_fromEnvVariable_True() throws Exception {
279+
mockSystem();
280+
Mockito.when(System.getenv(LightStepConstants.Metrics.LS_METRICS_ENABLED))
281+
.thenReturn("true");
282+
283+
Options options = new Options.OptionsBuilder()
284+
.build();
285+
286+
assertFalse(options.disableMetricsReporting);
287+
}
288+
289+
@Test
290+
public void testOptionsBuilder_disableMetricsReporting_fromEnvVariable_False() throws Exception {
291+
mockSystem();
292+
Mockito.when(System.getenv(LightStepConstants.Metrics.LS_METRICS_ENABLED))
293+
.thenReturn("false");
294+
295+
Options options = new Options.OptionsBuilder()
296+
.build();
297+
298+
assertTrue(options.disableMetricsReporting);
299+
}
300+
301+
@Test
302+
public void testOptionsBuilder_disableMetricsReporting_fromEnvVariable_NotBoolean() throws Exception {
303+
mockSystem();
304+
Mockito.when(System.getenv(LightStepConstants.Metrics.LS_METRICS_ENABLED))
305+
.thenReturn("not-boolean");
306+
307+
Options options = new Options.OptionsBuilder()
308+
.build();
309+
310+
assertFalse(options.disableMetricsReporting);
311+
}
312+
259313
@Test
260314
public void testOptionsBuilder_hostname_notSet() throws Exception {
261315
Options options = new Options.OptionsBuilder().build();

0 commit comments

Comments
 (0)