From 4dab082c3c7a16a30a1513c336c8d08c718c504a Mon Sep 17 00:00:00 2001 From: wusheng Date: Sat, 18 Mar 2017 22:51:51 +0800 Subject: [PATCH] Use gson replace protobuf in serialization. Build as small json as possible.(not finished yet.) --- pom.xml | 6 ++ .../skywalking-collector-commons/pom.xml | 7 +- .../serializer/TraceSegmentSerializer.java | 42 ---------- .../collector/worker/StartUpTestCase.java | 43 +++++----- skywalking-commons/skywalking-trace/pom.xml | 6 -- .../com/a/eye/skywalking/trace/LogData.java | 47 ++--------- .../java/com/a/eye/skywalking/trace/Span.java | 77 +++++------------ .../trace/TraceId/DistributedTraceId.java | 25 ++++++ .../a/eye/skywalking/trace/TraceSegment.java | 84 +++++-------------- .../eye/skywalking/trace/TraceSegmentRef.java | 28 +++---- .../src/main/proto/trace.proto | 41 --------- .../trace/TraceSegmentTestCase.java | 12 ++- 12 files changed, 122 insertions(+), 296 deletions(-) delete mode 100644 skywalking-collector/skywalking-collector-commons/src/main/java/com/a/eye/skywalking/collector/commons/serializer/TraceSegmentSerializer.java delete mode 100644 skywalking-commons/skywalking-trace/src/main/proto/trace.proto diff --git a/pom.xml b/pom.xml index 917382703a..68da304bd7 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,12 @@ + + com.google.code.gson + gson + 2.8.0 + + junit junit diff --git a/skywalking-collector/skywalking-collector-commons/pom.xml b/skywalking-collector/skywalking-collector-commons/pom.xml index 0319fdedf2..7716b3b729 100644 --- a/skywalking-collector/skywalking-collector-commons/pom.xml +++ b/skywalking-collector/skywalking-collector-commons/pom.xml @@ -23,10 +23,5 @@ skywalking-trace ${project.version} - - com.google.code.gson - gson - 2.8.0 - - \ No newline at end of file + diff --git a/skywalking-collector/skywalking-collector-commons/src/main/java/com/a/eye/skywalking/collector/commons/serializer/TraceSegmentSerializer.java b/skywalking-collector/skywalking-collector-commons/src/main/java/com/a/eye/skywalking/collector/commons/serializer/TraceSegmentSerializer.java deleted file mode 100644 index 04712504a2..0000000000 --- a/skywalking-collector/skywalking-collector-commons/src/main/java/com/a/eye/skywalking/collector/commons/serializer/TraceSegmentSerializer.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.a.eye.skywalking.collector.commons.serializer; - -import akka.serialization.JSerializer; -import com.a.eye.skywalking.logging.ILog; -import com.a.eye.skywalking.logging.LogManager; -import com.a.eye.skywalking.trace.TraceSegment; -import com.a.eye.skywalking.trace.proto.SegmentMessage; -import com.google.protobuf.InvalidProtocolBufferException; - -/** - * @author pengys5 - */ -public class TraceSegmentSerializer extends JSerializer { - private static ILog logger = LogManager.getLogger(TraceSegmentSerializer.class); - - @Override - public boolean includeManifest() { - return false; - } - - @Override - public int identifier() { - return 30; - } - - @Override - public byte[] toBinary(Object o) { - TraceSegment traceSegment = (TraceSegment) o; - return traceSegment.serialize().toByteArray(); - } - - @Override - public Object fromBinaryJava(byte[] bytes, Class manifest) { - TraceSegment traceSegment = null; - try { - traceSegment = new TraceSegment(SegmentMessage.parseFrom(bytes)); - } catch (InvalidProtocolBufferException e) { - logger.warn("Can't covert message from byte[] to SegmentMessage"); - } - return traceSegment; - } -} diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/StartUpTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/StartUpTestCase.java index 53548da5e0..417310df4b 100644 --- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/StartUpTestCase.java +++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/StartUpTestCase.java @@ -9,9 +9,6 @@ import com.a.eye.skywalking.collector.worker.receiver.TraceSegmentReceiver; import com.a.eye.skywalking.collector.worker.storage.EsClient; import com.a.eye.skywalking.sniffer.mock.trace.TraceSegmentBuilderFactory; import com.a.eye.skywalking.trace.TraceSegment; -import com.a.eye.skywalking.trace.proto.SegmentMessage; -import com.a.eye.skywalking.trace.proto.SegmentRefMessage; -import com.a.eye.skywalking.trace.tag.Tags; import com.typesafe.config.Config; import com.typesafe.config.ConfigFactory; @@ -36,25 +33,25 @@ public class StartUpTestCase { TraceSegment dubboClientData = TraceSegmentBuilderFactory.INSTANCE.traceOf_Tomcat_DubboClient(); - SegmentMessage.Builder clientBuilder = dubboClientData.serialize().toBuilder(); - clientBuilder.setApplicationCode("Tomcat_DubboClient"); - - dubboClientData = new TraceSegment(clientBuilder.build()); - - TraceSegment dubboServerData = TraceSegmentBuilderFactory.INSTANCE.traceOf_DubboServer_MySQL(); - - SegmentMessage serializeServer = dubboServerData.serialize(); - SegmentMessage.Builder builder = serializeServer.toBuilder(); - - SegmentRefMessage.Builder builderRef = builder.getRefs(0).toBuilder(); - builderRef.setApplicationCode(dubboClientData.getApplicationCode()); - - - builderRef.setPeerHost(Tags.PEER_HOST.get(dubboClientData.getSpans().get(1))); - - builder.setApplicationCode("DubboServer_MySQL"); - builder.addRefs(builderRef); - dubboServerData = new TraceSegment(builder.build()); +// SegmentMessage.Builder clientBuilder = dubboClientData.serialize().toBuilder(); +// clientBuilder.setApplicationCode("Tomcat_DubboClient"); +// +// dubboClientData = new TraceSegment(clientBuilder.build()); +// +// TraceSegment dubboServerData = TraceSegmentBuilderFactory.INSTANCE.traceOf_DubboServer_MySQL(); +// +// SegmentMessage serializeServer = dubboServerData.serialize(); +// SegmentMessage.Builder builder = serializeServer.toBuilder(); +// +// SegmentRefMessage.Builder builderRef = builder.getRefs(0).toBuilder(); +// builderRef.setApplicationCode(dubboClientData.getApplicationCode()); +// +// +// builderRef.setPeerHost(Tags.PEER_HOST.get(dubboClientData.getSpans().get(1))); +// +// builder.setApplicationCode("DubboServer_MySQL"); +// builder.addRefs(builderRef); +// dubboServerData = new TraceSegment(builder.build()); Thread.sleep(5000); @@ -62,7 +59,7 @@ public class StartUpTestCase { for (int i = 0; i < 100; i++) { selection.tell(dubboClientData, ActorRef.noSender()); - selection.tell(dubboServerData, ActorRef.noSender()); +// selection.tell(dubboServerData, ActorRef.noSender()); Thread.sleep(200); } diff --git a/skywalking-commons/skywalking-trace/pom.xml b/skywalking-commons/skywalking-trace/pom.xml index 553f1e9349..cce9e99032 100644 --- a/skywalking-commons/skywalking-trace/pom.xml +++ b/skywalking-commons/skywalking-trace/pom.xml @@ -17,12 +17,6 @@ skywalking-util ${project.version} - - - com.google.protobuf - protobuf-java - 3.1.0 - diff --git a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/LogData.java b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/LogData.java index d689947f94..b50468bdc1 100644 --- a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/LogData.java +++ b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/LogData.java @@ -1,11 +1,8 @@ package com.a.eye.skywalking.trace; -import com.a.eye.skywalking.api.util.StringUtil; -import com.a.eye.skywalking.trace.proto.KeyValue; -import com.a.eye.skywalking.trace.proto.LogDataMessage; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; import java.util.Collections; -import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -14,7 +11,12 @@ import java.util.Map; * Created by wusheng on 2017/2/17. */ public class LogData { + @Expose + @SerializedName(value="ti") private long time; + + @Expose + @SerializedName(value="fi") private Map fields; LogData(long time, Map fields) { @@ -25,9 +27,7 @@ public class LogData { this.fields = fields; } - LogData(LogDataMessage message){ - deserialize(message); - } + public LogData(){} public long getTime() { return time; @@ -37,35 +37,4 @@ public class LogData { return Collections.unmodifiableMap(fields); } - public LogDataMessage serialize() { - LogDataMessage.Builder logDataBuilder = LogDataMessage.newBuilder(); - logDataBuilder.setTime(time); - - if(fields != null){ - for (Map.Entry entry : fields.entrySet()) { - KeyValue.Builder logEntryBuilder = KeyValue.newBuilder(); - - logEntryBuilder.setKey(entry.getKey()); - String value = String.valueOf(entry.getValue()); - if(!StringUtil.isEmpty(value)) { - logEntryBuilder.setValue(value); - } - - logDataBuilder.addFields(logEntryBuilder); - } - } - return logDataBuilder.build(); - } - - public void deserialize(LogDataMessage message) { - time = message.getTime(); - List list = message.getFieldsList(); - if(list != null){ - HashMap initFields = new HashMap(); - for (KeyValue field : list) { - initFields.put(field.getKey(), field.getValue()); - } - this.fields = initFields; - } - } } diff --git a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/Span.java b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/Span.java index e7a6f3b18f..3486f6c2e6 100644 --- a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/Span.java +++ b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/Span.java @@ -1,12 +1,9 @@ package com.a.eye.skywalking.trace; -import com.a.eye.skywalking.api.util.StringUtil; -import com.a.eye.skywalking.trace.proto.KeyValue; -import com.a.eye.skywalking.trace.proto.LogDataMessage; -import com.a.eye.skywalking.trace.proto.SpanMessage; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; @@ -23,18 +20,26 @@ import java.util.Map; * Created by wusheng on 2017/2/17. */ public class Span{ + @Expose + @SerializedName(value="si") private int spanId; + @Expose + @SerializedName(value="ps") private int parentSpanId; /** * The start time of this Span. */ + @Expose + @SerializedName(value="st") private long startTime; /** * The end time of this Span. */ + @Expose + @SerializedName(value="et") private long endTime; /** @@ -42,6 +47,8 @@ public class Span{ * If you want to know, how to set an operation name, * {@see https://github.com/opentracing/specification/blob/master/specification.md#start-a-new-span} */ + @Expose + @SerializedName(value="on") private String operationName; /** @@ -49,6 +56,8 @@ public class Span{ * * {@see https://github.com/opentracing/specification/blob/master/specification.md#set-a-span-tag} */ + @Expose + @SerializedName(value="ta") private final Map tags; /** @@ -56,6 +65,8 @@ public class Span{ * * {@see https://github.com/opentracing/specification/blob/master/specification.md#log-structured-data} */ + @Expose + @SerializedName(value="ls") private final List logs; /** @@ -82,12 +93,11 @@ public class Span{ * @param startTime given start timestamp. */ private Span(int spanId, int parentSpanId, String operationName, long startTime) { + this(); this.spanId = spanId; this.parentSpanId = parentSpanId; this.startTime = startTime; this.operationName = operationName; - this.tags = new HashMap(); - this.logs = new ArrayList(); } /** @@ -138,15 +148,11 @@ public class Span{ } /** - * Create a new span, by given {@link SpanMessage}, which you can get from another {@link Span} object, - * by calling {@link Span#serialize()}; - * - * @param spanMessage from another {@link Span#serialize()} + * Create a new/empty span. */ - public Span(SpanMessage spanMessage) { + public Span() { tags = new HashMap(); logs = new LinkedList(); - this.deserialize(spanMessage); } /** @@ -265,51 +271,6 @@ public class Span{ return log(exceptionFields); } - public SpanMessage serialize() { - SpanMessage.Builder builder = SpanMessage.newBuilder(); - builder.setSpanId(spanId); - builder.setParentSpanId(parentSpanId); - builder.setStartTime(startTime); - builder.setEndTime(endTime); - builder.setOperationName(operationName); - for (Map.Entry entry : tags.entrySet()) { - KeyValue.Builder tagEntryBuilder = KeyValue.newBuilder(); - tagEntryBuilder.setKey(entry.getKey()); - String value = String.valueOf(entry.getValue()); - if (!StringUtil.isEmpty(value)) { - tagEntryBuilder.setValue(value); - } - builder.addTags(tagEntryBuilder); - } - - for (LogData log : logs) { - builder.addLogs(log.serialize()); - } - return builder.build(); - } - - public void deserialize(SpanMessage message) { - spanId = message.getSpanId(); - parentSpanId = message.getParentSpanId(); - startTime = message.getStartTime(); - endTime = message.getEndTime(); - operationName = message.getOperationName(); - - List tagsList = message.getTagsList(); - if(tagsList != null){ - for (KeyValue tag : tagsList) { - tags.put(tag.getKey(), tag.getValue()); - } - } - - List logsList = message.getLogsList(); - if (logsList != null) { - for (LogDataMessage logDataMessage : logsList) { - logs.add(new LogData(logDataMessage)); - } - } - } - private enum ThrowableTransformer { INSTANCE; diff --git a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceId/DistributedTraceId.java b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceId/DistributedTraceId.java index b64cffaea3..e174627962 100644 --- a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceId/DistributedTraceId.java +++ b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceId/DistributedTraceId.java @@ -1,5 +1,11 @@ package com.a.eye.skywalking.trace.TraceId; +import com.google.gson.TypeAdapter; +import com.google.gson.annotations.JsonAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; + /** * The DistributedTraceId presents a distributed call chain. * @@ -13,6 +19,7 @@ package com.a.eye.skywalking.trace.TraceId; * * @author wusheng */ +@JsonAdapter(DistributedTraceId.Serializer.class) public abstract class DistributedTraceId { private String id; @@ -40,4 +47,22 @@ public abstract class DistributedTraceId { public int hashCode() { return id != null ? id.hashCode() : 0; } + + public static class Serializer extends TypeAdapter { + + @Override + public void write(JsonWriter out, DistributedTraceId value) throws IOException { + out.beginArray(); + out.value(value.get()); + out.endArray(); + } + + @Override + public DistributedTraceId read(JsonReader in) throws IOException { + in.beginArray(); + PropagatedTraceId traceId = new PropagatedTraceId(in.nextString()); + in.endArray(); + return traceId; + } + } } diff --git a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java index a657d84c5f..424970cf6f 100644 --- a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java +++ b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java @@ -2,11 +2,8 @@ package com.a.eye.skywalking.trace; import com.a.eye.skywalking.trace.TraceId.DistributedTraceId; import com.a.eye.skywalking.trace.TraceId.NewDistributedTraceId; -import com.a.eye.skywalking.trace.TraceId.PropagatedTraceId; -import com.a.eye.skywalking.trace.proto.SegmentMessage; -import com.a.eye.skywalking.trace.proto.SegmentRefMessage; -import com.a.eye.skywalking.trace.proto.SpanMessage; -import com.google.protobuf.ProtocolStringList; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -27,16 +24,22 @@ public class TraceSegment { * The id of this trace segment. * Every segment has its unique-global-id. */ + @Expose + @SerializedName(value="ts") private String traceSegmentId; /** * The start time of this trace segment. */ + @Expose + @SerializedName(value="st") private long startTime; /** * The end time of this trace segment. */ + @Expose + @SerializedName(value="et") private long endTime; /** @@ -45,6 +48,8 @@ public class TraceSegment { * but if this segment is a start span of batch process, the segment faces multi parents, * at this moment, we use this {@link #refs} to link them. */ + @Expose + @SerializedName(value="rs") private List refs; /** @@ -52,6 +57,8 @@ public class TraceSegment { * They all have finished. * All active spans are hold and controlled by "skywalking-api" module. */ + @Expose + @SerializedName(value="ss") private List spans; /** @@ -60,6 +67,8 @@ public class TraceSegment { * * e.g. account_app, billing_app */ + @Expose + @SerializedName(value="ac") private String applicationCode; /** @@ -75,6 +84,8 @@ public class TraceSegment { * relatedGlobalTraces targets this {@link TraceSegment}'s related call chain, a call chain contains * multi {@link TraceSegment}s, only using {@link #refs} is not enough for analysis and ui. */ + @Expose + @SerializedName(value="gt") private LinkedList relatedGlobalTraces; /** @@ -82,21 +93,19 @@ public class TraceSegment { * This segmentId is generated by TraceSegmentRef, AKA, from tracer/agent module. */ public TraceSegment(String applicationCode) { + this(); this.traceSegmentId = GlobalIdGenerator.generate(ID_TYPE); this.applicationCode = applicationCode; this.startTime = System.currentTimeMillis(); - this.spans = new LinkedList(); - this.relatedGlobalTraces = new LinkedList(); - this.relatedGlobalTraces.add(new NewDistributedTraceId()); } /** - * Create a trace segment, by given {@link SegmentMessage} - * - * @param message from another {@link TraceSegment#serialize()} + * Create a default/empty trace segment */ - public TraceSegment(SegmentMessage message) { - deserialize(message); + public TraceSegment() { + this.spans = new LinkedList(); + this.relatedGlobalTraces = new LinkedList(); + this.relatedGlobalTraces.add(new NewDistributedTraceId()); } /** @@ -189,53 +198,4 @@ public class TraceSegment { ", relatedGlobalTraces=" + relatedGlobalTraces + '}'; } - - public SegmentMessage serialize() { - SegmentMessage.Builder segmentBuilder = SegmentMessage.newBuilder(); - segmentBuilder.setTraceSegmentId(traceSegmentId); - segmentBuilder.setStartTime(startTime); - segmentBuilder.setEndTime(endTime); - segmentBuilder.setApplicationCode(applicationCode); - if (refs != null && refs.size() > 0) { - for (TraceSegmentRef ref : refs) { - segmentBuilder.addRefs(ref.serialize()); - } - } - for (DistributedTraceId id : relatedGlobalTraces) { - segmentBuilder.addRelatedTraceIds(id.get()); - } - for (Span span : spans) { - segmentBuilder.addSpans(span.serialize()); - } - return segmentBuilder.build(); - } - - public void deserialize(SegmentMessage message) { - traceSegmentId = message.getTraceSegmentId(); - startTime = message.getStartTime(); - endTime = message.getEndTime(); - applicationCode = message.getApplicationCode(); - List refsList = message.getRefsList(); - if (refsList != null && refsList.size() > 0) { - this.refs = new LinkedList(); - for (SegmentRefMessage refMessage : refsList) { - TraceSegmentRef ref = new TraceSegmentRef(); - ref.deserialize(refMessage); - refs.add(ref); - } - } - ProtocolStringList relatedTraceIdsList = message.getRelatedTraceIdsList(); - this.relatedGlobalTraces = new LinkedList(); - for (String id : relatedTraceIdsList) { - relatedGlobalTraces.add(new PropagatedTraceId(id)); - } - - List spansList = message.getSpansList(); - if (spansList != null) { - this.spans = new LinkedList(); - for (SpanMessage spanMessage : spansList) { - spans.add(new Span(spanMessage)); - } - } - } } diff --git a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegmentRef.java b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegmentRef.java index 6a926f6d52..e900a71829 100644 --- a/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegmentRef.java +++ b/skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegmentRef.java @@ -1,7 +1,8 @@ package com.a.eye.skywalking.trace; -import com.a.eye.skywalking.trace.proto.SegmentRefMessage; import com.a.eye.skywalking.trace.tag.Tags; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; /** * {@link TraceSegmentRef} is like a pointer, which ref to another {@link TraceSegment}, @@ -13,21 +14,29 @@ public class TraceSegmentRef{ /** * {@link TraceSegment#traceSegmentId} */ + @Expose + @SerializedName(value="ts") private String traceSegmentId; /** * {@link Span#spanId} */ + @Expose + @SerializedName(value="si") private int spanId = -1; /** * {@link TraceSegment#applicationCode} */ + @Expose + @SerializedName(value="ac") private String applicationCode; /** * {@link Tags#PEER_HOST} */ + @Expose + @SerializedName(value="ph") private String peerHost; /** @@ -77,23 +86,6 @@ public class TraceSegmentRef{ '}'; } - public SegmentRefMessage serialize() { - SegmentRefMessage.Builder builder = SegmentRefMessage.newBuilder(); - builder.setTraceSegmentId(traceSegmentId); - builder.setSpanId(spanId); - builder.setApplicationCode(applicationCode); - if(peerHost != null) { - builder.setPeerHost(peerHost); - } - return builder.build(); - } - - public void deserialize(SegmentRefMessage message) { - traceSegmentId = message.getTraceSegmentId(); - spanId = message.getSpanId(); - applicationCode = message.getApplicationCode(); - peerHost = message.getPeerHost(); - } @Override public boolean equals(Object o) { diff --git a/skywalking-commons/skywalking-trace/src/main/proto/trace.proto b/skywalking-commons/skywalking-trace/src/main/proto/trace.proto deleted file mode 100644 index 0dad331ccf..0000000000 --- a/skywalking-commons/skywalking-trace/src/main/proto/trace.proto +++ /dev/null @@ -1,41 +0,0 @@ -syntax = "proto3"; - -option java_multiple_files = true; -option java_package = "com.a.eye.skywalking.trace.proto"; - -message SegmentMessage { - string traceSegmentId = 1; - int64 startTime = 2; - int64 endTime = 3; - string applicationCode = 4; - repeated SegmentRefMessage refs = 5; - repeated string relatedTraceIds = 6; - repeated SpanMessage spans = 7; -} - -message SegmentRefMessage { - string traceSegmentId = 1; - int32 spanId = 2; - string applicationCode = 3; - string peerHost = 4; -} - -message SpanMessage { - int32 spanId = 1; - int32 parentSpanId = 2; - int64 startTime = 3; - int64 endTime = 4; - string operationName = 5; - repeated KeyValue tags = 6; - repeated LogDataMessage logs = 7; -} - -message LogDataMessage { - int64 time = 1; - repeated KeyValue fields = 5; -} - -message KeyValue { - string key = 1; - string value = 2; -} diff --git a/skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/TraceSegmentTestCase.java b/skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/TraceSegmentTestCase.java index cd02abee49..d941649af9 100644 --- a/skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/TraceSegmentTestCase.java +++ b/skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/TraceSegmentTestCase.java @@ -1,6 +1,8 @@ package com.a.eye.skywalking.trace; import com.a.eye.skywalking.trace.tag.Tags; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import org.junit.Assert; import org.junit.Test; @@ -100,7 +102,15 @@ public class TraceSegmentTestCase { span2.log(new NullPointerException()); segment.archive(span2); - TraceSegment newSegment = new TraceSegment(segment.serialize()); + Gson gson = new GsonBuilder() + .excludeFieldsWithoutExposeAnnotation() + .create(); + + String json = gson.toJson(segment); + System.out.println(json); + + + TraceSegment newSegment = gson.fromJson(json, TraceSegment.class); Assert.assertEquals(segment.getSpans().size(), newSegment.getSpans().size()); Assert.assertEquals(segment.getRefs().get(0).getTraceSegmentId(), newSegment.getRefs().get(0).getTraceSegmentId());