You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/01/09 07:39:56 UTC

[incubator-servicecomb-java-chassis] 04/04: SCB-172 support both zipkin v1/v2 http API

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-java-chassis.git

commit 9c4416d69c8ba8db146806ca1ced3876b3a0c411
Author: Yang, Bo <ya...@huawei.com>
AuthorDate: Mon Jan 8 18:16:01 2018 +0800

    SCB-172 support both zipkin v1/v2 http API
    
    Add an option "apiVersion" under tracing.collector to allow user to
    specify the version of the zipkin http API. Possible values are
    "v1" and "v2". The default is "v2". Default value will be used if the
    user set option is invalid.
---
 .../common/base/ServiceCombConstants.java          |  8 +++++++-
 .../tracing/zipkin/TracingConfiguration.java       | 22 +++++++++++++++++++++-
 .../servicecomb/tests/tracing/TracingTestBase.java |  6 ++----
 3 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/base/ServiceCombConstants.java b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/base/ServiceCombConstants.java
index 00c2cbd..372da96 100644
--- a/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/base/ServiceCombConstants.java
+++ b/foundations/foundation-common/src/main/java/io/servicecomb/foundation/common/base/ServiceCombConstants.java
@@ -39,9 +39,15 @@ public interface ServiceCombConstants {
 
   String CONFIG_TRACING_COLLECTOR_ADDRESS = "servicecomb.tracing.collector.address";
 
+  String CONFIG_TRACING_COLLECTOR_API_V1 = "v1";
+
+  String CONFIG_TRACING_COLLECTOR_API_V2 = "v2";
+
+  String CONFIG_TRACING_COLLECTOR_API_VERSION = "servicecomb.tracing.collector.apiVersion";
+
   String CONFIG_TRACING_ENABLED_KEY = "servicecomb.tracing.enabled";
 
-  String CONFIG_TRACING_COLLECTOR_PATH = "/api/v2/spans";
+  String CONFIG_TRACING_COLLECTOR_PATH = "/api/{0}/spans";
 
   String DEFAULT_TRACING_COLLECTOR_ADDRESS = "http://127.0.0.1:9411";
 
diff --git a/handlers/handler-tracing-zipkin/src/main/java/io/servicecomb/tracing/zipkin/TracingConfiguration.java b/handlers/handler-tracing-zipkin/src/main/java/io/servicecomb/tracing/zipkin/TracingConfiguration.java
index 000d5aa..57ed67d 100644
--- a/handlers/handler-tracing-zipkin/src/main/java/io/servicecomb/tracing/zipkin/TracingConfiguration.java
+++ b/handlers/handler-tracing-zipkin/src/main/java/io/servicecomb/tracing/zipkin/TracingConfiguration.java
@@ -19,19 +19,26 @@ package io.servicecomb.tracing.zipkin;
 
 import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_QUALIFIED_MICROSERVICE_NAME_KEY;
 import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_ADDRESS;
+import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_API_VERSION;
 import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_PATH;
+import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_API_V1;
+import static io.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_TRACING_COLLECTOR_API_V2;
 import static io.servicecomb.foundation.common.base.ServiceCombConstants.DEFAULT_MICROSERVICE_NAME;
 import static io.servicecomb.foundation.common.base.ServiceCombConstants.DEFAULT_TRACING_COLLECTOR_ADDRESS;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import java.text.MessageFormat;
+
 import brave.Tracing;
 import brave.context.log4j12.MDCCurrentTraceContext;
 import brave.http.HttpTracing;
 import brave.propagation.CurrentTraceContext;
 import io.servicecomb.config.DynamicProperties;
+
 import zipkin2.Span;
+import zipkin2.codec.SpanBytesEncoder;
 import zipkin2.reporter.AsyncReporter;
 import zipkin2.reporter.Reporter;
 import zipkin2.reporter.Sender;
@@ -39,20 +46,33 @@ import zipkin2.reporter.okhttp3.OkHttpSender;
 
 @Configuration
 class TracingConfiguration {
+  private String apiVersion = CONFIG_TRACING_COLLECTOR_API_V2;
 
   @Bean
   Sender sender(DynamicProperties dynamicProperties) {
+    apiVersion = dynamicProperties.getStringProperty(CONFIG_TRACING_COLLECTOR_API_VERSION,
+        CONFIG_TRACING_COLLECTOR_API_V2).toLowerCase();
+    // use default value if the user set value is invalid
+    if (apiVersion.compareTo(CONFIG_TRACING_COLLECTOR_API_V1) != 0){
+      apiVersion = CONFIG_TRACING_COLLECTOR_API_V2;
+    }
+
+    String path = MessageFormat.format(CONFIG_TRACING_COLLECTOR_PATH, apiVersion);
     return OkHttpSender.create(
         dynamicProperties.getStringProperty(
             CONFIG_TRACING_COLLECTOR_ADDRESS,
             DEFAULT_TRACING_COLLECTOR_ADDRESS)
             .trim()
             .replaceAll("/+$", "")
-            .concat(CONFIG_TRACING_COLLECTOR_PATH));
+            .concat(path));
   }
 
   @Bean
   Reporter<Span> zipkinReporter(Sender sender) {
+    if (apiVersion.compareTo(CONFIG_TRACING_COLLECTOR_API_V1) == 0){
+      return AsyncReporter.builder(sender).build(SpanBytesEncoder.JSON_V1);
+    }
+
     return AsyncReporter.builder(sender).build();
   }
 
diff --git a/integration-tests/test-common/src/test/java/io/servicecomb/tests/tracing/TracingTestBase.java b/integration-tests/test-common/src/test/java/io/servicecomb/tests/tracing/TracingTestBase.java
index a5350cd..7a29363 100644
--- a/integration-tests/test-common/src/test/java/io/servicecomb/tests/tracing/TracingTestBase.java
+++ b/integration-tests/test-common/src/test/java/io/servicecomb/tests/tracing/TracingTestBase.java
@@ -96,10 +96,8 @@ public class TracingTestBase {
         .filter(span -> span.tags() != null)
         .map(span -> span.tags().entrySet())
         .flatMap(Collection::stream)
-        .filter(span -> "call.path".equals(span.getKey()) || "http.path".equals(span.getKey()) || "http.status_code"
-            .equals
-            (span
-        .getKey()))
+        .filter(span -> "call.path".equals(span.getKey()) || "http.path".equals(span.getKey())
+            || "http.status_code".equals(span.getKey()))
         .filter(span -> span.getValue() != null)
         .map(annotation -> new String(annotation.getValue()))
         .distinct()

-- 
To stop receiving notification emails like this one, please contact
"commits@servicecomb.apache.org" <co...@servicecomb.apache.org>.