Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿信在这里
SkyWalking
提交
d6760d35
S
SkyWalking
项目概览
阿信在这里
/
SkyWalking
与 Fork 源项目一致
Fork自
山不在高_有仙则灵 / SkyWalking
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d6760d35
编写于
2月 22, 2017
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix serialize bugs.
上级
886d6ea3
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
91 addition
and
19 deletion
+91
-19
skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/messages/ISerializable.java
...ain/java/com/a/eye/skywalking/messages/ISerializable.java
+19
-0
skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/LogData.java
...ace/src/main/java/com/a/eye/skywalking/trace/LogData.java
+4
-0
skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/Span.java
...-trace/src/main/java/com/a/eye/skywalking/trace/Span.java
+13
-12
skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java
...rc/main/java/com/a/eye/skywalking/trace/TraceSegment.java
+12
-3
skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/SpanTestCase.java
...rc/test/java/com/a/eye/skywalking/trace/SpanTestCase.java
+2
-0
skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/TraceSegmentTestCase.java
...java/com/a/eye/skywalking/trace/TraceSegmentTestCase.java
+41
-4
未找到文件。
skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/messages/ISerializable.java
浏览文件 @
d6760d35
package
com.a.eye.skywalking.messages
;
import
com.a.eye.skywalking.trace.TraceSegment
;
/**
* All messages, which need to send between Akka actors, should implement this interface.
* The whole {@link TraceSegment} supports this.
*
* T should be a protobuf Object, which is generated by protoc.
* {@see /sky-walking/skywalking-commons/skywalking-trace/src/main/proto/trace.proto}
*
* {@see https://github.com/google/protobuf/tree/master/java}
*
* Created by wusheng on 2017/2/22.
*/
public
interface
ISerializable
<
T
>
{
/**
* Serialize this object to T
* @return
*/
T
serialize
();
/**
* Initialize this object by the given message.
*
* @param message to init object.
*/
void
deserialize
(
T
message
);
}
skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/LogData.java
浏览文件 @
d6760d35
...
...
@@ -26,6 +26,10 @@ public class LogData implements ISerializable<LogDataMessage>{
this
.
fields
=
fields
;
}
LogData
(
LogDataMessage
message
){
deserialize
(
message
);
}
public
long
getTime
()
{
return
time
;
}
...
...
skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/Span.java
浏览文件 @
d6760d35
...
...
@@ -140,13 +140,15 @@ public class Span implements ISerializable<SpanMessage> {
}
/**
* This is a empty constructor, only to get a object.
* Create a new span, by given {@link SpanMessage}, which you can get from another {@link Span} object,
* by calling {@link Span#serialize()};
*
*
DO NOT use this in anywhere, except {@link TraceSegment#deserialize(SegmentMessage)}.
*
@param spanMessage from another {@link Span#serialize()}
*/
Span
(
)
{
public
Span
(
SpanMessage
spanMessage
)
{
tags
=
new
HashMap
<
String
,
Object
>();
logs
=
new
LinkedList
<
LogData
>();
this
.
deserialize
(
spanMessage
);
}
/**
...
...
@@ -294,18 +296,17 @@ public class Span implements ISerializable<SpanMessage> {
endTime
=
message
.
getEndTime
();
operationName
=
message
.
getOperationName
();
List
<
KeyValue
>
tagsList
=
message
.
getTagsList
();
if
(
tagsList
!=
null
){
for
(
KeyValue
tag
:
tagsList
)
{
tags
.
put
(
tag
.
getKey
(),
tag
.
getValue
());
}
}
List
<
LogDataMessage
>
logsList
=
message
.
getLogsList
();
if
(
logsList
!=
null
)
{
for
(
LogDataMessage
logDataMessage
:
logsList
)
{
List
<
KeyValue
>
fieldsList
=
logDataMessage
.
getFieldsList
();
Map
<
String
,
String
>
fieldsMap
=
new
HashMap
<
String
,
String
>();
if
(
fieldsList
!=
null
)
{
for
(
KeyValue
field
:
fieldsList
)
{
fieldsMap
.
put
(
field
.
getKey
(),
field
.
getValue
());
}
}
LogData
logData
=
new
LogData
(
logDataMessage
.
getTime
(),
fieldsMap
);
logs
.
add
(
logData
);
logs
.
add
(
new
LogData
(
logDataMessage
));
}
}
}
...
...
skywalking-commons/skywalking-trace/src/main/java/com/a/eye/skywalking/trace/TraceSegment.java
浏览文件 @
d6760d35
...
...
@@ -67,6 +67,15 @@ public class TraceSegment implements ISerializable<SegmentMessage> {
this
.
spans
=
new
LinkedList
<
Span
>();
}
/**
* Create a trace segment, by given {@link SegmentMessage}
*
* @param message from another {@link TraceSegment#serialize()}
*/
public
TraceSegment
(
SegmentMessage
message
){
deserialize
(
message
);
}
/**
* Establish the link between this segment and its parents.
* The first time, you {@link #ref(TraceSegmentRef)} to parent, it is affirmed as {@link #primaryRef}.
...
...
@@ -163,6 +172,7 @@ public class TraceSegment implements ISerializable<SegmentMessage> {
(
primaryRef
=
new
TraceSegmentRef
()).
deserialize
(
message
.
getPrimaryRef
());
List
<
SegmentRefMessage
>
refsList
=
message
.
getRefsList
();
if
(
refsList
!=
null
){
this
.
refs
=
new
LinkedList
<
TraceSegmentRef
>();
for
(
SegmentRefMessage
refMessage
:
refsList
)
{
TraceSegmentRef
ref
=
new
TraceSegmentRef
();
ref
.
deserialize
(
refMessage
);
...
...
@@ -172,10 +182,9 @@ public class TraceSegment implements ISerializable<SegmentMessage> {
List
<
SpanMessage
>
spansList
=
message
.
getSpansList
();
if
(
spansList
!=
null
){
this
.
spans
=
new
LinkedList
<
Span
>();
for
(
SpanMessage
spanMessage
:
spansList
)
{
Span
span
=
new
Span
();
span
.
deserialize
(
spanMessage
);
spans
.
add
(
span
);
spans
.
add
(
new
Span
(
spanMessage
));
}
}
}
...
...
skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/SpanTestCase.java
浏览文件 @
d6760d35
...
...
@@ -14,6 +14,8 @@ public class SpanTestCase {
public
void
testConstructors
()
{
Span
span1
=
new
Span
(
0
,
"serviceA"
);
Span
span2
=
new
Span
(
2
,
span1
,
"serviceA"
);
span2
.
setOperationName
(
"serviceA-2"
);
Assert
.
assertEquals
(
"serviceA-2"
,
span2
.
getOperationName
());
Assert
.
assertEquals
(-
1
,
span1
.
getParentSpanId
());
Assert
.
assertEquals
(
0
,
span2
.
getParentSpanId
());
...
...
skywalking-commons/skywalking-trace/src/test/java/com/a/eye/skywalking/trace/TraceSegmentTestCase.java
浏览文件 @
d6760d35
package
com.a.eye.skywalking.trace
;
import
com.a.eye.skywalking.trace.tag.Tags
;
import
org.junit.Assert
;
import
org.junit.Test
;
...
...
@@ -8,7 +9,7 @@ import org.junit.Test;
*/
public
class
TraceSegmentTestCase
{
@Test
public
void
testConstructor
(){
public
void
testConstructor
()
{
TraceSegment
segment
=
new
TraceSegment
(
"trace_1"
);
Assert
.
assertEquals
(
"trace_1"
,
segment
.
getTraceSegmentId
());
...
...
@@ -16,7 +17,7 @@ public class TraceSegmentTestCase {
}
@Test
public
void
testRef
(){
public
void
testRef
()
{
TraceSegment
segment
=
new
TraceSegment
(
"trace_3"
);
TraceSegmentRef
ref1
=
new
TraceSegmentRef
();
...
...
@@ -43,7 +44,7 @@ public class TraceSegmentTestCase {
}
@Test
public
void
testArchiveSpan
(){
public
void
testArchiveSpan
()
{
TraceSegment
segment
=
new
TraceSegment
(
"trace_1"
);
Span
span1
=
new
Span
(
1
,
"/serviceA"
);
segment
.
archive
(
span1
);
...
...
@@ -56,11 +57,47 @@ public class TraceSegmentTestCase {
}
@Test
public
void
testFinish
(){
public
void
testFinish
()
{
TraceSegment
segment
=
new
TraceSegment
(
"trace_1"
);
Assert
.
assertTrue
(
segment
.
getEndTime
()
==
0
);
segment
.
finish
();
Assert
.
assertTrue
(
segment
.
getEndTime
()
>
0
);
}
@Test
public
void
testSerialize
()
{
TraceSegment
segment
=
new
TraceSegment
(
"trace_3"
);
TraceSegmentRef
ref1
=
new
TraceSegmentRef
();
ref1
.
setTraceSegmentId
(
"parent_trace_0"
);
ref1
.
setSpanId
(
1
);
segment
.
ref
(
ref1
);
TraceSegmentRef
ref2
=
new
TraceSegmentRef
();
ref2
.
setTraceSegmentId
(
"parent_trace_1"
);
ref2
.
setSpanId
(
5
);
segment
.
ref
(
ref2
);
TraceSegmentRef
ref3
=
new
TraceSegmentRef
();
ref3
.
setTraceSegmentId
(
"parent_trace_1"
);
ref3
.
setSpanId
(
5
);
segment
.
ref
(
ref3
);
Span
span1
=
new
Span
(
1
,
"/serviceA"
);
Tags
.
SPAN_LAYER
.
asHttp
(
span1
);
segment
.
archive
(
span1
);
Span
span2
=
new
Span
(
2
,
span1
,
"/db/sql"
);
Tags
.
SPAN_LAYER
.
asNoSQL
(
span2
);
span2
.
log
(
new
NullPointerException
());
segment
.
archive
(
span2
);
TraceSegment
newSegment
=
new
TraceSegment
(
segment
.
serialize
());
Assert
.
assertEquals
(
segment
.
getSpans
().
size
(),
newSegment
.
getSpans
().
size
());
Assert
.
assertEquals
(
segment
.
getPrimaryRef
().
getTraceSegmentId
(),
newSegment
.
getPrimaryRef
().
getTraceSegmentId
());
Assert
.
assertEquals
(
Tags
.
SPAN_LAYER
.
get
(
segment
.
getSpans
().
get
(
0
)),
Tags
.
SPAN_LAYER
.
get
(
newSegment
.
getSpans
().
get
(
0
)));
Assert
.
assertEquals
(
segment
.
getSpans
().
get
(
1
).
getLogs
().
get
(
0
).
getTime
(),
newSegment
.
getSpans
().
get
(
1
).
getLogs
().
get
(
0
).
getTime
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录