Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
六月暴雪飞梨花
SkyWalking
提交
edebf0eb
S
SkyWalking
项目概览
六月暴雪飞梨花
/
SkyWalking
与 Fork 源项目一致
Fork自
apache / 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,发现更多精彩内容 >>
提交
edebf0eb
编写于
7月 20, 2020
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Set up across thread test.
上级
9e150493
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
64 addition
and
0 deletion
+64
-0
apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextSnapshot.java
...he/skywalking/apm/agent/core/context/ContextSnapshot.java
+2
-0
apm-sniffer/optional-reporter-plugins/zipkin-reporter-plugin/src/main/java/org/apache/skywalking/apm/plugin/reporter/zipkin/ZipkinTracerContext.java
...lking/apm/plugin/reporter/zipkin/ZipkinTracerContext.java
+23
-0
apm-sniffer/optional-reporter-plugins/zipkin-reporter-plugin/src/test/java/org/apache/skywalking/apm/plugin/reporter/zipkin/ContextManageTest.java
...walking/apm/plugin/reporter/zipkin/ContextManageTest.java
+39
-0
未找到文件。
apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextSnapshot.java
浏览文件 @
edebf0eb
...
...
@@ -21,6 +21,7 @@ package org.apache.skywalking.apm.agent.core.context;
import
java.util.HashMap
;
import
java.util.Map
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.apache.skywalking.apm.agent.core.context.ids.DistributedTraceId
;
/**
...
...
@@ -29,6 +30,7 @@ import org.apache.skywalking.apm.agent.core.context.ids.DistributedTraceId;
*/
public
class
ContextSnapshot
{
@Getter
@Setter
private
PrimaryContextSnapshot
primaryContextSnapshot
;
@Getter
private
CorrelationContext
correlationContext
;
...
...
apm-sniffer/optional-reporter-plugins/zipkin-reporter-plugin/src/main/java/org/apache/skywalking/apm/plugin/reporter/zipkin/ZipkinTracerContext.java
浏览文件 @
edebf0eb
...
...
@@ -30,6 +30,7 @@ import org.apache.skywalking.apm.agent.core.context.AsyncSpan;
import
org.apache.skywalking.apm.agent.core.context.ContextCarrier
;
import
org.apache.skywalking.apm.agent.core.context.ContextSnapshot
;
import
org.apache.skywalking.apm.agent.core.context.CorrelationContext
;
import
org.apache.skywalking.apm.agent.core.context.PrimaryContextSnapshot
;
import
org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan
;
/**
...
...
@@ -90,6 +91,7 @@ public class ZipkinTracerContext implements AbstractTracerContext {
public
ContextSnapshot
capture
()
{
final
TraceContext
traceContext
=
tracing
.
currentTraceContext
().
get
();
ContextSnapshot
contextSnapshot
=
new
ContextSnapshot
(
correlationContext
);
contextSnapshot
.
setPrimaryContextSnapshot
(
ZipkinMockPrimaryContextSnapshot
.
INSTANCE
);
contextSnapshot
.
addCustomContext
(
B3_ACROSS_THREAD
,
traceContext
);
return
contextSnapshot
;
}
...
...
@@ -179,4 +181,25 @@ public class ZipkinTracerContext implements AbstractTracerContext {
}
return
zipkinSpan
;
}
/**
* Mock Primary Context Snapshot is just a place holder for adopting SkyWalking kernel across thread propagation.
*/
private
static
class
ZipkinMockPrimaryContextSnapshot
extends
PrimaryContextSnapshot
{
private
static
ZipkinMockPrimaryContextSnapshot
INSTANCE
=
new
ZipkinMockPrimaryContextSnapshot
();
private
ZipkinMockPrimaryContextSnapshot
()
{
super
(
null
,
null
,
0
,
null
);
}
@Override
public
boolean
isFromCurrent
()
{
return
false
;
}
@Override
public
boolean
isValid
()
{
return
true
;
}
}
}
apm-sniffer/optional-reporter-plugins/zipkin-reporter-plugin/src/test/java/org/apache/skywalking/apm/plugin/reporter/zipkin/ContextManageTest.java
浏览文件 @
edebf0eb
...
...
@@ -22,12 +22,14 @@ import java.util.List;
import
org.apache.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.apache.skywalking.apm.agent.core.context.ContextCarrier
;
import
org.apache.skywalking.apm.agent.core.context.ContextManager
;
import
org.apache.skywalking.apm.agent.core.context.ContextSnapshot
;
import
org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.junit.AfterClass
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
zipkin2.Span
;
import
static
org
.
apache
.
skywalking
.
apm
.
plugin
.
reporter
.
zipkin
.
ZipkinTracerContext
.
B3_ACROSS_THREAD
;
import
static
org
.
apache
.
skywalking
.
apm
.
plugin
.
reporter
.
zipkin
.
ZipkinTracerContext
.
B3_NAME_SAMPLED
;
import
static
org
.
apache
.
skywalking
.
apm
.
plugin
.
reporter
.
zipkin
.
ZipkinTracerContext
.
B3_NAME_SPAN_ID
;
import
static
org
.
apache
.
skywalking
.
apm
.
plugin
.
reporter
.
zipkin
.
ZipkinTracerContext
.
B3_NAME_TRACE_ID
;
...
...
@@ -76,5 +78,42 @@ public class ContextManageTest extends ZipkinTest {
Assert
.
assertEquals
(
"/rpc-client"
,
spans
.
get
(
0
).
name
());
Assert
.
assertEquals
(
zipkin2
.
Span
.
Kind
.
SERVER
,
spans
.
get
(
2
).
kind
());
Assert
.
assertEquals
(
"/rpc-server"
,
spans
.
get
(
2
).
name
());
Assert
.
assertEquals
(
spans
.
get
(
0
).
id
(),
spans
.
get
(
2
).
parentId
());
}
@Test
public
void
testAcrossThread
()
{
ContextManager
.
createLocalSpan
(
"local async method"
);
final
ContextSnapshot
contextSnapshot
=
ContextManager
.
capture
();
ContextManager
.
stopSpan
();
List
<
List
<
Span
>>
traces
=
readTracesUntilTimeout
(
10
,
1
,
1
);
Assert
.
assertEquals
(
1
,
traces
.
size
());
Assert
.
assertNotNull
(
contextSnapshot
.
readCustomContext
(
B3_ACROSS_THREAD
));
Thread
newThread
=
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
ContextManager
.
createLocalSpan
(
"async execution"
);
ContextManager
.
continued
(
contextSnapshot
);
ContextManager
.
stopSpan
();
}
});
newThread
.
start
();
traces
=
readTracesUntilTimeout
(
10
,
1
,
2
);
Assert
.
assertEquals
(
1
,
traces
.
size
());
final
List
<
Span
>
spans
=
traces
.
get
(
0
);
Assert
.
assertEquals
(
"local async method"
,
spans
.
get
(
0
).
name
());
// Fail,
// Expected :b04359559a2ccdb1
// Actual :null
// Assert.assertEquals(spans.get(0).id(), spans.get(1).parentId());
// Fail
// Expected :async execution
// Actual :null
// Assert.assertEquals("async execution", spans.get(1).name());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录