提交 a23538df 编写于 作者: wu-sheng's avatar wu-sheng

Add a new field, applicationCode, in TraceSegment.

上级 3c44572d
...@@ -55,14 +55,23 @@ public class TraceSegment implements ISerializable<SegmentMessage> { ...@@ -55,14 +55,23 @@ public class TraceSegment implements ISerializable<SegmentMessage> {
*/ */
private List<Span> spans; private List<Span> spans;
/**
* The <code>applicationCode</code> represents a name of current application/JVM and indicates which is business
* role in the cluster.
*
* e.g. account_app, billing_app
*/
private String applicationCode;
/** /**
* Create a trace segment, by given segmentId. * Create a trace segment, by given segmentId.
* This segmentId is generated by TraceSegmentRef, AKA, from tracer/agent module. * This segmentId is generated by TraceSegmentRef, AKA, from tracer/agent module.
* *
* @param segmentId {@link #traceSegmentId} * @param segmentId {@link #traceSegmentId}
*/ */
public TraceSegment(String segmentId) { public TraceSegment(String segmentId, String applicationCode) {
this.traceSegmentId = segmentId; this.traceSegmentId = segmentId;
this.applicationCode = applicationCode;
this.startTime = System.currentTimeMillis(); this.startTime = System.currentTimeMillis();
this.spans = new LinkedList<Span>(); this.spans = new LinkedList<Span>();
} }
...@@ -72,7 +81,7 @@ public class TraceSegment implements ISerializable<SegmentMessage> { ...@@ -72,7 +81,7 @@ public class TraceSegment implements ISerializable<SegmentMessage> {
* *
* @param message from another {@link TraceSegment#serialize()} * @param message from another {@link TraceSegment#serialize()}
*/ */
public TraceSegment(SegmentMessage message){ public TraceSegment(SegmentMessage message) {
deserialize(message); deserialize(message);
} }
...@@ -138,6 +147,10 @@ public class TraceSegment implements ISerializable<SegmentMessage> { ...@@ -138,6 +147,10 @@ public class TraceSegment implements ISerializable<SegmentMessage> {
return Collections.unmodifiableList(spans); return Collections.unmodifiableList(spans);
} }
public String getApplicationCode() {
return applicationCode;
}
@Override @Override
public String toString() { public String toString() {
return "TraceSegment{" + return "TraceSegment{" +
...@@ -154,6 +167,7 @@ public class TraceSegment implements ISerializable<SegmentMessage> { ...@@ -154,6 +167,7 @@ public class TraceSegment implements ISerializable<SegmentMessage> {
segmentBuilder.setTraceSegmentId(traceSegmentId); segmentBuilder.setTraceSegmentId(traceSegmentId);
segmentBuilder.setStartTime(startTime); segmentBuilder.setStartTime(startTime);
segmentBuilder.setEndTime(endTime); segmentBuilder.setEndTime(endTime);
segmentBuilder.setApplicationCode(applicationCode);
segmentBuilder.setPrimaryRef(primaryRef.serialize()); segmentBuilder.setPrimaryRef(primaryRef.serialize());
for (TraceSegmentRef ref : refs) { for (TraceSegmentRef ref : refs) {
segmentBuilder.addRefs(ref.serialize()); segmentBuilder.addRefs(ref.serialize());
...@@ -169,9 +183,10 @@ public class TraceSegment implements ISerializable<SegmentMessage> { ...@@ -169,9 +183,10 @@ public class TraceSegment implements ISerializable<SegmentMessage> {
traceSegmentId = message.getTraceSegmentId(); traceSegmentId = message.getTraceSegmentId();
startTime = message.getStartTime(); startTime = message.getStartTime();
endTime = message.getEndTime(); endTime = message.getEndTime();
applicationCode = message.getApplicationCode();
(primaryRef = new TraceSegmentRef()).deserialize(message.getPrimaryRef()); (primaryRef = new TraceSegmentRef()).deserialize(message.getPrimaryRef());
List<SegmentRefMessage> refsList = message.getRefsList(); List<SegmentRefMessage> refsList = message.getRefsList();
if(refsList != null){ if (refsList != null) {
this.refs = new LinkedList<TraceSegmentRef>(); this.refs = new LinkedList<TraceSegmentRef>();
for (SegmentRefMessage refMessage : refsList) { for (SegmentRefMessage refMessage : refsList) {
TraceSegmentRef ref = new TraceSegmentRef(); TraceSegmentRef ref = new TraceSegmentRef();
...@@ -181,7 +196,7 @@ public class TraceSegment implements ISerializable<SegmentMessage> { ...@@ -181,7 +196,7 @@ public class TraceSegment implements ISerializable<SegmentMessage> {
} }
List<SpanMessage> spansList = message.getSpansList(); List<SpanMessage> spansList = message.getSpansList();
if(spansList != null){ if (spansList != null) {
this.spans = new LinkedList<Span>(); this.spans = new LinkedList<Span>();
for (SpanMessage spanMessage : spansList) { for (SpanMessage spanMessage : spansList) {
spans.add(new Span(spanMessage)); spans.add(new Span(spanMessage));
......
...@@ -7,9 +7,10 @@ message SegmentMessage { ...@@ -7,9 +7,10 @@ message SegmentMessage {
string traceSegmentId = 1; string traceSegmentId = 1;
int64 startTime = 2; int64 startTime = 2;
int64 endTime = 3; int64 endTime = 3;
SegmentRefMessage primaryRef = 4; string applicationCode = 4;
repeated SegmentRefMessage refs = 5; SegmentRefMessage primaryRef = 5;
repeated SpanMessage spans = 6; repeated SegmentRefMessage refs = 6;
repeated SpanMessage spans = 7;
} }
message SegmentRefMessage { message SegmentRefMessage {
......
...@@ -25,7 +25,7 @@ public class SpanTestCase { ...@@ -25,7 +25,7 @@ public class SpanTestCase {
@Test @Test
public void testFinish() { public void testFinish() {
TraceSegment owner = new TraceSegment("trace_1"); TraceSegment owner = new TraceSegment("trace_1", "billing_app");
Span span1 = new Span(0, "serviceA"); Span span1 = new Span(0, "serviceA");
......
...@@ -10,15 +10,16 @@ import org.junit.Test; ...@@ -10,15 +10,16 @@ import org.junit.Test;
public class TraceSegmentTestCase { public class TraceSegmentTestCase {
@Test @Test
public void testConstructor() { public void testConstructor() {
TraceSegment segment = new TraceSegment("trace_1"); TraceSegment segment = new TraceSegment("trace_1", "billing_app");
Assert.assertEquals("trace_1", segment.getTraceSegmentId()); Assert.assertEquals("trace_1", segment.getTraceSegmentId());
Assert.assertTrue(segment.getStartTime() > 0); Assert.assertTrue(segment.getStartTime() > 0);
Assert.assertEquals("billing_app", segment.getApplicationCode());
} }
@Test @Test
public void testRef() { public void testRef() {
TraceSegment segment = new TraceSegment("trace_3"); TraceSegment segment = new TraceSegment("trace_3", "billing_app");
TraceSegmentRef ref1 = new TraceSegmentRef(); TraceSegmentRef ref1 = new TraceSegmentRef();
ref1.setTraceSegmentId("parent_trace_0"); ref1.setTraceSegmentId("parent_trace_0");
...@@ -45,7 +46,7 @@ public class TraceSegmentTestCase { ...@@ -45,7 +46,7 @@ public class TraceSegmentTestCase {
@Test @Test
public void testArchiveSpan() { public void testArchiveSpan() {
TraceSegment segment = new TraceSegment("trace_1"); TraceSegment segment = new TraceSegment("trace_1", "billing_app");
Span span1 = new Span(1, "/serviceA"); Span span1 = new Span(1, "/serviceA");
segment.archive(span1); segment.archive(span1);
...@@ -58,7 +59,7 @@ public class TraceSegmentTestCase { ...@@ -58,7 +59,7 @@ public class TraceSegmentTestCase {
@Test @Test
public void testFinish() { public void testFinish() {
TraceSegment segment = new TraceSegment("trace_1"); TraceSegment segment = new TraceSegment("trace_1", "billing_app");
Assert.assertTrue(segment.getEndTime() == 0); Assert.assertTrue(segment.getEndTime() == 0);
segment.finish(); segment.finish();
...@@ -67,7 +68,7 @@ public class TraceSegmentTestCase { ...@@ -67,7 +68,7 @@ public class TraceSegmentTestCase {
@Test @Test
public void testSerialize() { public void testSerialize() {
TraceSegment segment = new TraceSegment("trace_3"); TraceSegment segment = new TraceSegment("trace_3", "billing_app");
TraceSegmentRef ref1 = new TraceSegmentRef(); TraceSegmentRef ref1 = new TraceSegmentRef();
ref1.setTraceSegmentId("parent_trace_0"); ref1.setTraceSegmentId("parent_trace_0");
......
package com.a.eye.skywalking.api.context; package com.a.eye.skywalking.api.context;
import com.a.eye.skywalking.api.conf.Config;
import com.a.eye.skywalking.trace.Span; import com.a.eye.skywalking.trace.Span;
import com.a.eye.skywalking.trace.TraceSegment; import com.a.eye.skywalking.trace.TraceSegment;
import com.a.eye.skywalking.api.util.TraceIdGenerator; import com.a.eye.skywalking.api.util.TraceIdGenerator;
...@@ -28,8 +29,11 @@ public final class TracerContext { ...@@ -28,8 +29,11 @@ public final class TracerContext {
private int spanIdGenerator; private int spanIdGenerator;
/**
* Create a {@link TraceSegment} and init {@link #spanIdGenerator} as 0;
*/
TracerContext() { TracerContext() {
this.segment = new TraceSegment(TraceIdGenerator.generate()); this.segment = new TraceSegment(TraceIdGenerator.generate(), Config.SkyWalking.APPLICATION_CODE);
this.spanIdGenerator = 0; this.spanIdGenerator = 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册