From 4253325bd85c233fa681012ba6db82c25bd699c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juraci=20Paix=C3=A3o=20Kr=C3=B6hling?= Date: Thu, 5 Jul 2018 16:03:55 +0200 Subject: [PATCH] Add jaeger-client module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Juraci Paixão Kröhling --- README.md | 10 +++-- jaeger-client/README.md | 28 +++++++++++++ jaeger-client/build.gradle | 15 +++++++ .../java/io/jaegertracing/client/Version.java | 32 +++++++++++++++ .../io/jaegertracing/client/VersionTest.java | 41 +++++++++++++++++++ .../jaegertracing/internal/JaegerTracer.java | 6 ++- settings.gradle | 1 + 7 files changed, 128 insertions(+), 5 deletions(-) create mode 100644 jaeger-client/README.md create mode 100644 jaeger-client/build.gradle create mode 100644 jaeger-client/src/main/java/io/jaegertracing/client/Version.java create mode 100644 jaeger-client/src/test/java/io/jaegertracing/client/VersionTest.java diff --git a/README.md b/README.md index 6c533ab62..e2a608976 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,9 @@ Please see [CONTRIBUTING.md](CONTRIBUTING.md). Click through for more detailed docs on specific modules. + * [jaeger-client](./jaeger-client): the module that instrumented applications should usually include * [jaeger-core](./jaeger-core): the core implementation of the OpenTracing API [![Java Docs][javadoc-badge]][javadoc] - * [jaeger-thrift](./jaeger-thrift): the main dependency to include in your project, sending data to the backend using Thrift (default) + * [jaeger-thrift](./jaeger-thrift): set of components that send data to the backend ## Add-on Modules @@ -34,16 +35,17 @@ Follow these [instructions][sonatype-snapshot-instructions] to add the snapshot **Please use the latest version:** [![Released Version][maven-img]][maven] -In the usual case, you just need to include the dependency with the concrete components sending data to the backend. Currently, -the only such dependency is `jaeger-thrift`. It transitively brings the `jaeger-core` dependency. +In the usual case, you just need to include the following dependency to your project: ```xml io.jaegertracing - jaeger-thrift + jaeger-client $jaegerVersion ``` +This will bring a concrete sender, such as `jaeger-thrift`, as well as the `jaeger-tracerresolver` and `jaeger-core`. + ### Thrift version conflicts The Jaeger Java Client uses `org.apache.thrift:libthrift:0.11.0`. By default, declaring a dependency on the `jaeger-thrift` module will bring a shaded version of Thrift (and others), making it safe to use your own versions of diff --git a/jaeger-client/README.md b/jaeger-client/README.md new file mode 100644 index 000000000..8ce6d222f --- /dev/null +++ b/jaeger-client/README.md @@ -0,0 +1,28 @@ +[![Released Version][maven-img]][maven] + +# Client +This module brings the necessary modules in order for an instrumented application to start +capturing spans. It currently brings: + +* `jaeger-core` +* `jaeger-thrift` +* `jaeger-tracerresolver` + +With this set, an instrumented application using OpenTracing's TracerResolver can just use +the Jaeger Java Client without any hard code dependency, configuring it via environment variables. + +This set might change without warning in the future, so, this module is suitable only for applications +with a simple usage of the Jaeger Tracer. If you require access to classes inside any of those modules, +make sure to add such module as a direct dependency to your module. + +## Maven coordinates +```xml + + io.jaegertracing + jaeger-client + $jaegerVersion + +``` + +[maven-img]: https://img.shields.io/maven-central/v/io.jaegertracing/jaeger-client.svg?maxAge=2000 +[maven]: http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22io.jaegertracing%22%20a%3A%22jaeger-client%22 diff --git a/jaeger-client/build.gradle b/jaeger-client/build.gradle new file mode 100644 index 000000000..3b89fcb00 --- /dev/null +++ b/jaeger-client/build.gradle @@ -0,0 +1,15 @@ +description = 'Convenience module to be used by instrumented applications' + +dependencies { + // otherwise, we get the non-shaded version, which will fail at runtime due to missing classes + compile group: 'io.jaegertracing', name: 'jaeger-thrift', version: developmentVersion + + // for the other projects, we can add the dependency on the projects themselves + compile project(':jaeger-core') + compile project(':jaeger-thrift') + compile project(':jaeger-tracerresolver') + + testCompile group: 'junit', name: 'junit', version: junitVersion + testCompile group: 'org.apache.thrift', name: 'libthrift', version: apacheThriftVersion + testCompile group: 'com.squareup.okhttp3', name: 'okhttp', version: okhttpVersion +} diff --git a/jaeger-client/src/main/java/io/jaegertracing/client/Version.java b/jaeger-client/src/main/java/io/jaegertracing/client/Version.java new file mode 100644 index 000000000..14bfee0df --- /dev/null +++ b/jaeger-client/src/main/java/io/jaegertracing/client/Version.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018, The Jaeger Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package io.jaegertracing.client; + +import io.jaegertracing.internal.JaegerTracer; + +/** + * Exposes the Jaeger Client version to consuming applications. + */ +public class Version { + private Version() { + } + + /** + * @return the version string for the Jaeger Client, like "0.30.1" + */ + public static String get() { + return JaegerTracer.getVersionFromProperties(); + } +} diff --git a/jaeger-client/src/test/java/io/jaegertracing/client/VersionTest.java b/jaeger-client/src/test/java/io/jaegertracing/client/VersionTest.java new file mode 100644 index 000000000..619ac734f --- /dev/null +++ b/jaeger-client/src/test/java/io/jaegertracing/client/VersionTest.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2018, The Jaeger Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package io.jaegertracing.client; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import io.jaegertracing.Configuration; +import io.jaegertracing.internal.JaegerTracer; +import org.junit.Test; + +public class VersionTest { + + @Test + public void testVersionGet() { + assertEquals( + "Version should be the same as the properties file", + JaegerTracer.getVersionFromProperties(), + Version.get() + ); + + assertNotEquals( + "The version from the tracer should not be the same string as Version.get()", + new Configuration("testVersionGet").getTracer().getVersion(), + Version.get() + ); + } + +} diff --git a/jaeger-core/src/main/java/io/jaegertracing/internal/JaegerTracer.java b/jaeger-core/src/main/java/io/jaegertracing/internal/JaegerTracer.java index 2d1726275..1c32e0504 100644 --- a/jaeger-core/src/main/java/io/jaegertracing/internal/JaegerTracer.java +++ b/jaeger-core/src/main/java/io/jaegertracing/internal/JaegerTracer.java @@ -600,6 +600,10 @@ public static String checkValidServiceName(String serviceName) { } private static String loadVersion() { + return "Java-" + getVersionFromProperties(); + } + + public static String getVersionFromProperties() { String version; try { InputStream is = JaegerTracer.class.getResourceAsStream("jaeger.properties"); @@ -616,7 +620,7 @@ private static String loadVersion() { if (version == null) { throw new RuntimeException("Cannot read " + Constants.JAEGER_CLIENT_VERSION_TAG_KEY + " from jaeger.properties"); } - return "Java-" + version; + return version; } String getHostName() { diff --git a/settings.gradle b/settings.gradle index 32e554f0d..6d401207f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,3 +5,4 @@ include 'jaeger-crossdock' include 'jaeger-thrift' include 'jaeger-tracerresolver' include 'jaeger-micrometer' +include 'jaeger-client'