From d67644370a7f3dd44caf23cd97115937de798686 Mon Sep 17 00:00:00 2001 From: Chisu Yu Date: Tue, 21 Aug 2012 04:57:44 +0000 Subject: [PATCH] =?UTF-8?q?[=EC=9C=A0=EC=B9=98=EC=88=98]=20[NOBTS]=20modif?= =?UTF-8?q?y=20class=20associated=20with=20Tagging.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-tomcat-profiler/trunk@525 84d0f5b1-2673-498c-a247-62c4ff18d310 --- .../java/com/profiler/context/Annotation.java | 12 +++---- .../java/com/profiler/context/EndPoint.java | 2 +- .../com/profiler/context/RequestContext.java | 2 +- src/main/java/com/profiler/context/Span.java | 31 +++++++++++++------ .../java/com/profiler/context/SpanID.java | 8 ++++- .../java/com/profiler/context/SpanTest.java | 23 +++++++++++--- 6 files changed, 55 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/profiler/context/Annotation.java b/src/main/java/com/profiler/context/Annotation.java index 64507bea4..6f1d8f6a0 100644 --- a/src/main/java/com/profiler/context/Annotation.java +++ b/src/main/java/com/profiler/context/Annotation.java @@ -39,13 +39,13 @@ public class Annotation { public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("Annotation["); + sb.append("Annotation={"); sb.append("Timestamp=").append(timestamp); - sb.append("Value=").append(value); - sb.append("EndPoint=").append(endPoint); - sb.append("ProcessStart=").append(processStart); - sb.append("ProcessEnd=").append(processEnd); - sb.append("]"); + sb.append(", Value=").append(value); + sb.append(", EndPoint=").append(endPoint); + sb.append(", ProcessStart=").append(processStart); + sb.append(", ProcessEnd=").append(processEnd); + sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/profiler/context/EndPoint.java b/src/main/java/com/profiler/context/EndPoint.java index 818614f1c..920fce335 100644 --- a/src/main/java/com/profiler/context/EndPoint.java +++ b/src/main/java/com/profiler/context/EndPoint.java @@ -17,6 +17,6 @@ public class EndPoint { } public String toString() { - return "EndPoint[Protocol=" + protocol + ", IP=" + ip + ", Port=" + port + ", Name=" + name + "]"; + return "EndPoint{Protocol=" + protocol + ", IP=" + ip + ", Port=" + port + ", Name=" + name + "]"; } } diff --git a/src/main/java/com/profiler/context/RequestContext.java b/src/main/java/com/profiler/context/RequestContext.java index 128c22821..96b80d32d 100644 --- a/src/main/java/com/profiler/context/RequestContext.java +++ b/src/main/java/com/profiler/context/RequestContext.java @@ -6,7 +6,7 @@ public class RequestContext { private static final ThreadLocal span = new NamedThreadLocal("Span"); - public static Span getSpan(String traceID, int parentSpanID, String name, boolean debug) { + public static Span getSpan(String traceID, String parentSpanID, String name, boolean debug) { Span ctx = span.get(); if (ctx == null) { ctx = new Span(traceID, parentSpanID, name, debug); diff --git a/src/main/java/com/profiler/context/Span.java b/src/main/java/com/profiler/context/Span.java index 293c487b9..ff8123b28 100644 --- a/src/main/java/com/profiler/context/Span.java +++ b/src/main/java/com/profiler/context/Span.java @@ -12,9 +12,11 @@ import java.util.TreeSet; */ public class Span { + private static final int NO_PARENT_SPAN_ID = -1; + private final String traceID; - private final int spanID; - private final int parentSpanID; + private final String spanID; + private final String parentSpanID; private final String name; private final long createTime; private final boolean debug; @@ -26,9 +28,18 @@ public class Span { } }); - public Span(String traceID, int parentSpanID, String name, boolean debug) { + /** + * + * @param traceID + * @param parentSpanID + * @param name + * @param debug + * if this is set we will make sure this span is stored, no + * matter what the samplers want + */ + public Span(String traceID, String parentSpanID, String name, boolean debug) { this.traceID = (traceID == null) ? TraceID.newTraceID() : traceID; - this.spanID = (parentSpanID < 0) ? 1 : ++parentSpanID; + this.spanID = SpanID.newSpanID(); this.parentSpanID = parentSpanID; this.name = name; this.createTime = System.nanoTime(); @@ -48,25 +59,25 @@ public class Span { return traceID; } - public int getNextSpanID() { - return spanID + 1; - } - public boolean isDebug() { return debug; } + public int getAnnotationSize() { + return annotations.size(); + } + public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("Span["); + sb.append("Span={"); sb.append("TraceID=").append(traceID); sb.append(", SpanID=").append(spanID); sb.append(", ParentSpanID=").append(parentSpanID); sb.append(", CreateTime=").append(createTime); sb.append(", Name=").append(name); sb.append(", Annotations=").append(annotations); - sb.append("]"); + sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/profiler/context/SpanID.java b/src/main/java/com/profiler/context/SpanID.java index 9bdfc1a54..7b0b6383a 100644 --- a/src/main/java/com/profiler/context/SpanID.java +++ b/src/main/java/com/profiler/context/SpanID.java @@ -1,6 +1,12 @@ package com.profiler.context; +import java.util.UUID; public class SpanID { - public static final int EMPTY = -1; + public static final String ROOT_SPAN_ID = null; + + public static String newSpanID() { + UUID uuid = UUID.randomUUID(); + return uuid.toString(); + } } diff --git a/src/test/java/com/profiler/context/SpanTest.java b/src/test/java/com/profiler/context/SpanTest.java index 91c07ca96..ff0f66c60 100644 --- a/src/test/java/com/profiler/context/SpanTest.java +++ b/src/test/java/com/profiler/context/SpanTest.java @@ -6,10 +6,25 @@ public class SpanTest { @Test public void span() { - Span span = RequestContext.getSpan(TraceID.EMPTY, -1, "UnitTest", true); + Span rootSpan = RequestContext.getSpan(TraceID.EMPTY, SpanID.ROOT_SPAN_ID, "UnitTest", true); - - System.out.println(span); + Annotation a1 = new Annotation(System.nanoTime(), "step1", EndPoint.NONE); + Annotation a2 = new Annotation(System.nanoTime(), "step2", EndPoint.NONE); + Annotation a3 = new Annotation(System.nanoTime(), "step2", new EndPoint("HTTP", "127.0.0.1", 1111, "localserver")); + + a1.processStart(); + a1.processEnd(); + + a2.processStart(); + a2.processEnd(); + + a3.processStart(); + a3.processEnd(); + + rootSpan.addAnnotation(a1); + rootSpan.addAnnotation(a2); + rootSpan.addAnnotation(a3); + + System.out.println(rootSpan); } - }