diff --git a/jaeger-core/src/main/java/io/jaegertracing/Configuration.java b/jaeger-core/src/main/java/io/jaegertracing/Configuration.java index 976ee7f3d..fd50719ed 100644 --- a/jaeger-core/src/main/java/io/jaegertracing/Configuration.java +++ b/jaeger-core/src/main/java/io/jaegertracing/Configuration.java @@ -186,11 +186,15 @@ public Configuration(String serviceName) { * @return Configuration object from environmental variables */ public static Configuration fromEnv() { - return new Configuration(getProperty(JAEGER_SERVICE_NAME)) - .withTracerTags(tracerTagsFromEnv()) - .withReporter(ReporterConfiguration.fromEnv()) - .withSampler(SamplerConfiguration.fromEnv()) - .withCodec(CodecConfiguration.fromEnv()); + return Configuration.fromEnv(getProperty(JAEGER_SERVICE_NAME)); + } + + public static Configuration fromEnv(String serviceName) { + return new Configuration(serviceName) + .withTracerTags(tracerTagsFromEnv()) + .withReporter(ReporterConfiguration.fromEnv()) + .withSampler(SamplerConfiguration.fromEnv()) + .withCodec(CodecConfiguration.fromEnv()); } public JaegerTracer.Builder getTracerBuilder() { diff --git a/jaeger-core/src/test/java/io/jaegertracing/ConfigurationTest.java b/jaeger-core/src/test/java/io/jaegertracing/ConfigurationTest.java index 31d6ed2d4..c2472de62 100644 --- a/jaeger-core/src/test/java/io/jaegertracing/ConfigurationTest.java +++ b/jaeger-core/src/test/java/io/jaegertracing/ConfigurationTest.java @@ -33,14 +33,11 @@ import io.jaegertracing.internal.samplers.RateLimitingSampler; import io.jaegertracing.spi.Codec; import io.jaegertracing.spi.Sampler; -import io.opentracing.noop.NoopTracerFactory; import io.opentracing.propagation.Format; import io.opentracing.propagation.Format.Builtin; import io.opentracing.propagation.TextMap; import io.opentracing.propagation.TextMapExtractAdapter; import io.opentracing.propagation.TextMapInjectAdapter; -import io.opentracing.util.GlobalTracer; -import java.lang.reflect.Field; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -74,18 +71,25 @@ public void clearProperties() throws NoSuchFieldException, IllegalAccessExceptio System.clearProperty(Configuration.JAEGER_PROPAGATION); System.clearProperty(TEST_PROPERTY); - - // Reset opentracing's global tracer - Field field = GlobalTracer.class.getDeclaredField("tracer"); - field.setAccessible(true); - field.set(null, NoopTracerFactory.create()); } @Test public void testFromEnv() { System.setProperty(Configuration.JAEGER_SERVICE_NAME, "Test"); assertNotNull(Configuration.fromEnv().getTracer()); - assertFalse(GlobalTracer.isRegistered()); + } + + @Test + public void testFromEnvWithExplicitServiceName() { + // prepare + String serviceName = "testFromEnvWithExplicitServiceName"; + System.setProperty(Configuration.JAEGER_SERVICE_NAME, "not" + serviceName); + + // test + JaegerTracer tracer = Configuration.fromEnv(serviceName).getTracer(); + + // check + assertEquals(serviceName, tracer.getServiceName()); } @Test