Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
0e25c6ea
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 大约 1 年
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
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,体验更适合开发者的 AI 搜索 >>
提交
0e25c6ea
编写于
7月 05, 2017
作者:
A
ascrutae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
support new api for activation project and fix test case compile fail
上级
93a45165
变更
72
隐藏空白更改
内联
并排
Showing
72 changed file
with
970 addition
and
1531 deletion
+970
-1531
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java
...in/java/org/skywalking/apm/agent/core/jvm/JVMService.java
+5
-5
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java
...pm/agent/core/jvm/memorypool/ParallelCollectorModule.java
+1
-1
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextCarrierTestCase.java
...alking/apm/agent/core/context/ContextCarrierTestCase.java
+0
-72
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java
...alking/apm/agent/core/context/ContextManagerTestCase.java
+11
-11
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java
...walking/apm/agent/core/context/TracerContextTestCase.java
+28
-26
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/LogDataTestCase.java
...walking/apm/agent/core/context/trace/LogDataTestCase.java
+0
-20
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java
...skywalking/apm/agent/core/context/trace/SpanTestCase.java
+36
-32
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java
...ng/apm/agent/core/context/trace/TraceSegmentTestCase.java
+10
-107
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/KeyValuePairReader.java
...lking/apm/agent/core/context/util/KeyValuePairReader.java
+15
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentHelper.java
...lking/apm/agent/core/context/util/TraceSegmentHelper.java
+20
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentRefHelper.java
...ng/apm/agent/core/context/util/TraceSegmentRefHelper.java
+25
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/DataCarrierTest.java
...kywalking/apm/agent/core/datacarrier/DataCarrierTest.java
+150
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/SampleData.java
...org/skywalking/apm/agent/core/datacarrier/SampleData.java
+28
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/common/AtomicRangeIntegerTest.java
...agent/core/datacarrier/common/AtomicRangeIntegerTest.java
+23
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerPoolTest.java
...apm/agent/core/datacarrier/consumer/ConsumerPoolTest.java
+41
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerTest.java
...ing/apm/agent/core/datacarrier/consumer/ConsumerTest.java
+116
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/SampleConsumer.java
...g/apm/agent/core/datacarrier/consumer/SampleConsumer.java
+35
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/ProducerThreadPartitionerTest.java
.../datacarrier/partition/ProducerThreadPartitionerTest.java
+19
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/SimpleRollingPartitionerTest.java
...e/datacarrier/partition/SimpleRollingPartitionerTest.java
+18
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/VsABQ.java
...agent/core/datacarrier/performance/comparetest/VsABQ.java
+104
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/Data.java
...e/datacarrier/performance/comparetest/disruptor/Data.java
+17
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventFactory.java
...r/performance/comparetest/disruptor/DataEventFactory.java
+14
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventHandler.java
...r/performance/comparetest/disruptor/DataEventHandler.java
+21
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataProducer.java
...rrier/performance/comparetest/disruptor/DataProducer.java
+25
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/TestDisruptor.java
...rier/performance/comparetest/disruptor/TestDisruptor.java
+62
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefineTest.java
...ent/core/plugin/AbstractClassEnhancePluginDefineTest.java
+16
-16
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockAbstractClassEnhancePluginDefine.java
...ent/core/plugin/MockAbstractClassEnhancePluginDefine.java
+3
-2
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInstanceMethodInstrumentation.java
.../core/plugin/MockPluginInstanceMethodInstrumentation.java
+8
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInterceptor.java
...ywalking/apm/agent/core/plugin/MockPluginInterceptor.java
+22
-16
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginStaticMethodInstrumentation.java
...nt/core/plugin/MockPluginStaticMethodInstrumentation.java
+4
-0
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/PluginFinderTest.java
...rg/skywalking/apm/agent/core/plugin/PluginFinderTest.java
+7
-6
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/assist/NoConcurrencyAccessObjectTest.java
...ent/core/plugin/assist/NoConcurrencyAccessObjectTest.java
+0
-58
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/bytebuddy/AllObjectDefaultMethodsMatchTest.java
...re/plugin/bytebuddy/AllObjectDefaultMethodsMatchTest.java
+0
-12
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/EnhancedClassInstanceContextTest.java
.../plugin/interceptor/EnhancedClassInstanceContextTest.java
+0
-18
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/enhance/InvokeContextTest.java
...nt/core/plugin/interceptor/enhance/InvokeContextTest.java
+0
-39
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/utility/ClassFileExtraction.java
...ng/apm/agent/core/plugin/utility/ClassFileExtraction.java
+26
-4
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/sampling/SamplingTracerContextTestCase.java
...pm/agent/core/sampling/SamplingTracerContextTestCase.java
+14
-13
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/StringTagReader.java
...a/org/skywalking/apm/agent/core/tags/StringTagReader.java
+0
-31
apm-sniffer/apm-sniffer-mock/pom.xml
apm-sniffer/apm-sniffer-mock/pom.xml
+0
-32
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/MockTracingContextListener.java
.../apm/sniffer/mock/context/MockTracingContextListener.java
+0
-72
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/SegmentAssert.java
...rg/skywalking/apm/sniffer/mock/context/SegmentAssert.java
+0
-13
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java
.../org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java
+0
-24
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilder.java
...kywalking/apm/sniffer/mock/trace/TraceSegmentBuilder.java
+0
-11
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilderFactory.java
...ng/apm/sniffer/mock/trace/TraceSegmentBuilderFactory.java
+0
-62
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/DubboSpanGenerator.java
.../sniffer/mock/trace/builders/span/DubboSpanGenerator.java
+0
-48
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/MySQLGenerator.java
.../apm/sniffer/mock/trace/builders/span/MySQLGenerator.java
+0
-32
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/SpanGeneration.java
.../apm/sniffer/mock/trace/builders/span/SpanGeneration.java
+0
-33
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java
...sniffer/mock/trace/builders/span/TomcatSpanGenerator.java
+0
-81
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/DubboServerMysqlTraceBuilder.java
...ck/trace/builders/trace/DubboServerMysqlTraceBuilder.java
+0
-22
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat200TraceBuilder.java
...ock/trace/builders/trace/SingleTomcat200TraceBuilder.java
+0
-21
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat404TraceBuilder.java
...ock/trace/builders/trace/SingleTomcat404TraceBuilder.java
+0
-21
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat500TraceBuilder.java
...ock/trace/builders/trace/SingleTomcat500TraceBuilder.java
+0
-21
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/TomcatDubboClientTraceBuilder.java
...k/trace/builders/trace/TomcatDubboClientTraceBuilder.java
+0
-26
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/StringTagReader.java
...ywalking/apm/sniffer/mock/trace/tags/StringTagReader.java
+0
-31
apm-sniffer/apm-sniffer-mock/src/test/java/org/skywalking/apm/sniffer/mock/MockTracingContextListenerTestCase.java
.../apm/sniffer/mock/MockTracingContextListenerTestCase.java
+0
-74
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/PrintTraceIdInterceptor.java
...it/activation/log/log4j/v1/x/PrintTraceIdInterceptor.java
+8
-17
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/TraceIdPatternConverterActivation.java
...ion/log/log4j/v1/x/TraceIdPatternConverterActivation.java
+4
-0
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/Log4j2OutputAppenderActivation.java
...vation/log/log4j/v2/x/Log4j2OutputAppenderActivation.java
+4
-0
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/PrintTraceIdInterceptor.java
...it/activation/log/log4j/v2/x/PrintTraceIdInterceptor.java
+8
-7
apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/LogbackPatternConverterActivation.java
...n/log/logback/v1/x/LogbackPatternConverterActivation.java
+4
-0
apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/PrintTraceIdInterceptor.java
.../activation/log/logback/v1/x/PrintTraceIdInterceptor.java
+8
-17
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/SkyWalkingSpanActivation.java
...activation/opentracing/span/SkyWalkingSpanActivation.java
+0
-78
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanFinishInterceptor.java
...n/opentracing/span/interceptor/SpanFinishInterceptor.java
+0
-37
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanNewInstanceInterceptor.java
...ntracing/span/interceptor/SpanNewInstanceInterceptor.java
+0
-26
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetOperationNameInterceptor.java
...ing/span/interceptor/SpanSetOperationNameInterceptor.java
+0
-31
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetTagInterceptor.java
...n/opentracing/span/interceptor/SpanSetTagInterceptor.java
+0
-77
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkyWalkingTracerActivation.java
...vation/opentracing/tracer/SkyWalkingTracerActivation.java
+0
-52
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerExtractCrossProcessContextInterceptor.java
...erceptor/TracerExtractCrossProcessContextInterceptor.java
+0
-36
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerInjectFormatCrossProcessContextInterceptor.java
...tor/TracerInjectFormatCrossProcessContextInterceptor.java
+0
-32
apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextActivation.java
.../apm/toolkit/activation/trace/TraceContextActivation.java
+4
-0
apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextInterceptor.java
...apm/toolkit/activation/trace/TraceContextInterceptor.java
+6
-7
apm-sniffer/pom.xml
apm-sniffer/pom.xml
+0
-1
未找到文件。
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/JVMService.java
浏览文件 @
0e25c6ea
...
...
@@ -43,11 +43,11 @@ public class JVMService implements BootService, Runnable {
String
second
=
sdf
.
format
(
day
);
if
(
Integer
.
parseInt
(
second
)
%
15
==
0
)
{
JVMMetric
.
Builder
JVM
Builder
=
JVMMetric
.
newBuilder
();
JVM
Builder
.
setTime
(
currentTimeMillis
);
JVM
Builder
.
setCpu
(
CPUProvider
.
INSTANCE
.
getCpuMetric
());
JVM
Builder
.
addAllMemory
(
MemoryProvider
.
INSTANCE
.
getMemoryMetricList
());
JVM
Builder
.
addAllMemoryPool
(
MemoryPoolProvider
.
INSTANCE
.
getMemoryPoolMetricList
());
JVMMetric
.
Builder
jvm
Builder
=
JVMMetric
.
newBuilder
();
jvm
Builder
.
setTime
(
currentTimeMillis
);
jvm
Builder
.
setCpu
(
CPUProvider
.
INSTANCE
.
getCpuMetric
());
jvm
Builder
.
addAllMemory
(
MemoryProvider
.
INSTANCE
.
getMemoryMetricList
());
jvm
Builder
.
addAllMemoryPool
(
MemoryPoolProvider
.
INSTANCE
.
getMemoryPoolMetricList
());
}
}
}
apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/jvm/memorypool/ParallelCollectorModule.java
浏览文件 @
0e25c6ea
...
...
@@ -6,7 +6,7 @@ import java.util.List;
/**
* @author wusheng
*/
public
class
ParallelCollectorModule
extends
MemoryPoolModule
{
public
class
ParallelCollectorModule
extends
MemoryPoolModule
{
public
ParallelCollectorModule
(
List
<
MemoryPoolMXBean
>
beans
)
{
super
(
beans
);
...
...
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextCarrierTestCase.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.agent.core.context
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.skywalking.apm.agent.core.context.ids.DistributedTraceId
;
import
org.skywalking.apm.agent.core.context.ids.PropagatedTraceId
;
import
java.util.LinkedList
;
import
java.util.List
;
/**
* Created by wusheng on 2017/2/19.
*/
public
class
ContextCarrierTestCase
{
@Test
public
void
testSerialize
()
{
ContextCarrier
carrier
=
new
ContextCarrier
();
carrier
.
setTraceSegmentId
(
"trace_id_A"
);
carrier
.
setSpanId
(
100
);
carrier
.
setApplicationCode
(
"REMOTE_APP"
);
carrier
.
setPeerHost
(
"10.2.3.16:8080"
);
List
<
DistributedTraceId
>
ids
=
new
LinkedList
<
DistributedTraceId
>();
ids
.
add
(
new
PropagatedTraceId
(
"Trace.global.id.123"
));
carrier
.
setDistributedTraceIds
(
ids
);
Assert
.
assertEquals
(
"trace_id_A|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123"
,
carrier
.
serialize
());
}
@Test
public
void
testDeserialize
()
{
ContextCarrier
carrier
=
new
ContextCarrier
();
carrier
.
deserialize
(
"trace_id_A|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123,Trace.global.id.222"
);
Assert
.
assertEquals
(
"trace_id_A"
,
carrier
.
getTraceSegmentId
());
Assert
.
assertEquals
(
100
,
carrier
.
getSpanId
());
Assert
.
assertEquals
(
"REMOTE_APP"
,
carrier
.
getApplicationCode
());
Assert
.
assertEquals
(
"10.2.3.16:8080"
,
carrier
.
getPeerHost
());
Assert
.
assertEquals
(
"Trace.global.id.123"
,
carrier
.
getDistributedTraceIds
().
get
(
0
).
get
());
Assert
.
assertEquals
(
"Trace.global.id.222"
,
carrier
.
getDistributedTraceIds
().
get
(
1
).
get
());
}
@Test
public
void
testIllegalDeserialize
()
{
ContextCarrier
carrier
=
new
ContextCarrier
();
carrier
.
deserialize
(
"abcde"
);
Assert
.
assertFalse
(
carrier
.
isValid
());
carrier
=
new
ContextCarrier
();
carrier
.
deserialize
(
"trace_id|-100"
);
Assert
.
assertFalse
(
carrier
.
isValid
());
carrier
=
new
ContextCarrier
();
carrier
.
deserialize
(
"trace_id|illegal-spanid"
);
Assert
.
assertFalse
(
carrier
.
isValid
());
carrier
=
new
ContextCarrier
();
carrier
.
deserialize
(
"trace_id|100|other-illegal"
);
Assert
.
assertFalse
(
carrier
.
isValid
());
carrier
=
new
ContextCarrier
();
carrier
.
deserialize
(
"trace_id|100|REMOTE_APP|10.2.3.16:8080"
);
Assert
.
assertFalse
(
carrier
.
isValid
());
carrier
=
new
ContextCarrier
();
carrier
.
deserialize
(
"trace_id|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123,Trace.global.id.222"
);
Assert
.
assertTrue
(
carrier
.
isValid
());
carrier
=
new
ContextCarrier
();
carrier
.
deserialize
(
"trace_id|100|REMOTE_APP|10.2.3.16:8080|Trace.global.id.123,Trace.global.id.222|0"
);
Assert
.
assertFalse
(
carrier
.
isValid
());
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/ContextManagerTestCase.java
浏览文件 @
0e25c6ea
...
...
@@ -6,10 +6,10 @@ import org.junit.Assert;
import
org.junit.BeforeClass
;
import
org.junit.Test
;
import
org.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.skywalking.apm.agent.core.context.tag.Tags
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.skywalking.apm.agent.core.context.trace.NoopSpan
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
import
org.skywalking.apm.agent.core.context.util.TraceSegmentHelper
;
/**
* Created by wusheng on 2017/2/19.
...
...
@@ -22,23 +22,23 @@ public class ContextManagerTestCase {
@Test
public
void
testDelegateToTracerContext
()
{
AbstractSpan
span
=
ContextManager
.
createSpan
(
"serviceA"
);
Tags
.
COMPONENT
.
set
(
span
,
"test"
);
AbstractSpan
span
=
ContextManager
.
create
Local
Span
(
"serviceA"
);
span
.
setComponent
(
"test"
);
Assert
.
assertEquals
(
span
,
ContextManager
.
activeSpan
());
Trac
er
Context
.
ListenerManager
.
add
(
TestTracingContextListener
.
INSTANCE
);
Trac
ing
Context
.
ListenerManager
.
add
(
TestTracingContextListener
.
INSTANCE
);
ContextManager
.
stopSpan
();
TraceSegment
segment
=
TestTracingContextListener
.
INSTANCE
.
finishedSegmentCarrier
[
0
];
Assert
.
assertEquals
(
span
,
segment
.
getSpans
(
).
get
(
0
));
Assert
.
assertEquals
(
span
,
TraceSegmentHelper
.
getSpans
(
segment
).
get
(
0
));
}
@Test
public
void
testSwitchToIgnoredTracerContext
()
throws
NoSuchFieldException
,
IllegalAccessException
{
AbstractSpan
span
=
ContextManager
.
createSpan
(
"/webresource/jquery.js"
);
Tags
.
COMPONENT
.
set
(
span
,
"test"
);
AbstractSpan
span
=
ContextManager
.
create
Local
Span
(
"/webresource/jquery.js"
);
span
.
setComponent
(
"test"
);
Assert
.
assertTrue
(
span
instanceof
NoopSpan
);
Assert
.
assertTrue
(
ContextManager
.
activeSpan
()
instanceof
NoopSpan
);
...
...
@@ -54,11 +54,11 @@ public class ContextManagerTestCase {
Assert
.
assertNull
(
tracerContext
);
// check normal trace again
span
=
ContextManager
.
createSpan
(
"serviceA"
);
Tags
.
COMPONENT
.
set
(
span
,
"test"
);
span
=
ContextManager
.
create
Local
Span
(
"serviceA"
);
span
.
setComponent
(
"test"
);
tracerContext
=
((
ThreadLocal
<
AbstractTracerContext
>)
context
.
get
(
null
)).
get
();
Assert
.
assertTrue
(
tracerContext
instanceof
Trac
er
Context
);
Assert
.
assertTrue
(
tracerContext
instanceof
Trac
ing
Context
);
ContextManager
.
stopSpan
();
tracerContext
=
((
ThreadLocal
<
AbstractTracerContext
>)
context
.
get
(
null
)).
get
();
Assert
.
assertNull
(
tracerContext
);
...
...
@@ -66,6 +66,6 @@ public class ContextManagerTestCase {
@After
public
void
reset
()
{
Trac
er
Context
.
ListenerManager
.
remove
(
TestTracingContextListener
.
INSTANCE
);
Trac
ing
Context
.
ListenerManager
.
remove
(
TestTracingContextListener
.
INSTANCE
);
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/TracerContextTestCase.java
浏览文件 @
0e25c6ea
...
...
@@ -9,6 +9,8 @@ import org.skywalking.apm.agent.core.context.ids.DistributedTraceId;
import
org.skywalking.apm.agent.core.context.ids.PropagatedTraceId
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
import
org.skywalking.apm.agent.core.context.util.TraceSegmentHelper
;
import
org.skywalking.apm.agent.core.context.util.TraceSegmentRefHelper
;
/**
* Created by wusheng on 2017/2/19.
...
...
@@ -16,29 +18,30 @@ import org.skywalking.apm.agent.core.context.trace.TraceSegment;
public
class
TracerContextTestCase
{
@Test
public
void
testSpanLifeCycle
()
{
Trac
erContext
context
=
new
Tracer
Context
();
AbstractSpan
span
=
context
.
create
Span
(
"/serviceA"
,
false
);
Trac
ingContext
context
=
new
Tracing
Context
();
AbstractSpan
span
=
context
.
create
LocalSpan
(
"/serviceA"
);
Assert
.
assertEquals
(
span
,
context
.
activeSpan
());
Trac
er
Context
.
ListenerManager
.
add
(
TestTracingContextListener
.
INSTANCE
);
Trac
ing
Context
.
ListenerManager
.
add
(
TestTracingContextListener
.
INSTANCE
);
final
TraceSegment
[]
finishedSegmentCarrier
=
TestTracingContextListener
.
INSTANCE
.
finishedSegmentCarrier
;
context
.
stopSpan
(
span
);
Assert
.
assertNotNull
(
finishedSegmentCarrier
[
0
]);
Assert
.
assertEquals
(
1
,
finishedSegmentCarrier
[
0
].
getSpans
().
size
());
Assert
.
assertEquals
(
span
,
finishedSegmentCarrier
[
0
].
getSpans
().
get
(
0
));
TraceSegment
traceSegment
=
finishedSegmentCarrier
[
0
];
Assert
.
assertNotNull
(
traceSegment
);
Assert
.
assertEquals
(
1
,
TraceSegmentHelper
.
getSpans
(
traceSegment
).
size
());
Assert
.
assertEquals
(
span
,
TraceSegmentHelper
.
getSpans
(
traceSegment
).
get
(
0
));
}
@Test
public
void
testChildOfSpan
()
{
Trac
erContext
context
=
new
Tracer
Context
();
AbstractSpan
serviceSpan
=
context
.
create
Span
(
"/serviceA"
,
false
);
AbstractSpan
dbSpan
=
context
.
create
Span
(
"db/preparedStatement/execute"
,
false
);
Trac
ingContext
context
=
new
Tracing
Context
();
AbstractSpan
serviceSpan
=
context
.
create
LocalSpan
(
"/serviceA"
);
AbstractSpan
dbSpan
=
context
.
create
ExitSpan
(
"db/preparedStatement/execute"
,
"127.0.0.1:3306"
);
Assert
.
assertEquals
(
dbSpan
,
context
.
activeSpan
());
Trac
er
Context
.
ListenerManager
.
add
(
TestTracingContextListener
.
INSTANCE
);
Trac
ing
Context
.
ListenerManager
.
add
(
TestTracingContextListener
.
INSTANCE
);
final
TraceSegment
[]
finishedSegmentCarrier
=
TestTracingContextListener
.
INSTANCE
.
finishedSegmentCarrier
;
try
{
...
...
@@ -50,23 +53,22 @@ public class TracerContextTestCase {
context
.
stopSpan
(
dbSpan
);
context
.
stopSpan
(
serviceSpan
);
Assert
.
assertNotNull
(
finishedSegmentCarrier
[
0
]);
Assert
.
assertEquals
(
2
,
finishedSegmentCarrier
[
0
].
getSpans
().
size
());
Assert
.
assertEquals
(
dbSpan
,
finishedSegmentCarrier
[
0
].
getSpans
().
get
(
0
));
TraceSegment
traceSegment
=
finishedSegmentCarrier
[
0
];
Assert
.
assertNotNull
(
traceSegment
);
Assert
.
assertEquals
(
2
,
TraceSegmentHelper
.
getSpans
(
traceSegment
).
size
());
Assert
.
assertEquals
(
dbSpan
,
TraceSegmentHelper
.
getSpans
(
traceSegment
).
get
(
0
));
}
@Test
public
void
testInject
()
{
TracerContext
context
=
new
TracerContext
();
AbstractSpan
serviceSpan
=
context
.
createSpan
(
"/serviceA"
,
false
);
AbstractSpan
dbSpan
=
context
.
createSpan
(
"db/preparedStatement/execute"
,
false
);
dbSpan
.
setPeerHost
(
"127.0.0.1"
);
dbSpan
.
setPort
(
8080
);
TracingContext
context
=
new
TracingContext
();
AbstractSpan
serviceSpan
=
context
.
createLocalSpan
(
"/serviceA"
);
AbstractSpan
dbSpan
=
context
.
createExitSpan
(
"db/preparedStatement/execute"
,
"127.0.0.1:3306"
);
ContextCarrier
carrier
=
new
ContextCarrier
();
context
.
inject
(
carrier
);
Assert
.
assertEquals
(
"127.0.0.1:
8080
"
,
carrier
.
getPeerHost
());
Assert
.
assertEquals
(
"127.0.0.1:
3306
"
,
carrier
.
getPeerHost
());
Assert
.
assertEquals
(
1
,
carrier
.
getSpanId
());
}
...
...
@@ -75,7 +77,6 @@ public class TracerContextTestCase {
ContextCarrier
carrier
=
new
ContextCarrier
();
carrier
.
setTraceSegmentId
(
"trace_id_1"
);
carrier
.
setSpanId
(
5
);
carrier
.
setApplicationCode
(
"REMOTE_APP"
);
carrier
.
setPeerHost
(
"10.2.3.16:8080"
);
List
<
DistributedTraceId
>
ids
=
new
LinkedList
<
DistributedTraceId
>();
ids
.
add
(
new
PropagatedTraceId
(
"Trace.global.id.123"
));
...
...
@@ -83,21 +84,22 @@ public class TracerContextTestCase {
Assert
.
assertTrue
(
carrier
.
isValid
());
Trac
erContext
context
=
new
Tracer
Context
();
Trac
ingContext
context
=
new
Tracing
Context
();
context
.
extract
(
carrier
);
AbstractSpan
span
=
context
.
create
Span
(
"/serviceC"
,
false
);
AbstractSpan
span
=
context
.
create
LocalSpan
(
"/serviceC"
);
Trac
er
Context
.
ListenerManager
.
add
(
TestTracingContextListener
.
INSTANCE
);
Trac
ing
Context
.
ListenerManager
.
add
(
TestTracingContextListener
.
INSTANCE
);
final
TraceSegment
[]
finishedSegmentCarrier
=
TestTracingContextListener
.
INSTANCE
.
finishedSegmentCarrier
;
context
.
stopSpan
(
span
);
Assert
.
assertEquals
(
"trace_id_1"
,
finishedSegmentCarrier
[
0
].
getRefs
().
get
(
0
).
getTraceSegmentId
());
Assert
.
assertEquals
(
5
,
finishedSegmentCarrier
[
0
].
getRefs
().
get
(
0
).
getSpanId
());
TraceSegment
segment
=
finishedSegmentCarrier
[
0
];
Assert
.
assertEquals
(
"trace_id_1"
,
TraceSegmentRefHelper
.
getTraceSegmentId
(
segment
.
getRefs
().
get
(
0
)));
Assert
.
assertEquals
(
5
,
TraceSegmentRefHelper
.
getSpanId
(
segment
.
getRefs
().
get
(
0
)));
}
@After
public
void
reset
()
{
Trac
er
Context
.
ListenerManager
.
remove
(
TestTracingContextListener
.
INSTANCE
);
Trac
ing
Context
.
ListenerManager
.
remove
(
TestTracingContextListener
.
INSTANCE
);
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/LogDataTestCase.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.agent.core.context.trace
;
import
java.util.HashMap
;
import
java.util.Map
;
import
org.junit.Assert
;
import
org.junit.Test
;
/**
* Created by wusheng on 2017/2/18.
*/
public
class
LogDataTestCase
{
@Test
public
void
testHoldValue
()
{
Map
<
String
,
String
>
fields
=
new
HashMap
<
String
,
String
>();
LogData
logData
=
new
LogData
(
123L
,
fields
);
Assert
.
assertEquals
(
123
,
logData
.
getTime
());
Assert
.
assertEquals
(
fields
,
logData
.
getFields
());
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/SpanTestCase.java
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.context.trace
;
import
java.lang.reflect.Field
;
import
java.util.List
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.skywalking.apm.agent.core.tags.StringTagReader
;
import
org.junit.runner.RunWith
;
import
org.powermock.core.classloader.annotations.PrepareForTest
;
import
org.powermock.modules.junit4.PowerMockRunner
;
import
org.skywalking.apm.agent.core.context.tag.Tags
;
import
org.skywalking.apm.agent.core.context.util.KeyValuePair
;
import
org.skywalking.apm.agent.core.context.util.KeyValuePairReader
;
import
org.skywalking.apm.agent.core.context.util.TraceSegmentHelper
;
import
org.skywalking.apm.agent.core.dictionary.ApplicationDictionary
;
/**
* Created by wusheng on 2017/2/18.
*/
@RunWith
(
PowerMockRunner
.
class
)
@PrepareForTest
(
ApplicationDictionary
.
class
)
public
class
SpanTestCase
{
@Test
public
void
testConstructors
()
{
Span
span1
=
new
Span
(
0
,
"serviceA"
);
Span
span2
=
new
Span
(
2
,
span1
,
"serviceA"
);
AbstractTracingSpan
span1
=
new
LocalSpan
(
0
,
-
1
,
"serviceA"
);
AbstractTracingSpan
span2
=
new
LocalSpan
(
1
,
0
,
"serviceA"
);
span2
.
setOperationName
(
"serviceA-2"
);
span1
.
start
();
span2
.
start
();
Assert
.
assertEquals
(
"serviceA-2"
,
span2
.
getOperationName
());
Assert
.
assertEquals
(-
1
,
span1
.
getParentSpanId
()
);
Assert
.
assertEquals
(
0
,
span2
.
getParentSpanId
()
);
Assert
.
assertTrue
(
span1
.
getStartTime
()
>
0
);
Assert
.
assertTrue
(
span2
.
getStartTime
()
>
0
);
Assert
.
assertEquals
(-
1
,
span1
.
parentSpanId
);
Assert
.
assertEquals
(
0
,
span2
.
parentSpanId
);
Assert
.
assertTrue
(
span1
.
startTime
>
0
);
Assert
.
assertTrue
(
span2
.
startTime
>
0
);
}
@Test
public
void
testFinish
()
{
TraceSegment
owner
=
new
TraceSegment
(
"billing_app"
);
TraceSegment
owner
=
new
TraceSegment
();
Span
span1
=
new
Span
(
0
,
"serviceA"
);
AbstractTracingSpan
span1
=
new
LocalSpan
(
0
,
-
1
,
"serviceA"
);
Assert
.
assertTrue
(
span1
.
getEndTime
()
==
0
);
Assert
.
assertTrue
(
span1
.
endTime
==
0
);
span1
.
finish
(
owner
);
Assert
.
assertEquals
(
span1
,
owner
.
getSpans
(
).
get
(
0
));
Assert
.
assertTrue
(
span1
.
getEndTime
()
>
0
);
Assert
.
assertEquals
(
span1
,
TraceSegmentHelper
.
getSpans
(
owner
).
get
(
0
));
Assert
.
assertTrue
(
span1
.
endTime
>
0
);
}
@Test
public
void
testSetTag
()
{
Span
span1
=
new
Span
(
0
,
"serviceA"
);
Tags
.
SPAN_LAYER
.
asHttp
(
span1
);
Tags
.
COMPONENT
.
set
(
span1
,
"Spring"
);
span1
.
setPeerHost
(
"127.0.0.1"
);
Tags
.
ERROR
.
set
(
span1
,
true
);
Tags
.
STATUS_CODE
.
set
(
span1
,
302
);
AbstractTracingSpan
span1
=
new
LocalSpan
(
0
,
-
1
,
"serviceA"
);
SpanLayer
.
asHttp
(
span1
);
span1
.
setComponent
(
"Spring"
);
span1
.
errorOccurred
();
Tags
.
STATUS_CODE
.
set
(
span1
,
"505"
);
Tags
.
URL
.
set
(
span1
,
"http://127.0.0.1/serviceA"
);
Tags
.
DB_STATEMENT
.
set
(
span1
,
"select * from users"
);
Assert
.
assertEquals
(
"http"
,
StringTagReader
.
get
(
span1
,
Tags
.
SPAN_LAYER
.
SPAN_LAYER_TAG
));
Assert
.
assertEquals
(
"127.0.0.1"
,
span1
.
getPeerHost
());
Assert
.
assertTrue
(
BooleanTagReader
.
get
(
span1
,
Tags
.
ERROR
));
Assert
.
assertEquals
(
SpanLayer
.
HTTP
,
span1
.
layer
);
Assert
.
assertTrue
(
span1
.
errorOccurred
);
}
@Test
public
void
testLogException
()
throws
NoSuchFieldException
,
IllegalAccessException
{
Span
span1
=
new
Span
(
0
,
"serviceA"
);
AbstractTracingSpan
span1
=
new
LocalSpan
(
0
,
-
1
,
"serviceA"
);
Exception
exp
=
new
Exception
(
"exception msg"
);
span1
.
log
(
exp
);
Field
logsField
=
Span
.
class
.
getDeclaredField
(
"logs"
);
logsField
.
setAccessible
(
true
);
List
<
LogData
>
logs
=
(
List
<
LogData
>)
logsField
.
get
(
span1
);
LogDataEntity
logs
=
span1
.
logs
.
get
(
0
);
List
<
KeyValuePair
>
keyValuePairs
=
logs
.
getLogs
();
Assert
.
assertEquals
(
"java.lang.Exception"
,
logs
.
get
(
0
).
getFields
().
get
(
"error.kind"
));
Assert
.
assertEquals
(
"exception msg"
,
logs
.
get
(
0
).
getFields
().
get
(
"message"
));
Assert
.
assertNotNull
(
logs
.
get
(
0
).
getFields
().
get
(
"stack"
));
Assert
.
assertEquals
(
"java.lang.Exception"
,
KeyValuePairReader
.
get
(
keyValuePairs
,
"error.kind"
));
Assert
.
assertEquals
(
"exception msg"
,
KeyValuePairReader
.
get
(
keyValuePairs
,
"message"
));
Assert
.
assertNotNull
(
KeyValuePairReader
.
get
(
keyValuePairs
,
"stack"
));
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/trace/TraceSegmentTestCase.java
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.context.trace
;
import
com.google.gson.Gson
;
import
com.google.gson.GsonBuilder
;
import
com.google.gson.JsonObject
;
import
org.junit.Assert
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.skywalking.apm.agent.core.context.tag.Tags
;
import
org.skywalking.apm.agent.core.tags.StringTagReader
;
import
org.skywalking.apm.agent.core.context.util.TraceSegmentHelper
;
/**
* Created by wusheng on 2017/2/18.
*/
public
class
TraceSegmentTestCase
{
@Test
public
void
testConstructor
()
{
TraceSegment
segment
=
new
TraceSegment
(
"billing_app"
);
Assert
.
assertTrue
(
segment
.
getTraceSegmentId
().
startsWith
(
"Segment"
));
Assert
.
assertTrue
(
segment
.
getStartTime
()
>
0
);
Assert
.
assertEquals
(
"billing_app"
,
segment
.
getApplicationId
());
@Before
public
void
setUp
()
{
}
@Test
public
void
testRef
()
{
TraceSegment
segment
=
new
TraceSegment
(
"billing_app"
);
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_3"
);
ref3
.
setSpanId
(
5
);
segment
.
ref
(
ref3
);
Assert
.
assertEquals
(
ref1
,
segment
.
getRefs
().
get
(
0
));
Assert
.
assertEquals
(
ref2
,
segment
.
getRefs
().
get
(
1
));
Assert
.
assertEquals
(
ref3
,
segment
.
getRefs
().
get
(
2
));
Assert
.
assertEquals
(
"parent_trace_0"
,
segment
.
getRefs
().
get
(
0
).
getTraceSegmentId
());
Assert
.
assertEquals
(
1
,
segment
.
getRefs
().
get
(
0
).
getSpanId
());
}
@Test
public
void
testArchiveSpan
()
{
TraceSegment
segment
=
new
TraceSegment
(
"billing_app"
);
Span
span1
=
new
Span
(
1
,
"/serviceA"
);
TraceSegment
segment
=
new
TraceSegment
();
AbstractTracingSpan
span1
=
new
LocalSpan
(
1
,
0
,
"/serviceA"
);
segment
.
archive
(
span1
);
Span
span2
=
new
Span
(
2
,
"/db/sql"
);
AbstractTracingSpan
span2
=
new
LocalSpan
(
2
,
1
,
"/db/sql"
);
segment
.
archive
(
span2
);
Assert
.
assertEquals
(
span1
,
segment
.
getSpans
().
get
(
0
));
Assert
.
assertEquals
(
span2
,
segment
.
getSpans
().
get
(
1
));
}
@Test
public
void
testFinish
()
{
TraceSegment
segment
=
new
TraceSegment
(
"billing_app"
);
Assert
.
assertTrue
(
segment
.
getEndTime
()
==
0
);
segment
.
finish
();
Assert
.
assertTrue
(
segment
.
getEndTime
()
>
0
);
}
@Test
public
void
testSerialize
()
{
TraceSegment
segment
=
new
TraceSegment
(
"billing_app"
);
TraceSegmentRef
ref1
=
new
TraceSegmentRef
();
ref1
.
setTraceSegmentId
(
"parent_trace_0"
);
ref1
.
setSpanId
(
1
);
ref1
.
setApplicationCode
(
"REMOTE_APP"
);
ref1
.
setPeerHost
(
"10.2.3.16:8080"
);
segment
.
ref
(
ref1
);
TraceSegmentRef
ref2
=
new
TraceSegmentRef
();
ref2
.
setTraceSegmentId
(
"parent_trace_1"
);
ref2
.
setSpanId
(
5
);
ref2
.
setApplicationCode
(
"REMOTE_APP"
);
ref2
.
setPeerHost
(
"10.2.3.16:8080"
);
segment
.
ref
(
ref2
);
TraceSegmentRef
ref3
=
new
TraceSegmentRef
();
ref3
.
setTraceSegmentId
(
"parent_trace_2"
);
ref3
.
setSpanId
(
5
);
ref3
.
setApplicationCode
(
"REMOTE_APP"
);
ref3
.
setPeerHost
(
"10.2.3.16:8080"
);
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
.
asDB
(
span2
);
span2
.
log
(
new
NullPointerException
());
segment
.
archive
(
span2
);
Gson
gson
=
new
GsonBuilder
()
.
excludeFieldsWithoutExposeAnnotation
()
.
create
();
SegmentsMessage
message
=
new
SegmentsMessage
();
message
.
append
(
segment
);
String
jsonString
=
message
.
serialize
(
gson
);
int
length
=
Integer
.
parseInt
(
jsonString
.
substring
(
0
,
4
));
String
segmentJson
=
jsonString
.
substring
(
5
);
Assert
.
assertEquals
(
length
,
segmentJson
.
length
());
JsonObject
jsonObject
=
gson
.
fromJson
(
segmentJson
,
JsonObject
.
class
);
Assert
.
assertEquals
(
segment
.
getSpans
().
size
(),
jsonObject
.
get
(
"ss"
).
getAsJsonArray
().
size
());
Assert
.
assertEquals
(
segment
.
getRefs
().
get
(
0
).
getTraceSegmentId
(),
jsonObject
.
get
(
"rs"
).
getAsJsonArray
().
get
(
0
).
getAsJsonObject
().
get
(
"ts"
).
getAsString
());
Assert
.
assertEquals
(
StringTagReader
.
get
(
segment
.
getSpans
().
get
(
1
),
Tags
.
SPAN_LAYER
.
SPAN_LAYER_TAG
),
jsonObject
.
get
(
"ss"
).
getAsJsonArray
().
get
(
1
).
getAsJsonObject
().
get
(
"ts"
).
getAsJsonObject
().
get
(
"span.layer"
).
getAsString
());
Assert
.
assertEquals
(
span1
,
TraceSegmentHelper
.
getSpans
(
segment
).
get
(
0
));
Assert
.
assertEquals
(
span2
,
TraceSegmentHelper
.
getSpans
(
segment
).
get
(
1
));
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/KeyValuePairReader.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.context.util
;
import
java.util.List
;
public
class
KeyValuePairReader
{
public
static
String
get
(
List
<
KeyValuePair
>
pairs
,
String
key
)
{
for
(
KeyValuePair
pair
:
pairs
)
{
if
(
pair
.
getKey
().
equals
(
key
))
{
return
pair
.
getValue
();
}
}
return
null
;
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentHelper.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.context.util
;
import
java.lang.reflect.Field
;
import
java.util.List
;
import
org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
public
class
TraceSegmentHelper
{
public
static
List
<
AbstractTracingSpan
>
getSpans
(
TraceSegment
traceSegment
)
{
try
{
Field
field
=
AbstractTracingSpan
.
class
.
getDeclaredField
(
"spans"
);
return
(
List
<
AbstractTracingSpan
>)
field
.
get
(
traceSegment
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"Failed to get spans"
,
e
);
}
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/context/util/TraceSegmentRefHelper.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.context.util
;
import
java.lang.reflect.Field
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegmentRef
;
public
class
TraceSegmentRefHelper
{
public
static
int
getSpanId
(
TraceSegmentRef
ref
)
{
try
{
Field
field
=
TraceSegmentRef
.
class
.
getDeclaredField
(
"spanId"
);
return
Integer
.
valueOf
(
field
.
get
(
ref
).
toString
());
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"Failed to get span id"
,
e
);
}
}
public
static
String
getTraceSegmentId
(
TraceSegmentRef
ref
)
{
try
{
Field
field
=
TraceSegmentRef
.
class
.
getDeclaredField
(
"traceSegmentId"
);
return
field
.
get
(
ref
).
toString
();
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"Failed to get span id"
,
e
);
}
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/DataCarrierTest.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier
;
import
org.skywalking.apm.agent.core.datacarrier.buffer.Buffer
;
import
org.skywalking.apm.agent.core.datacarrier.buffer.BufferStrategy
;
import
org.skywalking.apm.agent.core.datacarrier.buffer.Channels
;
import
org.skywalking.apm.agent.core.datacarrier.consumer.IConsumer
;
import
org.skywalking.apm.agent.core.datacarrier.partition.ProducerThreadPartitioner
;
import
org.skywalking.apm.agent.core.datacarrier.partition.SimpleRollingPartitioner
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.powermock.api.support.membermodification.MemberModifier
;
import
java.util.List
;
/**
* Created by wusheng on 2016/10/25.
*/
public
class
DataCarrierTest
{
@Test
public
void
testCreateDataCarrier
()
throws
IllegalAccessException
{
DataCarrier
<
SampleData
>
carrier
=
new
DataCarrier
<
SampleData
>(
5
,
100
);
Assert
.
assertEquals
(((
Integer
)
(
MemberModifier
.
field
(
DataCarrier
.
class
,
"bufferSize"
).
get
(
carrier
))).
intValue
(),
100
);
Assert
.
assertEquals
(((
Integer
)
(
MemberModifier
.
field
(
DataCarrier
.
class
,
"channelSize"
).
get
(
carrier
))).
intValue
(),
5
);
Channels
<
SampleData
>
channels
=
(
Channels
<
SampleData
>)
(
MemberModifier
.
field
(
DataCarrier
.
class
,
"channels"
).
get
(
carrier
));
Assert
.
assertEquals
(
channels
.
getChannelSize
(),
5
);
Buffer
<
SampleData
>
buffer
=
channels
.
getBuffer
(
0
);
Assert
.
assertEquals
(
buffer
.
getBufferSize
(),
100
);
Assert
.
assertEquals
(
MemberModifier
.
field
(
Buffer
.
class
,
"strategy"
).
get
(
buffer
),
BufferStrategy
.
BLOCKING
);
carrier
.
setBufferStrategy
(
BufferStrategy
.
IF_POSSIBLE
);
Assert
.
assertEquals
(
MemberModifier
.
field
(
Buffer
.
class
,
"strategy"
).
get
(
buffer
),
BufferStrategy
.
IF_POSSIBLE
);
Assert
.
assertEquals
(
MemberModifier
.
field
(
Channels
.
class
,
"dataPartitioner"
).
get
(
channels
).
getClass
(),
SimpleRollingPartitioner
.
class
);
carrier
.
setPartitioner
(
new
ProducerThreadPartitioner
<
SampleData
>());
Assert
.
assertEquals
(
MemberModifier
.
field
(
Channels
.
class
,
"dataPartitioner"
).
get
(
channels
).
getClass
(),
ProducerThreadPartitioner
.
class
);
}
@Test
public
void
testProduce
()
throws
IllegalAccessException
{
DataCarrier
<
SampleData
>
carrier
=
new
DataCarrier
<
SampleData
>(
2
,
100
);
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"a"
)));
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"b"
)));
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"c"
)));
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"d"
)));
Channels
<
SampleData
>
channels
=
(
Channels
<
SampleData
>)
(
MemberModifier
.
field
(
DataCarrier
.
class
,
"channels"
).
get
(
carrier
));
Buffer
<
SampleData
>
buffer1
=
channels
.
getBuffer
(
0
);
List
result1
=
buffer1
.
obtain
(
0
,
100
);
Buffer
<
SampleData
>
buffer2
=
channels
.
getBuffer
(
1
);
List
result2
=
buffer2
.
obtain
(
0
,
100
);
Assert
.
assertEquals
(
2
,
result1
.
size
());
Assert
.
assertEquals
(
4
,
result1
.
size
()
+
result2
.
size
());
}
@Test
public
void
testOverrideProduce
()
throws
IllegalAccessException
{
DataCarrier
<
SampleData
>
carrier
=
new
DataCarrier
<
SampleData
>(
2
,
100
);
carrier
.
setBufferStrategy
(
BufferStrategy
.
OVERRIDE
);
for
(
int
i
=
0
;
i
<
500
;
i
++)
{
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"d"
+
i
)));
}
Channels
<
SampleData
>
channels
=
(
Channels
<
SampleData
>)
(
MemberModifier
.
field
(
DataCarrier
.
class
,
"channels"
).
get
(
carrier
));
Buffer
<
SampleData
>
buffer1
=
channels
.
getBuffer
(
0
);
List
result1
=
buffer1
.
obtain
(
0
,
100
);
Buffer
<
SampleData
>
buffer2
=
channels
.
getBuffer
(
1
);
List
result2
=
buffer2
.
obtain
(
0
,
100
);
Assert
.
assertEquals
(
200
,
result1
.
size
()
+
result2
.
size
());
}
@Test
public
void
testIfPossibleProduce
()
throws
IllegalAccessException
{
DataCarrier
<
SampleData
>
carrier
=
new
DataCarrier
<
SampleData
>(
2
,
100
);
carrier
.
setBufferStrategy
(
BufferStrategy
.
IF_POSSIBLE
);
for
(
int
i
=
0
;
i
<
200
;
i
++)
{
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"d"
+
i
)));
}
for
(
int
i
=
0
;
i
<
200
;
i
++)
{
Assert
.
assertFalse
(
carrier
.
produce
(
new
SampleData
().
setName
(
"d"
+
i
+
"_2"
)));
}
Channels
<
SampleData
>
channels
=
(
Channels
<
SampleData
>)
(
MemberModifier
.
field
(
DataCarrier
.
class
,
"channels"
).
get
(
carrier
));
Buffer
<
SampleData
>
buffer1
=
channels
.
getBuffer
(
0
);
List
result1
=
buffer1
.
obtain
(
0
,
100
);
Buffer
<
SampleData
>
buffer2
=
channels
.
getBuffer
(
1
);
List
result2
=
buffer2
.
obtain
(
0
,
100
);
Assert
.
assertEquals
(
200
,
result1
.
size
()
+
result2
.
size
());
}
@Test
public
void
testBlockingProduce
()
throws
IllegalAccessException
{
final
DataCarrier
<
SampleData
>
carrier
=
new
DataCarrier
<
SampleData
>(
2
,
100
);
for
(
int
i
=
0
;
i
<
200
;
i
++)
{
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"d"
+
i
)));
}
long
time1
=
System
.
currentTimeMillis
();
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
try
{
Thread
.
sleep
(
2000
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
IConsumer
<
SampleData
>
consumer
=
new
IConsumer
<
SampleData
>()
{
int
i
=
0
;
@Override
public
void
init
()
{
}
@Override
public
void
consume
(
List
<
SampleData
>
data
)
{
}
@Override
public
void
onError
(
List
<
SampleData
>
data
,
Throwable
t
)
{
}
@Override
public
void
onExit
()
{
}
};
carrier
.
consume
(
consumer
,
1
);
}
}).
start
();
carrier
.
produce
(
new
SampleData
().
setName
(
"blocking-data"
));
long
time2
=
System
.
currentTimeMillis
();
Assert
.
assertTrue
(
time2
-
time1
>
2000
);
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/SampleData.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier
;
/**
* Created by wusheng on 2016/10/25.
*/
public
class
SampleData
{
private
int
intValue
;
private
String
name
;
public
int
getIntValue
()
{
return
intValue
;
}
public
String
getName
()
{
return
name
;
}
public
SampleData
setIntValue
(
int
intValue
)
{
this
.
intValue
=
intValue
;
return
this
;
}
public
SampleData
setName
(
String
name
)
{
this
.
name
=
name
;
return
this
;
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/common/AtomicRangeIntegerTest.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.common
;
import
org.junit.Assert
;
import
org.junit.Test
;
/**
* Created by wusheng on 2016/10/25.
*/
public
class
AtomicRangeIntegerTest
{
@Test
public
void
testGetAndIncrement
()
{
AtomicRangeInteger
atomicI
=
new
AtomicRangeInteger
(
0
,
10
);
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
Assert
.
assertEquals
(
i
,
atomicI
.
getAndIncrement
());
}
Assert
.
assertEquals
(
0
,
atomicI
.
getAndIncrement
());
Assert
.
assertEquals
(
1
,
atomicI
.
get
());
Assert
.
assertEquals
(
1
,
atomicI
.
intValue
());
Assert
.
assertEquals
(
1
,
atomicI
.
longValue
());
Assert
.
assertEquals
(
1
,
(
int
)
atomicI
.
floatValue
());
Assert
.
assertEquals
(
1
,
(
int
)
atomicI
.
doubleValue
());
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerPoolTest.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.consumer
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.powermock.api.support.membermodification.MemberModifier
;
import
org.skywalking.apm.agent.core.datacarrier.SampleData
;
import
org.skywalking.apm.agent.core.datacarrier.buffer.BufferStrategy
;
import
org.skywalking.apm.agent.core.datacarrier.buffer.Channels
;
import
org.skywalking.apm.agent.core.datacarrier.partition.SimpleRollingPartitioner
;
/**
* Created by wusheng on 2016/10/26.
*/
public
class
ConsumerPoolTest
{
@Test
public
void
testBeginConsumerPool
()
throws
IllegalAccessException
{
Channels
<
SampleData
>
channels
=
new
Channels
<
SampleData
>(
2
,
100
,
new
SimpleRollingPartitioner
<
SampleData
>(),
BufferStrategy
.
BLOCKING
);
ConsumerPool
<
SampleData
>
pool
=
new
ConsumerPool
<
SampleData
>(
channels
,
new
SampleConsumer
(),
2
);
pool
.
begin
();
ConsumerThread
[]
threads
=
(
ConsumerThread
[])
MemberModifier
.
field
(
ConsumerPool
.
class
,
"consumerThreads"
).
get
(
pool
);
Assert
.
assertEquals
(
2
,
threads
.
length
);
Assert
.
assertTrue
(
threads
[
0
].
isAlive
());
Assert
.
assertTrue
(
threads
[
1
].
isAlive
());
}
@Test
public
void
testCloseConsumerPool
()
throws
InterruptedException
,
IllegalAccessException
{
Channels
<
SampleData
>
channels
=
new
Channels
<
SampleData
>(
2
,
100
,
new
SimpleRollingPartitioner
<
SampleData
>(),
BufferStrategy
.
BLOCKING
);
ConsumerPool
<
SampleData
>
pool
=
new
ConsumerPool
<
SampleData
>(
channels
,
new
SampleConsumer
(),
2
);
pool
.
begin
();
Thread
.
sleep
(
5000
);
pool
.
close
();
ConsumerThread
[]
threads
=
(
ConsumerThread
[])
MemberModifier
.
field
(
ConsumerPool
.
class
,
"consumerThreads"
).
get
(
pool
);
Assert
.
assertEquals
(
2
,
threads
.
length
);
Assert
.
assertFalse
((
Boolean
)
MemberModifier
.
field
(
ConsumerThread
.
class
,
"running"
).
get
(
threads
[
0
]));
Assert
.
assertFalse
((
Boolean
)
MemberModifier
.
field
(
ConsumerThread
.
class
,
"running"
).
get
(
threads
[
1
]));
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/ConsumerTest.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.consumer
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.powermock.api.support.membermodification.MemberModifier
;
import
org.skywalking.apm.agent.core.datacarrier.DataCarrier
;
import
org.skywalking.apm.agent.core.datacarrier.SampleData
;
/**
* Created by wusheng on 2016/10/26.
*/
public
class
ConsumerTest
{
public
static
LinkedBlockingQueue
<
SampleData
>
buffer
=
new
LinkedBlockingQueue
<
SampleData
>();
public
static
boolean
isOccurError
=
false
;
@Test
public
void
testConsumerLessThanChannel
()
throws
IllegalAccessException
{
final
DataCarrier
<
SampleData
>
carrier
=
new
DataCarrier
<
SampleData
>(
2
,
100
);
for
(
int
i
=
0
;
i
<
100
;
i
++)
{
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"data"
+
i
)));
}
SampleConsumer
consumer
=
new
SampleConsumer
();
consumer
.
i
=
100
;
carrier
.
consume
(
SampleConsumer
.
class
,
1
);
Assert
.
assertEquals
(
1
,
((
SampleConsumer
)
getConsumer
(
carrier
)).
i
);
SampleConsumer2
consumer2
=
new
SampleConsumer2
();
consumer2
.
i
=
100
;
carrier
.
consume
(
consumer2
,
1
);
Assert
.
assertEquals
(
100
,
((
SampleConsumer2
)
getConsumer
(
carrier
)).
i
);
carrier
.
shutdownConsumers
();
}
@Test
public
void
testConsumerMoreThanChannel
()
throws
IllegalAccessException
,
InterruptedException
{
final
DataCarrier
<
SampleData
>
carrier
=
new
DataCarrier
<
SampleData
>(
2
,
100
);
for
(
int
i
=
0
;
i
<
200
;
i
++)
{
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"data"
+
i
)));
}
SampleConsumer
consumer
=
new
SampleConsumer
();
carrier
.
consume
(
SampleConsumer
.
class
,
5
);
Thread
.
sleep
(
2000
);
List
<
SampleData
>
result
=
new
ArrayList
<
SampleData
>();
buffer
.
drainTo
(
result
);
Assert
.
assertEquals
(
200
,
result
.
size
());
HashSet
<
Integer
>
consumerCounter
=
new
HashSet
<
Integer
>();
for
(
SampleData
data
:
result
)
{
consumerCounter
.
add
(
data
.
getIntValue
());
}
Assert
.
assertEquals
(
5
,
consumerCounter
.
size
());
}
@Test
public
void
testConsumerOnError
()
{
final
DataCarrier
<
SampleData
>
carrier
=
new
DataCarrier
<
SampleData
>(
2
,
100
);
for
(
int
i
=
0
;
i
<
200
;
i
++)
{
Assert
.
assertTrue
(
carrier
.
produce
(
new
SampleData
().
setName
(
"data"
+
i
)));
}
SampleConsumer2
consumer
=
new
SampleConsumer2
();
consumer
.
onError
=
true
;
carrier
.
consume
(
consumer
,
5
);
Assert
.
assertTrue
(
isOccurError
);
}
class
SampleConsumer2
implements
IConsumer
<
SampleData
>
{
public
int
i
=
1
;
public
boolean
onError
=
false
;
@Override
public
void
init
()
{
}
@Override
public
void
consume
(
List
<
SampleData
>
data
)
{
if
(
onError
)
{
throw
new
RuntimeException
(
"consume exception"
);
}
}
@Override
public
void
onError
(
List
<
SampleData
>
data
,
Throwable
t
)
{
isOccurError
=
true
;
}
@Override
public
void
onExit
()
{
}
}
private
IConsumer
getConsumer
(
DataCarrier
<
SampleData
>
carrier
)
throws
IllegalAccessException
{
ConsumerPool
pool
=
((
ConsumerPool
)
MemberModifier
.
field
(
DataCarrier
.
class
,
"consumerPool"
).
get
(
carrier
));
ConsumerThread
[]
threads
=
(
ConsumerThread
[])
MemberModifier
.
field
(
ConsumerPool
.
class
,
"consumerThreads"
).
get
(
pool
);
return
(
IConsumer
)
MemberModifier
.
field
(
ConsumerThread
.
class
,
"consumer"
).
get
(
threads
[
0
]);
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/consumer/SampleConsumer.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.consumer
;
import
java.util.List
;
import
org.skywalking.apm.agent.core.datacarrier.SampleData
;
/**
* Created by wusheng on 2016/10/26.
*/
public
class
SampleConsumer
implements
IConsumer
<
SampleData
>
{
public
int
i
=
1
;
@Override
public
void
init
()
{
}
@Override
public
void
consume
(
List
<
SampleData
>
data
)
{
for
(
SampleData
one
:
data
)
{
one
.
setIntValue
(
this
.
hashCode
());
ConsumerTest
.
buffer
.
offer
(
one
);
}
}
@Override
public
void
onError
(
List
<
SampleData
>
data
,
Throwable
t
)
{
}
@Override
public
void
onExit
()
{
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/ProducerThreadPartitionerTest.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.partition
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.skywalking.apm.agent.core.datacarrier.SampleData
;
/**
* Created by wusheng on 2016/10/25.
*/
public
class
ProducerThreadPartitionerTest
{
@Test
public
void
testPartition
(){
int
partitionNum
=
(
int
)
Thread
.
currentThread
().
getId
()
%
10
;
ProducerThreadPartitioner
<
SampleData
>
partitioner
=
new
ProducerThreadPartitioner
<
SampleData
>();
Assert
.
assertEquals
(
partitioner
.
partition
(
10
,
new
SampleData
()),
partitionNum
);
Assert
.
assertEquals
(
partitioner
.
partition
(
10
,
new
SampleData
()),
partitionNum
);
Assert
.
assertEquals
(
partitioner
.
partition
(
10
,
new
SampleData
()),
partitionNum
);
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/partition/SimpleRollingPartitionerTest.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.partition
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.skywalking.apm.agent.core.datacarrier.SampleData
;
/**
* Created by wusheng on 2016/10/25.
*/
public
class
SimpleRollingPartitionerTest
{
@Test
public
void
testPartition
()
{
SimpleRollingPartitioner
<
SampleData
>
partitioner
=
new
SimpleRollingPartitioner
<
SampleData
>();
Assert
.
assertEquals
(
partitioner
.
partition
(
10
,
new
SampleData
()),
0
);
Assert
.
assertEquals
(
partitioner
.
partition
(
10
,
new
SampleData
()),
1
);
Assert
.
assertEquals
(
partitioner
.
partition
(
10
,
new
SampleData
()),
2
);
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/VsABQ.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.performance.comparetest
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.concurrent.ArrayBlockingQueue
;
import
org.junit.Test
;
import
org.skywalking.apm.agent.core.datacarrier.DataCarrier
;
import
org.skywalking.apm.agent.core.datacarrier.consumer.IConsumer
;
/**
* Created by wusheng on 2016/11/24.
*/
public
class
VsABQ
{
private
static
int
totalSize
=
100000000
;
/**
* 39469
*
* @throws InterruptedException
*/
@Test
public
void
testABQ
()
throws
InterruptedException
{
final
ArrayBlockingQueue
queue
=
new
ArrayBlockingQueue
(
5000
);
Thread
consumer
=
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
long
startTime
=
-
1
;
int
dataCounter
=
0
;
while
(
true
)
{
ArrayList
data
=
new
ArrayList
();
queue
.
drainTo
(
data
);
if
(
startTime
==
-
1
&&
data
.
size
()
>
0
)
{
startTime
=
System
.
currentTimeMillis
();
}
dataCounter
+=
data
.
size
();
if
(
dataCounter
==
totalSize
)
{
break
;
}
}
System
.
out
.
println
(
"time cost:"
+
(
System
.
currentTimeMillis
()
-
startTime
));
}
});
consumer
.
start
();
for
(
int
i
=
0
;
i
<
totalSize
;
i
++)
{
boolean
status
=
false
;
while
(!
status
)
{
try
{
queue
.
add
(
i
);
status
=
true
;
}
catch
(
Exception
e
)
{
}
}
}
consumer
.
join
();
}
public
static
void
main
(
String
[]
args
)
throws
InterruptedException
{
final
DataCarrier
<
Integer
>
dataCarrier
=
new
DataCarrier
<
Integer
>(
5
,
1000
);
dataCarrier
.
consume
(
new
IConsumer
<
Integer
>()
{
long
startTime
=
-
1
;
int
dataCounter
=
0
;
@Override
public
void
init
()
{
}
@Override
public
void
consume
(
List
<
Integer
>
data
)
{
if
(
startTime
==
-
1
&&
data
.
size
()
>
0
)
{
startTime
=
System
.
currentTimeMillis
();
}
dataCounter
+=
data
.
size
();
if
(
dataCounter
==
totalSize
)
{
System
.
out
.
println
(
"cost:"
+
(
System
.
currentTimeMillis
()
-
startTime
));
}
}
@Override
public
void
onError
(
List
<
Integer
>
data
,
Throwable
t
)
{
}
@Override
public
void
onExit
()
{
}
},
1
);
for
(
int
i
=
0
;
i
<
totalSize
;
i
++)
{
dataCarrier
.
produce
(
i
);
}
Thread
.
sleep
(
10
*
1000L
);
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/Data.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor
;
/**
* Created by wusheng on 2016/11/24.
*/
public
class
Data
{
private
long
value1
;
public
long
getValue1
()
{
return
value1
;
}
public
void
setValue1
(
long
value1
)
{
this
.
value1
=
value1
;
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventFactory.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor
;
import
com.lmax.disruptor.EventFactory
;
/**
* Created by wusheng on 2016/11/24.
*/
public
class
DataEventFactory
implements
EventFactory
<
Data
>
{
@Override
public
Data
newInstance
()
{
return
new
Data
();
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataEventHandler.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor
;
import
com.lmax.disruptor.EventHandler
;
/**
* Created by wusheng on 2016/11/24.
*/
public
class
DataEventHandler
implements
EventHandler
<
Data
>
{
public
long
counter
=
0
;
@Override
public
void
onEvent
(
Data
data
,
long
sequence
,
boolean
endOfBatch
)
throws
Exception
{
counter
++;
System
.
out
.
println
(
"handler:"
+
data
.
getValue1
());
if
(
counter
==
TestDisruptor
.
totalSize
)
{
System
.
out
.
println
(
"time cost:"
+
(
System
.
currentTimeMillis
()
-
TestDisruptor
.
startTime
));
TestDisruptor
.
isEnd
=
true
;
}
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/DataProducer.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor
;
import
com.lmax.disruptor.RingBuffer
;
/**
* Created by wusheng on 2016/11/24.
*/
public
class
DataProducer
{
private
final
RingBuffer
<
Data
>
ringBuffer
;
public
DataProducer
(
RingBuffer
<
Data
>
ringBuffer
)
{
this
.
ringBuffer
=
ringBuffer
;
}
public
void
onData
(
Data
bb
)
{
long
sequence
=
ringBuffer
.
next
();
// Grab the next sequence
try
{
Data
event
=
ringBuffer
.
get
(
sequence
);
// Get the entry in the Disruptor
// for the sequence
event
.
setValue1
(
bb
.
getValue1
());
// Fill with data
}
finally
{
ringBuffer
.
publish
(
sequence
);
}
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/datacarrier/performance/comparetest/disruptor/TestDisruptor.java
0 → 100644
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.datacarrier.performance.comparetest.disruptor
;
import
com.lmax.disruptor.RingBuffer
;
import
com.lmax.disruptor.WorkHandler
;
import
com.lmax.disruptor.dsl.Disruptor
;
import
com.lmax.disruptor.util.DaemonThreadFactory
;
/**
* Created by wusheng on 2016/11/24.
*/
public
class
TestDisruptor
{
public
static
int
totalSize
=
100000000
;
public
static
long
startTime
;
public
static
volatile
boolean
isEnd
=
false
;
public
static
void
main
(
String
[]
args
)
throws
InterruptedException
{
// The factory for the event
DataEventFactory
factory
=
new
DataEventFactory
();
// Specify the size of the ring buffer, must be power of 2.
int
bufferSize
=
1024
;
// Construct the Disruptor
Disruptor
<
Data
>
disruptor
=
new
Disruptor
<
Data
>(
factory
,
bufferSize
,
DaemonThreadFactory
.
INSTANCE
);
disruptor
.
handleEventsWithWorkerPool
(
new
WorkHandler
<
Data
>(){
@Override
public
void
onEvent
(
Data
event
)
throws
Exception
{
System
.
out
.
println
(
"work1:"
+
event
.
getValue1
());
}
},
new
WorkHandler
<
Data
>(){
@Override
public
void
onEvent
(
Data
event
)
throws
Exception
{
System
.
out
.
println
(
"work2:"
+
event
.
getValue1
());
}
});
// Connect the handler
disruptor
.
handleEventsWith
(
new
DataEventHandler
());
// Start the Disruptor, starts all threads running
disruptor
.
start
();
RingBuffer
<
Data
>
ringBuffer
=
disruptor
.
getRingBuffer
();
DataProducer
producer
=
new
DataProducer
(
ringBuffer
);
startTime
=
System
.
currentTimeMillis
();
for
(
int
i
=
0
;
i
<
totalSize
;
i
++)
{
Data
data
=
new
Data
();
data
.
setValue1
(
i
);
producer
.
onData
(
data
);
Thread
.
sleep
(
1000L
);
}
disruptor
.
shutdown
();
while
(!
TestDisruptor
.
isEnd
){
Thread
.
sleep
(
100L
);
}
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/AbstractClassEnhancePluginDefineTest.java
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.plugin
;
import
java.lang.instrument.ClassFileTransformer
;
import
java.lang.instrument.Instrumentation
;
import
net.bytebuddy.agent.ByteBuddyAgent
;
import
net.bytebuddy.agent.builder.AgentBuilder
;
import
net.bytebuddy.description.type.TypeDescription
;
...
...
@@ -7,6 +9,7 @@ import net.bytebuddy.dynamic.DynamicType;
import
net.bytebuddy.dynamic.loading.ByteArrayClassLoader
;
import
net.bytebuddy.dynamic.loading.PackageDefinitionStrategy
;
import
net.bytebuddy.matcher.ElementMatchers
;
import
net.bytebuddy.utility.JavaModule
;
import
org.hamcrest.CoreMatchers
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
@@ -14,9 +17,8 @@ import org.junit.runner.RunWith;
import
org.powermock.modules.junit4.PowerMockRunner
;
import
org.skywalking.apm.agent.core.plugin.utility.ClassFileExtraction
;
import
java.lang.instrument.ClassFileTransformer
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
none
;
import
static
org
.
hamcrest
.
CoreMatchers
.
instanceOf
;
import
static
org
.
hamcrest
.
MatcherAssert
.
assertThat
;
@RunWith
(
PowerMockRunner
.
class
)
...
...
@@ -32,9 +34,7 @@ public class AbstractClassEnhancePluginDefineTest {
public
void
setUp
()
throws
Exception
{
classLoader
=
new
ByteArrayClassLoader
.
ChildFirst
(
getClass
().
getClassLoader
(),
ClassFileExtraction
.
of
(
TargetObject
.
class
),
null
,
ByteArrayClassLoader
.
PersistenceHandler
.
MANIFEST
,
PackageDefinitionStrategy
.
NoOp
.
INSTANCE
);
ByteArrayClassLoader
.
PersistenceHandler
.
MANIFEST
);
}
@Test
...
...
@@ -91,17 +91,6 @@ public class AbstractClassEnhancePluginDefineTest {
public
static
class
MockTargetObjectTransformer
implements
AgentBuilder
.
Transformer
{
@Override
public
DynamicType
.
Builder
<?>
transform
(
DynamicType
.
Builder
<?>
builder
,
TypeDescription
typeDescription
,
ClassLoader
classLoader
)
{
try
{
DynamicType
.
Builder
newBuilder
=
transformInstanceMethod
(
builder
);
return
transformStaticMethod
(
newBuilder
);
}
catch
(
Exception
exception
)
{
throw
new
AssertionError
(
exception
);
}
}
private
DynamicType
.
Builder
<?>
transformStaticMethod
(
DynamicType
.
Builder
newBuilder
)
{
MockPluginStaticMethodInstrumentation
staticMethodInstrumentation
=
new
MockPluginStaticMethodInstrumentation
();
return
staticMethodInstrumentation
.
define
(
WEAVE_CLASS
,
newBuilder
,
AbstractClassEnhancePluginDefineTest
.
class
.
getClassLoader
());
...
...
@@ -111,6 +100,17 @@ public class AbstractClassEnhancePluginDefineTest {
MockPluginInstanceMethodInstrumentation
instrumentation
=
new
MockPluginInstanceMethodInstrumentation
();
return
instrumentation
.
define
(
WEAVE_CLASS
,
builder
,
AbstractClassEnhancePluginDefineTest
.
class
.
getClassLoader
());
}
@Override
public
DynamicType
.
Builder
<?>
transform
(
DynamicType
.
Builder
<?>
builder
,
TypeDescription
typeDescription
,
ClassLoader
classLoader
,
JavaModule
module
)
{
try
{
DynamicType
.
Builder
newBuilder
=
transformInstanceMethod
(
builder
);
return
transformStaticMethod
(
newBuilder
);
}
catch
(
Exception
exception
)
{
throw
new
AssertionError
(
exception
);
}
}
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockAbstractClassEnhancePluginDefine.java
浏览文件 @
0e25c6ea
...
...
@@ -6,9 +6,10 @@ import net.bytebuddy.dynamic.DynamicType;
* Created by wusheng on 2017/2/27.
*/
public
class
MockAbstractClassEnhancePluginDefine
extends
AbstractClassEnhancePluginDefine
{
@Override
protected
DynamicType
.
Builder
<?>
enhance
(
String
enhanceOriginClassName
,
DynamicType
.
Builder
<?>
newClassBuil
der
)
throws
PluginException
{
protected
DynamicType
.
Builder
<?>
enhance
(
String
enhanceOriginClassName
,
DynamicType
.
Builder
<?>
newClassBuilder
,
ClassLoader
classLoa
der
)
throws
PluginException
{
return
newClassBuilder
;
}
...
...
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInstanceMethodInstrumentation.java
浏览文件 @
0e25c6ea
...
...
@@ -45,6 +45,10 @@ public class MockPluginInstanceMethodInstrumentation extends ClassInstanceMethod
public
String
getMethodsInterceptor
()
{
return
AbstractClassEnhancePluginDefineTest
.
INTERCEPTOR_CLASS
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
},
new
InstanceMethodsInterceptPoint
()
{
@Override
...
...
@@ -56,6 +60,10 @@ public class MockPluginInstanceMethodInstrumentation extends ClassInstanceMethod
public
String
getMethodsInterceptor
()
{
return
AbstractClassEnhancePluginDefineTest
.
INTERCEPTOR_CLASS
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
}
};
}
...
...
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginInterceptor.java
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.plugin
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodsAroundInterceptor
;
public
class
MockPluginInterceptor
implements
InstanceMethodsAroundInterceptor
,
StaticMethodsAroundInterceptor
,
InstanceConstructorInterceptor
{
@Override
public
void
beforeMethod
(
StaticMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
public
void
onConstruct
(
EnhancedInstance
objInst
,
Object
[]
allArguments
)
{
objInst
.
setSkyWalkingDynamicField
(
allArguments
[
0
]);
}
@Override
public
Object
afterMethod
(
StaticMethodInvokeContext
interceptorContext
,
Object
ret
)
{
return
ret
+
"_STATIC"
;
public
void
beforeMethod
(
Class
clazz
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
parameterTypes
,
MethodInterceptResult
result
)
{
}
@Override
public
void
handleMethodException
(
Throwable
t
,
MethodInvokeContext
interceptorContext
)
{
public
Object
afterMethod
(
Class
clazz
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
parameterTypes
,
Object
ret
)
{
return
ret
+
"_STATIC"
;
}
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
public
void
handleMethodException
(
Class
clazz
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
parameterTypes
,
Throwable
t
)
{
}
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
Object
ret
)
{
return
ret
+
String
.
valueOf
(
context
.
get
(
"VALUE"
));
@Override
public
void
beforeMethod
(
EnhancedInstance
objInst
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
MethodInterceptResult
result
)
throws
Throwable
{
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
@Override
public
Object
afterMethod
(
EnhancedInstance
objInst
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Object
ret
)
throws
Throwable
{
return
ret
+
String
.
valueOf
(
objInst
.
getSkyWalkingDynamicField
());
}
@Override
public
void
onConstruct
(
EnhancedClassInstanceContext
context
,
ConstructorInvokeContext
interceptorContex
t
)
{
context
.
set
(
"VALUE"
,
interceptorContext
.
allArguments
()[
0
]);
@Override
public
void
handleMethodException
(
EnhancedInstance
objInst
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Throwable
t
)
{
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/MockPluginStaticMethodInstrumentation.java
浏览文件 @
0e25c6ea
...
...
@@ -26,6 +26,10 @@ public class MockPluginStaticMethodInstrumentation extends ClassStaticMethodsEnh
public
String
getMethodsInterceptor
()
{
return
AbstractClassEnhancePluginDefineTest
.
INTERCEPTOR_CLASS
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
}
};
}
...
...
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/PluginFinderTest.java
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.plugin
;
import
java.util.ArrayList
;
import
net.bytebuddy.dynamic.DynamicType
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
java.util.ArrayList
;
/**
* Created by wusheng on 2017/2/27.
*/
...
...
@@ -31,9 +30,10 @@ public class PluginFinderTest {
}
public
class
NewTestPlugin
extends
AbstractClassEnhancePluginDefine
{
@Override
protected
DynamicType
.
Builder
<?>
enhance
(
String
enhanceOriginClassName
,
DynamicType
.
Builder
<?>
newClassBuil
der
)
throws
PluginException
{
protected
DynamicType
.
Builder
<?>
enhance
(
String
enhanceOriginClassName
,
DynamicType
.
Builder
<?>
newClassBuilder
,
ClassLoader
classLoa
der
)
throws
PluginException
{
return
newClassBuilder
;
}
...
...
@@ -44,9 +44,10 @@ public class PluginFinderTest {
}
public
class
NewTestPlugin2
extends
AbstractClassEnhancePluginDefine
{
@Override
protected
DynamicType
.
Builder
<?>
enhance
(
String
enhanceOriginClassName
,
DynamicType
.
Builder
<?>
newClassBuil
der
)
throws
PluginException
{
protected
DynamicType
.
Builder
<?>
enhance
(
String
enhanceOriginClassName
,
DynamicType
.
Builder
<?>
newClassBuilder
,
ClassLoader
classLoa
der
)
throws
PluginException
{
return
newClassBuilder
;
}
...
...
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/assist/NoConcurrencyAccessObjectTest.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.agent.core.plugin.assist
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.Mock
;
import
org.mockito.runners.MockitoJUnitRunner
;
import
org.skywalking.apm.agent.core.plugin.interceptor.assist.NoConcurrencyAccessObject
;
/**
* @author wusheng
*/
@RunWith
(
MockitoJUnitRunner
.
class
)
public
class
NoConcurrencyAccessObjectTest
{
@Mock
private
InstanceMethodInvokeContext
invokeContext
;
@Test
public
void
testEntraExitCounter
()
{
final
EnhancedClassInstanceContext
context
=
new
EnhancedClassInstanceContext
();
NoConcurrencyAccessObject
first
=
new
NoConcurrencyAccessObject
()
{
@Override
protected
void
enter
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
context
.
set
(
"firstEntrance"
,
true
);
}
@Override
protected
void
exit
()
{
context
.
set
(
"firstExit"
,
true
);
}
};
NoConcurrencyAccessObject
second
=
new
NoConcurrencyAccessObject
()
{
@Override
protected
void
enter
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
context
.
set
(
"secondEntrance"
,
true
);
}
@Override
protected
void
exit
()
{
context
.
set
(
"lastEntrance"
,
true
);
}
};
first
.
whenEnter
(
context
,
invokeContext
);
second
.
whenEnter
(
context
,
invokeContext
);
first
.
whenExist
(
context
);
second
.
whenExist
(
context
);
Assert
.
assertTrue
(!
context
.
isContain
(
"secondEntrance"
));
Assert
.
assertTrue
(!
context
.
isContain
(
"firstExit"
));
Assert
.
assertTrue
(
context
.
isContain
(
"firstEntrance"
));
Assert
.
assertTrue
(
context
.
isContain
(
"lastEntrance"
));
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/bytebuddy/AllObjectDefaultMethodsMatchTest.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.agent.core.plugin.bytebuddy
;
import
org.junit.Test
;
/**
* Created by wusheng on 2017/2/28.
*/
public
class
AllObjectDefaultMethodsMatchTest
{
@Test
public
void
testMatches
()
{
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/EnhancedClassInstanceContextTest.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.agent.core.plugin.interceptor
;
import
org.junit.Assert
;
import
org.junit.Test
;
/**
* @author wusheng
*/
public
class
EnhancedClassInstanceContextTest
{
@Test
public
void
test
()
{
EnhancedClassInstanceContext
context
=
new
EnhancedClassInstanceContext
();
context
.
set
(
"key"
,
"value"
);
Assert
.
assertTrue
(
context
.
isContain
(
"key"
));
Assert
.
assertEquals
(
"value"
,
context
.
get
(
"key"
));
Assert
.
assertEquals
(
"value"
,
(
String
)
context
.
get
(
"key"
));
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/interceptor/enhance/InvokeContextTest.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.agent.core.plugin.interceptor.enhance
;
import
org.junit.Assert
;
import
org.junit.Test
;
/**
* @author wusheng
*/
public
class
InvokeContextTest
{
@Test
public
void
testConstructorInvokeContext
()
{
ConstructorInvokeContext
context
=
new
ConstructorInvokeContext
(
this
,
new
Object
[]
{
"obj1"
,
1
});
Assert
.
assertEquals
(
this
,
context
.
inst
());
Assert
.
assertEquals
(
"obj1"
,
context
.
allArguments
()[
0
]);
Assert
.
assertEquals
(
1
,
context
.
allArguments
()[
1
]);
}
@Test
public
void
testInstanceMethodInvokeContext
()
{
InstanceMethodInvokeContext
context
=
new
InstanceMethodInvokeContext
(
this
,
"methodA"
,
new
Object
[]
{
"obj1"
,
1
},
new
Class
<?>[]
{
String
.
class
,
Integer
.
class
});
Assert
.
assertEquals
(
this
,
context
.
inst
());
Assert
.
assertEquals
(
"obj1"
,
context
.
allArguments
()[
0
]);
Assert
.
assertEquals
(
1
,
context
.
allArguments
()[
1
]);
Assert
.
assertEquals
(
"methodA"
,
context
.
methodName
());
Assert
.
assertEquals
(
String
.
class
,
context
.
argumentTypes
()[
0
]);
Assert
.
assertEquals
(
Integer
.
class
,
context
.
argumentTypes
()[
1
]);
}
@Test
public
void
testStaticMethodInvokeContext
()
{
StaticMethodInvokeContext
context
=
new
StaticMethodInvokeContext
(
InvokeContextTest
.
class
,
"methodA"
,
new
Object
[]
{
"obj1"
,
1
},
new
Class
<?>[]
{
String
.
class
,
Integer
.
class
});
Assert
.
assertEquals
(
InvokeContextTest
.
class
,
context
.
claszz
());
Assert
.
assertEquals
(
"obj1"
,
context
.
allArguments
()[
0
]);
Assert
.
assertEquals
(
1
,
context
.
allArguments
()[
1
]);
Assert
.
assertEquals
(
"methodA"
,
context
.
methodName
());
Assert
.
assertEquals
(
String
.
class
,
context
.
argumentTypes
()[
0
]);
Assert
.
assertEquals
(
Integer
.
class
,
context
.
argumentTypes
()[
1
]);
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/plugin/utility/ClassFileExtraction.java
浏览文件 @
0e25c6ea
package
org.skywalking.apm.agent.core.plugin.utility
;
import
java.io.IOException
;
import
java.util.HashMap
;
import
java.util.Map
;
import
net.bytebuddy.ClassFileVersion
;
import
net.bytebuddy.asm.AsmVisitorWrapper
;
import
net.bytebuddy.description.field.FieldDescription
;
import
net.bytebuddy.description.field.FieldList
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.description.method.MethodList
;
import
net.bytebuddy.description.type.TypeDescription
;
import
net.bytebuddy.implementation.Implementation
;
import
net.bytebuddy.implementation.auxiliary.AuxiliaryType
;
...
...
@@ -12,10 +18,6 @@ import net.bytebuddy.jar.asm.ClassWriter;
import
net.bytebuddy.pool.TypePool
;
import
org.junit.Test
;
import
java.io.IOException
;
import
java.util.HashMap
;
import
java.util.Map
;
import
static
org
.
hamcrest
.
CoreMatchers
.
is
;
import
static
org
.
hamcrest
.
MatcherAssert
.
assertThat
;
...
...
@@ -38,6 +40,8 @@ public class ClassFileExtraction {
classWriter
,
new
IllegalContext
(),
TypePool
.
Empty
.
INSTANCE
,
new
FieldList
.
Empty
<
FieldDescription
.
InDefinedShape
>(),
new
MethodList
.
Empty
<
MethodDescription
>(),
AsmVisitorWrapper
.
NO_FLAGS
,
AsmVisitorWrapper
.
NO_FLAGS
),
AsmVisitorWrapper
.
NO_FLAGS
);
return
classWriter
.
toByteArray
();
...
...
@@ -82,5 +86,23 @@ public class ClassFileExtraction {
public
ClassFileVersion
getClassFileVersion
()
{
throw
new
AssertionError
(
"Did not expect method call"
);
}
@Override
public
MethodDescription
.
InDefinedShape
registerAccessorFor
(
Implementation
.
SpecialMethodInvocation
specialMethodInvocation
,
AccessType
accessType
)
{
throw
new
AssertionError
(
"Did not expect method call"
);
}
@Override
public
MethodDescription
.
InDefinedShape
registerGetterFor
(
FieldDescription
fieldDescription
,
AccessType
accessType
)
{
throw
new
AssertionError
(
"Did not expect method call"
);
}
@Override
public
MethodDescription
.
InDefinedShape
registerSetterFor
(
FieldDescription
fieldDescription
,
AccessType
accessType
)
{
throw
new
AssertionError
(
"Did not expect method call"
);
}
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/sampling/SamplingTracerContextTestCase.java
浏览文件 @
0e25c6ea
...
...
@@ -7,9 +7,10 @@ import org.junit.Test;
import
org.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.skywalking.apm.agent.core.conf.Config
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.context.TracingContext
;
import
org.skywalking.apm.agent.core.context.TracingContextListener
;
import
org.skywalking.apm.agent.core.context.tag.Tags
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.skywalking.apm.agent.core.context.trace.AbstractTracingSpan
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
...
...
@@ -29,24 +30,24 @@ public class SamplingTracerContextTestCase {
@Before
public
void
setUp
()
throws
Exception
{
Config
.
Agent
.
SAMPLE_N_PER_
10
_SECS
=
5
;
Config
.
Agent
.
SAMPLE_N_PER_
3
_SECS
=
5
;
ServiceManager
.
INSTANCE
.
boot
();
Trac
er
Context
.
ListenerManager
.
add
(
listener
);
Trac
ing
Context
.
ListenerManager
.
add
(
listener
);
}
@Test
public
void
testSample5InALoop
()
throws
InterruptedException
{
for
(
int
i
=
0
;
i
<
11
;
i
++)
{
AbstractSpan
span
=
ContextManager
.
createSpan
(
"serviceA"
);
Tags
.
COMPONENT
.
set
(
span
,
"test"
);
AbstractSpan
span
=
ContextManager
.
create
Local
Span
(
"serviceA"
);
span
.
setComponent
(
"test"
);
ContextManager
.
stopSpan
();
}
/**
* Considering the reset cycle, in ci-env, may sample 5-7 trace through 1 or 2 cycle.
*/
Assert
.
assertTrue
(
finishedTracerCounter
>=
5
);
Assert
.
assertTrue
(
finishedTracerCounter
<=
7
);
Assert
.
assertTrue
(
finishedTracerCounter
>=
2
);
Assert
.
assertTrue
(
finishedTracerCounter
<=
3
);
Thread
.
sleep
(
10
*
1000L
);
}
...
...
@@ -54,10 +55,10 @@ public class SamplingTracerContextTestCase {
public
void
testSample5InLoopWithMultiSpans
()
{
finishedTracerCounter
=
0
;
for
(
int
i
=
0
;
i
<
11
;
i
++)
{
AbstractSpan
span
=
ContextManager
.
createSpan
(
"serviceA"
);
Tags
.
COMPONENT
.
set
(
span
,
"test"
);
AbstractSpan
span2
=
ContextManager
.
createSpan
(
"serviceB"
);
Tags
.
COMPONENT
.
set
(
span2
,
"test2"
);
AbstractSpan
span
=
ContextManager
.
create
Local
Span
(
"serviceA"
);
span
.
setComponent
(
"test"
);
AbstractSpan
span2
=
ContextManager
.
create
Local
Span
(
"serviceB"
);
span
.
setComponent
(
"test2"
);
ContextManager
.
stopSpan
();
ContextManager
.
stopSpan
();
}
...
...
@@ -71,7 +72,7 @@ public class SamplingTracerContextTestCase {
@After
public
void
tearDown
()
throws
Exception
{
Config
.
Agent
.
SAMPLE_N_PER_
10
_SECS
=
-
1
;
Trac
er
Context
.
ListenerManager
.
remove
(
listener
);
Config
.
Agent
.
SAMPLE_N_PER_
3
_SECS
=
-
1
;
Trac
ing
Context
.
ListenerManager
.
remove
(
listener
);
}
}
apm-sniffer/apm-agent-core/src/test/java/org/skywalking/apm/agent/core/tags/StringTagReader.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.agent.core.tags
;
import
java.lang.reflect.Field
;
import
java.util.List
;
import
org.skywalking.apm.agent.core.context.tag.StringTag
;
/**
* @author wusheng
*/
public
class
StringTagReader
{
public
static
String
get
(
Span
span
,
StringTag
tag
)
{
List
<
StringTagItem
>
tagsWithStrList
=
null
;
try
{
Field
tagsWithStr
=
Span
.
class
.
getDeclaredField
(
"tagsWithStr"
);
tagsWithStr
.
setAccessible
(
true
);
tagsWithStrList
=
(
List
<
StringTagItem
>)
tagsWithStr
.
get
(
span
);
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
catch
(
NoSuchFieldException
e
)
{
e
.
printStackTrace
();
}
for
(
StringTagItem
item
:
tagsWithStrList
)
{
if
(
tag
.
key
().
equals
(
item
.
getKey
()))
{
return
item
.
getValue
();
}
}
return
null
;
}
}
apm-sniffer/apm-sniffer-mock/pom.xml
已删除
100644 → 0
浏览文件 @
93a45165
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
apm-sniffer
</artifactId>
<groupId>
org.skywalking
</groupId>
<version>
3.2-2017
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
apm-sniffer-mock
</artifactId>
<description>
This is a sniffer mock module. Simulate a sniffer, assemble one or more trace segments.
Test-dependency, only.
</description>
<dependencies>
<dependency>
<groupId>
org.skywalking
</groupId>
<artifactId>
apm-agent-core
</artifactId>
<version>
${project.version}
</version>
</dependency>
<!-- direct dependency junit, based on this is a mock module. -->
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
4.12
</version>
</dependency>
</dependencies>
</project>
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/MockTracingContextListener.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.context
;
import
org.junit.Assert
;
import
org.skywalking.apm.agent.core.context.TracingContextListener
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
/**
* This is mock tracer context listener, which should be added by calling {@link TracerContext.ListenerManager#add(TracingContextListener)}.
* This mock listener will hold all finished trace, which all are generated by {@link TracerContext#finish()}.
* <p>
* Created by wusheng on 2017/2/20.
*/
public
class
MockTracingContextListener
implements
TracingContextListener
{
private
List
<
TraceSegment
>
finishedTraceSegments
=
Collections
.
synchronizedList
(
new
ArrayList
<
TraceSegment
>());
@Override
public
void
afterFinished
(
TraceSegment
traceSegment
)
{
finishedTraceSegments
.
add
(
traceSegment
);
}
/**
* Assert all finished {@link #finishedTraceSegments} match the given size.
*
* @param size the give size.
*/
public
void
assertSize
(
int
size
)
{
Assert
.
assertEquals
(
size
,
finishedTraceSegments
.
size
());
}
/**
* Assert the given index is a valid index of {@link #finishedTraceSegments}
*
* @param index the given index.
*/
public
void
assertValidIndex
(
int
index
)
{
Assert
.
assertTrue
(
index
<
finishedTraceSegments
.
size
());
}
/**
* Assert the {@link TraceSegment} at the given index of {@link #finishedTraceSegments},
* and run the given {@link SegmentAssert#call(TraceSegment)} to assert.
*
* @param index the given index.
* @param segmentAssert the given assert.
*/
public
void
assertTraceSegment
(
int
index
,
SegmentAssert
segmentAssert
)
{
assertValidIndex
(
index
);
segmentAssert
.
call
(
finishedTraceSegments
.
get
(
index
));
}
/**
* Clear all hold data.
*/
public
void
clear
()
{
finishedTraceSegments
.
clear
();
}
/**
* Get {@link TraceSegment} of the given index.
*
* @param index
* @return
*/
public
TraceSegment
getFinished
(
int
index
)
{
assertSize
(
index
+
1
);
return
finishedTraceSegments
.
get
(
index
);
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/context/SegmentAssert.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.context
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
* The <code>SegmentAssert</code> interface should be implemented by any
* class whose instances are intended to assert a trace segment data.
* <p>
* Created by wusheng on 2017/2/20.
*/
public
interface
SegmentAssert
{
void
call
(
TraceSegment
finishedSegment
);
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/SpanLogReader.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace
;
import
java.lang.reflect.Field
;
import
java.util.List
;
/**
* @author wusheng
*/
public
class
SpanLogReader
{
public
static
List
<
LogData
>
getLogs
(
Span
span
)
{
Field
logs
=
null
;
try
{
logs
=
Span
.
class
.
getDeclaredField
(
"logs"
);
}
catch
(
NoSuchFieldException
e
)
{
throw
new
RuntimeException
(
e
);
}
logs
.
setAccessible
(
true
);
try
{
return
(
List
<
LogData
>)
logs
.
get
(
span
);
}
catch
(
IllegalAccessException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilder.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace
;
import
org.skywalking.apm.sniffer.mock.context.MockTracingContextListener
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
* Created by wusheng on 2017/2/20.
*/
public
interface
TraceSegmentBuilder
{
TraceSegment
build
(
MockTracingContextListener
listener
);
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/TraceSegmentBuilderFactory.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace
;
import
org.skywalking.apm.sniffer.mock.context.MockTracingContextListener
;
import
org.skywalking.apm.sniffer.mock.trace.builders.trace.*
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
* The <code>TraceSegmentBuilderFactory</code> contains all {@link TraceSegmentBuilder} implementations. All the
* implementations can build a true {@link TraceSegment} object, and contain all necessary spans, with all tags/events,
* all refs.
* <p>
* Created by wusheng on 2017/2/20.
*/
public
enum
TraceSegmentBuilderFactory
{
INSTANCE
;
/**
* @see {@link SingleTomcat200TraceBuilder}
*/
public
TraceSegment
singleTomcat200Trace
()
{
return
this
.
build
(
SingleTomcat200TraceBuilder
.
INSTANCE
);
}
/**
* @see {@link SingleTomcat404TraceBuilder}
*/
public
TraceSegment
singleTomcat404Trace
()
{
return
this
.
build
(
SingleTomcat404TraceBuilder
.
INSTANCE
);
}
/**
* @see {@link SingleTomcat500TraceBuilder}
*/
public
TraceSegment
singleTomcat500Trace
()
{
return
this
.
build
(
SingleTomcat500TraceBuilder
.
INSTANCE
);
}
/**
* @see {@link TomcatDubboClientTraceBuilder}
*/
public
TraceSegment
traceOf_Tomcat_DubboClient
()
{
return
this
.
build
(
TomcatDubboClientTraceBuilder
.
INSTANCE
);
}
/**
* @see {@link DubboServerMysqlTraceBuilder}
*/
public
TraceSegment
traceOf_DubboServer_MySQL
()
{
return
this
.
build
(
DubboServerMysqlTraceBuilder
.
INSTANCE
);
}
private
TraceSegment
build
(
TraceSegmentBuilder
builder
)
{
MockTracingContextListener
listener
=
new
MockTracingContextListener
();
try
{
TracerContext
.
ListenerManager
.
add
(
listener
);
return
builder
.
build
(
listener
);
}
finally
{
TracerContext
.
ListenerManager
.
remove
(
listener
);
}
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/DubboSpanGenerator.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.builders.span
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.context.tag.Tags
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
/**
* The <code>DubboSpanGenerator</code> generates all possible spans, by tracing Dubbo rpc.
* Including discovery/server side span.
*
* @author wusheng
*/
public
class
DubboSpanGenerator
{
public
static
class
Client
extends
SpanGeneration
{
@Override
protected
void
before
()
{
AbstractSpan
span
=
ContextManager
.
createSpan
(
"/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query"
);
Tags
.
COMPONENT
.
set
(
span
,
"Dubbo"
);
Tags
.
URL
.
set
(
span
,
"rest://192.168.1.8:20880/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query(String)"
);
Tags
.
SPAN_KIND
.
set
(
span
,
Tags
.
SPAN_KIND_SERVER
);
span
.
setPeerHost
(
"192.168.1.8"
);
span
.
setPort
(
20880
);
Tags
.
SPAN_LAYER
.
asHttp
(
span
);
}
@Override
protected
void
after
()
{
ContextManager
.
stopSpan
();
}
}
public
static
class
Server
extends
SpanGeneration
{
@Override
protected
void
before
()
{
AbstractSpan
span
=
ContextManager
.
createSpan
(
"/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query"
);
Tags
.
COMPONENT
.
set
(
span
,
"Dubbo"
);
Tags
.
URL
.
set
(
span
,
"rest://192.168.1.8:20880/default_rpc/org.skywalking.apm.test.persistence.PersistenceService.query(String)"
);
Tags
.
SPAN_KIND
.
set
(
span
,
Tags
.
SPAN_KIND_CLIENT
);
span
.
setPeerHost
(
"10.21.9.35"
);
Tags
.
SPAN_LAYER
.
asHttp
(
span
);
}
@Override
protected
void
after
()
{
ContextManager
.
stopSpan
();
}
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/MySQLGenerator.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.builders.span
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.context.tag.Tags
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
/**
* The <code>MySQLGenerator</code> generates all possible spans, by tracing mysql discovery access.
*
* @author wusheng
*/
public
class
MySQLGenerator
{
public
static
class
Query
extends
SpanGeneration
{
@Override
protected
void
before
()
{
AbstractSpan
span
=
ContextManager
.
createSpan
(
"mysql/jdbi/statement/executeQuery"
);
Tags
.
COMPONENT
.
set
(
span
,
"Mysql"
);
Tags
.
SPAN_KIND
.
set
(
span
,
Tags
.
SPAN_KIND_CLIENT
);
span
.
setPeerHost
(
"10.5.34.18"
);
span
.
setPort
(
30088
);
Tags
.
DB_INSTANCE
.
set
(
span
,
"mysql-instance"
);
Tags
.
DB_STATEMENT
.
set
(
span
,
"select * from users where user_id = 1"
);
Tags
.
DB_TYPE
.
set
(
span
,
"sql"
);
Tags
.
SPAN_LAYER
.
asDB
(
span
);
}
@Override
protected
void
after
()
{
ContextManager
.
stopSpan
();
}
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/SpanGeneration.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.builders.span
;
/**
* The <code>SpanGeneration</code> implementations can generate several kinds of spans.
*
* @author wusheng
*/
public
abstract
class
SpanGeneration
{
private
SpanGeneration
[]
next
;
public
SpanGeneration
build
(
SpanGeneration
next
)
{
this
.
next
=
new
SpanGeneration
[]
{
next
};
return
next
;
}
public
void
build
(
SpanGeneration
...
next
)
{
this
.
next
=
next
;
}
protected
abstract
void
before
();
protected
abstract
void
after
();
public
void
generate
()
{
this
.
before
();
if
(
next
!=
null
)
{
for
(
SpanGeneration
generation
:
next
)
{
generation
.
generate
();
}
}
this
.
after
();
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/span/TomcatSpanGenerator.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.builders.span
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.context.tag.Tags
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
/**
* The <code>TomcatSpanGenerator</code> generate all possible spans, by tracing Tomcat.
* <p>
* Created by wusheng on 2017/2/20.
*/
public
class
TomcatSpanGenerator
{
public
static
class
ON200
extends
SpanGeneration
{
public
static
final
ON200
INSTANCE
=
new
ON200
();
@Override
protected
void
before
()
{
AbstractSpan
webSpan
=
ContextManager
.
createSpan
(
"/web/serviceA"
);
Tags
.
COMPONENT
.
set
(
webSpan
,
"Tomcat"
);
Tags
.
URL
.
set
(
webSpan
,
"http://10.21.9.35/web/serviceA"
);
Tags
.
SPAN_KIND
.
set
(
webSpan
,
Tags
.
SPAN_KIND_SERVER
);
webSpan
.
setPeerHost
(
"10.21.9.35"
);
webSpan
.
setPort
(
80
);
Tags
.
SPAN_LAYER
.
asHttp
(
webSpan
);
}
@Override
protected
void
after
()
{
AbstractSpan
webSpan
=
ContextManager
.
activeSpan
();
Tags
.
STATUS_CODE
.
set
(
webSpan
,
200
);
ContextManager
.
stopSpan
();
}
}
public
static
class
ON404
extends
SpanGeneration
{
public
static
final
ON404
INSTANCE
=
new
ON404
();
@Override
protected
void
before
()
{
AbstractSpan
webSpan
=
ContextManager
.
createSpan
(
"/web/service/unknown"
);
Tags
.
COMPONENT
.
set
(
webSpan
,
"Tomcat"
);
Tags
.
URL
.
set
(
webSpan
,
"http://10.21.9.35/web/unknown"
);
Tags
.
SPAN_KIND
.
set
(
webSpan
,
Tags
.
SPAN_KIND_SERVER
);
webSpan
.
setPeerHost
(
"10.21.9.35"
);
webSpan
.
setPort
(
80
);
Tags
.
SPAN_LAYER
.
asHttp
(
webSpan
);
}
@Override
protected
void
after
()
{
AbstractSpan
webSpan
=
ContextManager
.
activeSpan
();
Tags
.
STATUS_CODE
.
set
(
webSpan
,
404
);
Tags
.
ERROR
.
set
(
webSpan
,
true
);
ContextManager
.
stopSpan
();
}
}
public
static
class
ON500
extends
SpanGeneration
{
public
static
final
ON500
INSTANCE
=
new
ON500
();
@Override
protected
void
before
()
{
AbstractSpan
webSpan
=
ContextManager
.
createSpan
(
"/web/error/service"
);
Tags
.
COMPONENT
.
set
(
webSpan
,
"Tomcat"
);
Tags
.
URL
.
set
(
webSpan
,
"http://10.21.9.35/web/error/service"
);
Tags
.
SPAN_KIND
.
set
(
webSpan
,
Tags
.
SPAN_KIND_SERVER
);
webSpan
.
setPeerHost
(
"10.21.9.35"
);
webSpan
.
setPort
(
80
);
Tags
.
SPAN_LAYER
.
asHttp
(
webSpan
);
}
@Override
protected
void
after
()
{
AbstractSpan
webSpan
=
ContextManager
.
activeSpan
();
Tags
.
STATUS_CODE
.
set
(
webSpan
,
500
);
Tags
.
ERROR
.
set
(
webSpan
,
true
);
webSpan
.
log
(
new
NumberFormatException
(
"Can't convert 'abc' to int."
));
ContextManager
.
stopSpan
();
}
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/DubboServerMysqlTraceBuilder.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.builders.trace
;
import
org.skywalking.apm.sniffer.mock.context.MockTracingContextListener
;
import
org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder
;
import
org.skywalking.apm.sniffer.mock.trace.builders.span.DubboSpanGenerator
;
import
org.skywalking.apm.sniffer.mock.trace.builders.span.MySQLGenerator
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
* @author wusheng
*/
public
enum
DubboServerMysqlTraceBuilder
implements
TraceSegmentBuilder
{
INSTANCE
;
@Override
public
TraceSegment
build
(
MockTracingContextListener
listener
)
{
DubboSpanGenerator
.
Server
rootSpan
=
new
DubboSpanGenerator
.
Server
();
rootSpan
.
build
(
new
MySQLGenerator
.
Query
());
rootSpan
.
generate
();
return
listener
.
getFinished
(
0
);
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat200TraceBuilder.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.builders.trace
;
import
org.skywalking.apm.sniffer.mock.context.MockTracingContextListener
;
import
org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder
;
import
org.skywalking.apm.sniffer.mock.trace.builders.span.TomcatSpanGenerator
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
* A Trace contains only one span, which represent a tomcat server side span.
* <p>
* Created by wusheng on 2017/2/20.
*/
public
enum
SingleTomcat200TraceBuilder
implements
TraceSegmentBuilder
{
INSTANCE
;
@Override
public
TraceSegment
build
(
MockTracingContextListener
listener
)
{
TomcatSpanGenerator
.
ON200
.
INSTANCE
.
generate
();
return
listener
.
getFinished
(
0
);
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat404TraceBuilder.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.builders.trace
;
import
org.skywalking.apm.sniffer.mock.context.MockTracingContextListener
;
import
org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder
;
import
org.skywalking.apm.sniffer.mock.trace.builders.span.TomcatSpanGenerator
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
* A Trace contains only one span, which represent a tomcat server side span.
* <p>
* Created by wusheng on 2017/2/20.
*/
public
enum
SingleTomcat404TraceBuilder
implements
TraceSegmentBuilder
{
INSTANCE
;
@Override
public
TraceSegment
build
(
MockTracingContextListener
listener
)
{
TomcatSpanGenerator
.
ON404
.
INSTANCE
.
generate
();
return
listener
.
getFinished
(
0
);
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/SingleTomcat500TraceBuilder.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.builders.trace
;
import
org.skywalking.apm.sniffer.mock.context.MockTracingContextListener
;
import
org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder
;
import
org.skywalking.apm.sniffer.mock.trace.builders.span.TomcatSpanGenerator
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
* A Trace contains only one span, which represent a tomcat server side span.
* <p>
* Created by wusheng on 2017/2/20.
*/
public
enum
SingleTomcat500TraceBuilder
implements
TraceSegmentBuilder
{
INSTANCE
;
@Override
public
TraceSegment
build
(
MockTracingContextListener
listener
)
{
TomcatSpanGenerator
.
ON500
.
INSTANCE
.
generate
();
return
listener
.
getFinished
(
0
);
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/builders/trace/TomcatDubboClientTraceBuilder.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.builders.trace
;
import
org.skywalking.apm.sniffer.mock.context.MockTracingContextListener
;
import
org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilder
;
import
org.skywalking.apm.sniffer.mock.trace.builders.span.DubboSpanGenerator
;
import
org.skywalking.apm.sniffer.mock.trace.builders.span.TomcatSpanGenerator
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
* A Trace segment contains two spans with ChildOf relations,
* the parent is a Tomcat span,
* the child is a Dubbo discovery span.
*
* @author wusheng
*/
public
enum
TomcatDubboClientTraceBuilder
implements
TraceSegmentBuilder
{
INSTANCE
;
@Override
public
TraceSegment
build
(
MockTracingContextListener
listener
)
{
TomcatSpanGenerator
.
ON200
rootSpan
=
new
TomcatSpanGenerator
.
ON200
();
rootSpan
.
build
(
new
DubboSpanGenerator
.
Client
());
rootSpan
.
generate
();
return
listener
.
getFinished
(
0
);
}
}
apm-sniffer/apm-sniffer-mock/src/main/java/org/skywalking/apm/sniffer/mock/trace/tags/StringTagReader.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock.trace.tags
;
import
java.lang.reflect.Field
;
import
java.util.List
;
import
org.skywalking.apm.agent.core.context.tag.StringTag
;
/**
* @author wusheng
*/
public
class
StringTagReader
{
public
static
String
get
(
Span
span
,
StringTag
tag
)
{
List
<
StringTagItem
>
tagsWithStrList
=
null
;
try
{
Field
tagsWithStr
=
Span
.
class
.
getDeclaredField
(
"tagsWithStr"
);
tagsWithStr
.
setAccessible
(
true
);
tagsWithStrList
=
(
List
<
StringTagItem
>)
tagsWithStr
.
get
(
span
);
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
catch
(
NoSuchFieldException
e
)
{
e
.
printStackTrace
();
}
for
(
StringTagItem
item
:
tagsWithStrList
)
{
if
(
tag
.
key
().
equals
(
item
.
getKey
()))
{
return
item
.
getValue
();
}
}
return
null
;
}
}
apm-sniffer/apm-sniffer-mock/src/test/java/org/skywalking/apm/sniffer/mock/MockTracingContextListenerTestCase.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.sniffer.mock
;
import
org.junit.Assert
;
import
org.junit.BeforeClass
;
import
org.junit.Test
;
import
org.skywalking.apm.agent.core.boot.ServiceManager
;
import
org.skywalking.apm.sniffer.mock.context.MockTracingContextListener
;
import
org.skywalking.apm.sniffer.mock.context.SegmentAssert
;
import
org.skywalking.apm.sniffer.mock.trace.TraceSegmentBuilderFactory
;
import
org.skywalking.apm.agent.core.context.trace.TraceSegment
;
/**
* Created by wusheng on 2017/2/21.
*/
public
class
MockTracingContextListenerTestCase
{
@BeforeClass
public
static
void
setup
()
{
ServiceManager
.
INSTANCE
.
boot
();
}
@Test
public
void
testAfterFinished
()
{
MockTracingContextListener
listener
=
new
MockTracingContextListener
();
listener
.
afterFinished
(
TraceSegmentBuilderFactory
.
INSTANCE
.
singleTomcat200Trace
());
Assert
.
assertNotNull
(
listener
.
getFinished
(
0
));
}
@Test
(
expected
=
AssertionError
.
class
)
public
void
testAssertSize
()
{
MockTracingContextListener
listener
=
new
MockTracingContextListener
();
listener
.
afterFinished
(
TraceSegmentBuilderFactory
.
INSTANCE
.
singleTomcat404Trace
());
listener
.
assertSize
(
0
);
}
@Test
public
void
testAssertTraceSegment
()
{
MockTracingContextListener
listener
=
new
MockTracingContextListener
();
listener
.
afterFinished
(
TraceSegmentBuilderFactory
.
INSTANCE
.
singleTomcat404Trace
());
listener
.
afterFinished
(
TraceSegmentBuilderFactory
.
INSTANCE
.
singleTomcat500Trace
());
listener
.
assertTraceSegment
(
0
,
new
SegmentAssert
()
{
@Override
public
void
call
(
TraceSegment
finishedSegment
)
{
Assert
.
assertNotNull
(
finishedSegment
);
}
});
}
@Test
(
expected
=
AssertionError
.
class
)
public
void
testClear
()
{
MockTracingContextListener
listener
=
new
MockTracingContextListener
();
listener
.
afterFinished
(
TraceSegmentBuilderFactory
.
INSTANCE
.
singleTomcat404Trace
());
listener
.
afterFinished
(
TraceSegmentBuilderFactory
.
INSTANCE
.
singleTomcat500Trace
());
listener
.
clear
();
listener
.
assertValidIndex
(
0
);
}
@Test
public
void
testTraceOf_Tomcat_DubboClient
()
{
TraceSegment
segment
=
TraceSegmentBuilderFactory
.
INSTANCE
.
traceOf_Tomcat_DubboClient
();
Assert
.
assertEquals
(
2
,
segment
.
getSpans
().
size
());
}
@Test
public
void
testTraceOf_DubboServer_MySQL
()
{
TraceSegment
segment
=
TraceSegmentBuilderFactory
.
INSTANCE
.
traceOf_DubboServer_MySQL
();
Assert
.
assertEquals
(
2
,
segment
.
getSpans
().
size
());
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/PrintTraceIdInterceptor.java
浏览文件 @
0e25c6ea
package
org.skywalking.apm.toolkit.activation.log.log4j.v1.x
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
...
...
@@ -8,29 +9,19 @@ import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptR
* Created by wusheng on 2016/12/7.
*/
public
class
PrintTraceIdInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
@Override
public
void
beforeMethod
(
EnhancedInstance
objInst
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
MethodInterceptResult
result
)
throws
Throwable
{
}
/**
* Override org.skywalking.apm.toolkit.log.log4j.v1.x.TraceIdPatternConverter.convert(),
*
* @param context instance context, a class instance only has one {@link EnhancedClassInstanceContext} instance.
* @param interceptorContext method context, includes class name, method name, etc.
* @param ret the method's original return value.
* @return the traceId
*/
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
Object
ret
)
{
@Override
public
Object
afterMethod
(
EnhancedInstance
objInst
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Object
ret
)
throws
Throwable
{
return
"TID:"
+
ContextManager
.
getGlobalTraceId
();
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
@Override
public
void
handleMethodException
(
EnhancedInstance
objInst
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Throwable
t
)
{
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v1/x/TraceIdPatternConverterActivation.java
浏览文件 @
0e25c6ea
...
...
@@ -50,6 +50,10 @@ public class TraceIdPatternConverterActivation extends ClassInstanceMethodsEnhan
public
String
getMethodsInterceptor
()
{
return
"org.skywalking.apm.toolkit.activation.log.log4j.v1.x.PrintTraceIdInterceptor"
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
}
};
}
...
...
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/Log4j2OutputAppenderActivation.java
浏览文件 @
0e25c6ea
...
...
@@ -41,6 +41,10 @@ public class Log4j2OutputAppenderActivation extends ClassStaticMethodsEnhancePlu
public
String
getMethodsInterceptor
()
{
return
"org.skywalking.apm.toolkit.activation.log.log4j.v2.x.PrintTraceIdInterceptor"
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
}
};
}
...
...
apm-sniffer/apm-toolkit-activation/apm-toolkit-log4j-2.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/log4j/v2/x/PrintTraceIdInterceptor.java
浏览文件 @
0e25c6ea
...
...
@@ -11,24 +11,25 @@ public class PrintTraceIdInterceptor implements StaticMethodsAroundInterceptor {
/**
* Override org.skywalking.apm.toolkit.log.log4j.v2.x.Log4j2OutputAppender.append(),
*
* @param interceptorContext method context, includes class name, method name, etc.
* @param result change this result, to output the traceId. The origin append() method will not invoke.
* @param result change this result, to output the traceId. The origin append() method will not invoke.
*/
@Override
public
void
beforeMethod
(
StaticMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
((
StringBuilder
)
interceptorContext
.
allArguments
()
[
0
]).
append
(
"TID:"
+
ContextManager
.
getGlobalTraceId
());
@Override
public
void
beforeMethod
(
Class
clazz
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
parameterTypes
,
MethodInterceptResult
result
)
{
((
StringBuilder
)
allArguments
[
0
]).
append
(
"TID:"
+
ContextManager
.
getGlobalTraceId
());
//make sure origin method do not invoke.
result
.
defineReturnValue
(
null
);
}
@Override
public
Object
afterMethod
(
StaticMethodInvokeContext
interceptorContext
,
Object
ret
)
{
public
Object
afterMethod
(
Class
clazz
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
parameterTypes
,
Object
ret
)
{
return
null
;
}
@Override
public
void
handleMethodException
(
Throwable
t
,
MethodInvokeContext
interceptorContext
)
{
public
void
handleMethodException
(
Class
clazz
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
parameterTypes
,
Throwable
t
)
{
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/LogbackPatternConverterActivation.java
浏览文件 @
0e25c6ea
...
...
@@ -51,6 +51,10 @@ public class LogbackPatternConverterActivation extends ClassInstanceMethodsEnhan
public
String
getMethodsInterceptor
()
{
return
"org.skywalking.apm.toolkit.activation.log.logback.v1.x.PrintTraceIdInterceptor"
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
}
};
}
...
...
apm-sniffer/apm-toolkit-activation/apm-toolkit-logback-1.x-activation/src/main/java/org/skywalking/apm/toolkit/activation/log/logback/v1/x/PrintTraceIdInterceptor.java
浏览文件 @
0e25c6ea
package
org.skywalking.apm.toolkit.activation.log.logback.v1.x
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
...
...
@@ -8,29 +9,19 @@ import org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptR
* Created by wusheng on 2016/12/7.
*/
public
class
PrintTraceIdInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
@Override
public
void
beforeMethod
(
EnhancedInstance
objInst
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
MethodInterceptResult
result
)
throws
Throwable
{
}
/**
* Override org.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter.convert(),
*
* @param context instance context, a class instance only has one {@link EnhancedClassInstanceContext} instance.
* @param interceptorContext method context, includes class name, method name, etc.
* @param ret the method's original return value.
* @return the traceId
*/
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
Object
ret
)
{
@Override
public
Object
afterMethod
(
EnhancedInstance
objInst
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Object
ret
)
throws
Throwable
{
return
"TID:"
+
ContextManager
.
getGlobalTraceId
();
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
@Override
public
void
handleMethodException
(
EnhancedInstance
objInst
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
argumentsTypes
,
Throwable
t
)
{
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/SkyWalkingSpanActivation.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.toolkit.activation.opentracing.span
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.matcher.ElementMatcher
;
import
org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine
;
import
java.util.Map
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
named
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
takesArguments
;
/**
* Created by xin on 2017/1/16.
*/
public
class
SkyWalkingSpanActivation
extends
ClassInstanceMethodsEnhancePluginDefine
{
@Override
protected
String
enhanceClassName
()
{
return
"SkyWalkingSpan"
;
}
@Override
protected
ConstructorInterceptPoint
[]
getConstructorsInterceptPoints
()
{
return
new
ConstructorInterceptPoint
[]
{
new
ConstructorInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getConstructorMatcher
()
{
return
takesArguments
(
String
.
class
,
long
.
class
,
Map
.
class
);
}
@Override
public
String
getConstructorInterceptor
()
{
return
"SpanNewInstanceInterceptor"
;
}
}
};
}
@Override
protected
InstanceMethodsInterceptPoint
[]
getInstanceMethodsInterceptPoints
()
{
return
new
InstanceMethodsInterceptPoint
[]
{
new
InstanceMethodsInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getMethodsMatcher
()
{
return
named
(
"setTag"
);
}
@Override
public
String
getMethodsInterceptor
()
{
return
"org.skywalking.apm.toolkit.activation.opentracing.span.interceptor.SpanSetTagInterceptor"
;
}
},
new
InstanceMethodsInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getMethodsMatcher
()
{
return
named
(
"setOperationName"
);
}
@Override
public
String
getMethodsInterceptor
()
{
return
"org.skywalking.apm.toolkit.activation.opentracing.span.interceptor.SpanSetOperationNameInterceptor"
;
}
},
new
InstanceMethodsInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getMethodsMatcher
()
{
return
named
(
"finish"
);
}
@Override
public
String
getMethodsInterceptor
()
{
return
"org.skywalking.apm.toolkit.activation.opentracing.span.interceptor.SpanFinishInterceptor"
;
}
}
};
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanFinishInterceptor.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.toolkit.activation.opentracing.span.interceptor
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
import
org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan
;
/**
* Intercept these following methods:
* {@link SkyWalkingSpan#finish()}
* {@link SkyWalkingSpan#finish(long)}
*/
public
class
SpanFinishInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
}
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
Object
ret
)
{
Object
[]
allArguments
=
interceptorContext
.
allArguments
();
if
(
allArguments
.
length
==
1
)
{
ContextManager
.
stopSpan
((
Long
)
allArguments
[
0
]);
}
else
{
ContextManager
.
stopSpan
();
}
return
ret
;
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanNewInstanceInterceptor.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.toolkit.activation.opentracing.span.interceptor
;
import
java.util.Map
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.context.trace.AbstractSpan
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor
;
import
org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan
;
/**
* Intercept {@link SkyWalkingSpan} constructor.
*/
public
class
SpanNewInstanceInterceptor
implements
InstanceConstructorInterceptor
{
@Override
public
void
onConstruct
(
EnhancedClassInstanceContext
context
,
ConstructorInvokeContext
interceptorContext
)
{
Object
[]
allArguments
=
interceptorContext
.
allArguments
();
String
operationName
=
(
String
)
allArguments
[
0
];
long
startTime
=
(
Long
)
allArguments
[
1
];
Map
<
String
,
String
>
tags
=
(
Map
<
String
,
String
>)
allArguments
[
2
];
AbstractSpan
span
=
ContextManager
.
createSpan
(
operationName
,
startTime
);
for
(
Map
.
Entry
<
String
,
String
>
entry
:
tags
.
entrySet
())
{
span
.
setTag
(
entry
.
getKey
(),
entry
.
getValue
());
}
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetOperationNameInterceptor.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.toolkit.activation.opentracing.span.interceptor
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
import
org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan
;
/**
* Intercept {@link SkyWalkingSpan#setOperationName(String)}
*/
public
class
SpanSetOperationNameInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
String
operationName
=
(
String
)
interceptorContext
.
allArguments
()[
0
];
ContextManager
.
activeSpan
().
setOperationName
(
operationName
);
}
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
Object
ret
)
{
return
ret
;
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/span/interceptor/SpanSetTagInterceptor.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.toolkit.activation.opentracing.span.interceptor
;
import
io.opentracing.tag.Tags
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
import
org.skywalking.apm.toolkit.opentracing.SkyWalkingSpan
;
/**
* Intercept these following methods:
* {@link SkyWalkingSpan#setTag(String, boolean)}
* {@link SkyWalkingSpan#setTag(String, Number)}
* {@link SkyWalkingSpan#setTag(String, String)}
*/
public
class
SpanSetTagInterceptor
implements
InstanceMethodsAroundInterceptor
{
/**
* key of {@link org.skywalking.apm.trace.tag.Tags#PEER_HOST}
*/
private
static
final
String
KEY_OF_PEER_HOST_TAG
=
"peer.host"
;
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
String
key
=
adaptTag
((
String
)
interceptorContext
.
allArguments
()[
0
]);
Object
value
=
interceptorContext
.
allArguments
()[
1
];
if
(
value
instanceof
String
)
ContextManager
.
activeSpan
().
setTag
(
key
,
(
String
)
value
);
else
if
(
value
instanceof
Boolean
)
ContextManager
.
activeSpan
().
setTag
(
key
,
(
Boolean
)
value
);
else
if
(
value
instanceof
Integer
)
ContextManager
.
activeSpan
().
setTag
(
key
,
(
Integer
)
value
);
else
if
(
value
instanceof
Short
)
ContextManager
.
activeSpan
().
setTag
(
key
,
((
Short
)
value
).
intValue
());
else
ContextManager
.
activeSpan
().
setTag
(
key
,
value
.
toString
());
}
/**
* Adapt {@link Tags} of open tracing.
*
* @return tag key
*/
private
String
adaptTag
(
String
tagKey
)
{
String
key
=
tagKey
;
if
(
isPeerTag
(
key
))
{
key
=
KEY_OF_PEER_HOST_TAG
;
}
return
key
;
}
/**
* Check whether current tag is one of {@link Tags#PEER_HOSTNAME}, {@link Tags#PEER_HOST_IPV4} and {@link Tags#PEER_HOST_IPV6}.
* If yes, will use the {@link org.skywalking.apm.trace.tag.Tags#PEER_HOST} as the key, instead of original key,
* in {@link #adaptTag(String)}.
*
* @param key of current tag
* @return true if this tag is host related.
*/
private
boolean
isPeerTag
(
String
key
)
{
return
Tags
.
PEER_HOST_IPV4
.
equals
(
key
)
||
Tags
.
PEER_HOST_IPV6
.
equals
(
key
)
||
Tags
.
PEER_HOSTNAME
.
equals
(
key
);
}
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
Object
ret
)
{
return
ret
;
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/SkyWalkingTracerActivation.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.toolkit.activation.opentracing.tracer
;
import
net.bytebuddy.description.method.MethodDescription
;
import
net.bytebuddy.matcher.ElementMatcher
;
import
org.skywalking.apm.agent.core.plugin.interceptor.ConstructorInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.interceptor.InstanceMethodsInterceptPoint
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine
;
import
static
net
.
bytebuddy
.
matcher
.
ElementMatchers
.
named
;
/**
* @author wusheng
*/
public
class
SkyWalkingTracerActivation
extends
ClassInstanceMethodsEnhancePluginDefine
{
@Override
protected
String
enhanceClassName
()
{
return
"SkyWalkingTracer"
;
}
@Override
protected
ConstructorInterceptPoint
[]
getConstructorsInterceptPoints
()
{
return
null
;
}
@Override
protected
InstanceMethodsInterceptPoint
[]
getInstanceMethodsInterceptPoints
()
{
return
new
InstanceMethodsInterceptPoint
[]
{
new
InstanceMethodsInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getMethodsMatcher
()
{
return
named
(
"formatInjectCrossProcessPropagationContextData"
);
}
@Override
public
String
getMethodsInterceptor
()
{
return
"TracerInjectFormatCrossProcessContextInterceptor"
;
}
},
new
InstanceMethodsInterceptPoint
()
{
@Override
public
ElementMatcher
<
MethodDescription
>
getMethodsMatcher
()
{
return
named
(
"formatExtractCrossProcessPropagationContextData"
);
}
@Override
public
String
getMethodsInterceptor
()
{
return
"TracerExtractCrossProcessContextInterceptor"
;
}
}
};
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerExtractCrossProcessContextInterceptor.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.toolkit.activation.opentracing.tracer.interceptor
;
import
org.skywalking.apm.agent.core.context.ContextCarrier
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
import
org.skywalking.apm.toolkit.opentracing.SkyWalkingTracer
;
/**
* Intercept {@link SkyWalkingTracer#formatExtractCrossProcessPropagationContextData(String)}
*/
public
class
TracerExtractCrossProcessContextInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
}
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
Object
ret
)
{
String
contextDataStr
=
(
String
)
interceptorContext
.
allArguments
()[
0
];
ContextCarrier
carrier
=
new
ContextCarrier
();
carrier
.
deserialize
(
contextDataStr
);
ContextManager
.
extract
(
carrier
);
return
ret
;
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/main/java/org/skywalking/apm/toolkit/activation/opentracing/tracer/interceptor/TracerInjectFormatCrossProcessContextInterceptor.java
已删除
100644 → 0
浏览文件 @
93a45165
package
org.skywalking.apm.toolkit.activation.opentracing.tracer.interceptor
;
import
org.skywalking.apm.agent.core.context.ContextCarrier
;
import
org.skywalking.apm.agent.core.context.ContextManager
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor
;
import
org.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult
;
import
org.skywalking.apm.toolkit.opentracing.SkyWalkingTracer
;
/**
* Intercept {@link SkyWalkingTracer#formatInjectCrossProcessPropagationContextData()}
*/
public
class
TracerInjectFormatCrossProcessContextInterceptor
implements
InstanceMethodsAroundInterceptor
{
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
}
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
,
Object
ret
)
{
ContextCarrier
carrier
=
new
ContextCarrier
();
ContextManager
.
inject
(
carrier
);
return
carrier
.
serialize
();
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
InstanceMethodInvokeContext
interceptorContext
)
{
}
}
apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextActivation.java
浏览文件 @
0e25c6ea
...
...
@@ -41,6 +41,10 @@ public class TraceContextActivation extends ClassStaticMethodsEnhancePluginDefin
public
String
getMethodsInterceptor
()
{
return
"org.skywalking.apm.toolkit.activation.trace.TraceContextInterceptor"
;
}
@Override
public
boolean
isOverrideArgs
()
{
return
false
;
}
}
};
}
...
...
apm-sniffer/apm-toolkit-activation/apm-toolkit-trace-context-activation/src/main/java/org/skywalking/apm/toolkit/activation/trace/TraceContextInterceptor.java
浏览文件 @
0e25c6ea
...
...
@@ -6,25 +6,24 @@ import org.skywalking.apm.agent.core.plugin.interceptor.enhance.StaticMethodsAro
import
org.skywalking.apm.logging.ILog
;
import
org.skywalking.apm.logging.LogManager
;
/**
* Created by xin on 2016/12/15.
*/
public
class
TraceContextInterceptor
implements
StaticMethodsAroundInterceptor
{
private
ILog
logger
=
LogManager
.
getLogger
(
TraceContextInterceptor
.
class
);
@Override
public
void
beforeMethod
(
StaticMethodInvokeContext
interceptorContext
,
MethodInterceptResult
result
)
{
@Override
public
void
beforeMethod
(
Class
clazz
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
parameterTypes
,
MethodInterceptResult
result
)
{
}
@Override
public
Object
afterMethod
(
StaticMethodInvokeContext
interceptorContext
,
Object
ret
)
{
public
Object
afterMethod
(
Class
clazz
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
parameterTypes
,
Object
ret
)
{
return
ContextManager
.
getGlobalTraceId
();
}
@Override
public
void
handleMethodException
(
Throwable
t
,
MethodInvokeContext
interceptorContext
)
{
public
void
handleMethodException
(
Class
clazz
,
String
methodName
,
Object
[]
allArguments
,
Class
<?>[]
parameterTypes
,
Throwable
t
)
{
logger
.
error
(
"Failed to get trace Id."
,
t
);
}
}
apm-sniffer/pom.xml
浏览文件 @
0e25c6ea
...
...
@@ -17,7 +17,6 @@
<module>
apm-agent-core
</module>
<module>
apm-sdk-plugin
</module>
<module>
apm-toolkit-activation
</module>
<module>
apm-sniffer-mock
</module>
</modules>
<properties>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录