Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
ba18e53c
C
cat
项目概览
梦中观雨
/
cat
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
cat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ba18e53c
编写于
11月 01, 2013
作者:
A
ainilife
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add unit test for DependencyAnalyzer
上级
c7644c24
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
205 addition
and
0 deletion
+205
-0
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/dependency/Configurator.java
...va/com/dianping/cat/consumer/dependency/Configurator.java
+71
-0
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/dependency/DependencyAnalyzerTest.java
...nping/cat/consumer/dependency/DependencyAnalyzerTest.java
+94
-0
cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/dependency/DependencyAnalyzerTest.xml
...anping/cat/consumer/dependency/DependencyAnalyzerTest.xml
+24
-0
cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/dependency/dependency_analyzer.xml
.../dianping/cat/consumer/dependency/dependency_analyzer.xml
+16
-0
未找到文件。
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/dependency/Configurator.java
0 → 100644
浏览文件 @
ba18e53c
package
com.dianping.cat.consumer.dependency
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
;
import
org.unidal.lookup.annotation.Inject
;
import
org.unidal.lookup.configuration.AbstractResourceConfigurator
;
import
org.unidal.lookup.configuration.Component
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.DomainManager
;
import
com.dianping.cat.consumer.MockReportManager
;
import
com.dianping.cat.consumer.dependency.model.entity.DependencyReport
;
import
com.dianping.cat.service.ReportDelegate
;
import
com.dianping.cat.service.ReportManager
;
public
class
Configurator
extends
AbstractResourceConfigurator
{
public
static
void
main
(
String
[]
args
)
{
generatePlexusComponentsXmlFile
(
new
Configurator
());
}
protected
Class
<?>
getTestClass
()
{
return
DependencyAnalyzerTest
.
class
;
}
@Override
public
List
<
Component
>
defineComponents
()
{
List
<
Component
>
all
=
new
ArrayList
<
Component
>();
final
String
ID
=
DependencyAnalyzer
.
ID
;
all
.
add
(
C
(
ReportManager
.
class
,
ID
,
MockDependencyReportManager
.
class
)
//
.
req
(
ReportDelegate
.
class
,
ID
));
all
.
add
(
C
(
ReportDelegate
.
class
,
ID
,
ExtendedDependencyDelegate
.
class
));
all
.
add
(
C
(
DomainManager
.
class
,
ExtendedDomainManager
.
class
));
return
all
;
}
public
static
class
ExtendedDependencyDelegate
extends
DependencyDelegate
{
}
public
static
class
MockDependencyReportManager
extends
MockReportManager
<
DependencyReport
>
{
private
DependencyReport
m_report
;
@Inject
private
ReportDelegate
<
DependencyReport
>
m_delegate
;
@Override
public
DependencyReport
getHourlyReport
(
long
startTime
,
String
domain
,
boolean
createIfNotExist
)
{
if
(
m_report
==
null
)
{
m_report
=
(
DependencyReport
)
m_delegate
.
makeReport
(
domain
,
startTime
,
Constants
.
HOUR
);
}
return
m_report
;
}
}
public
static
class
ExtendedDomainManager
extends
DomainManager
{
@Override
public
void
initialize
()
throws
InitializationException
{
}
@Override
public
String
queryDomainByIp
(
String
ip
)
{
return
"Cat-CatTest"
;
}
}
}
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/dependency/DependencyAnalyzerTest.java
0 → 100644
浏览文件 @
ba18e53c
package
com.dianping.cat.consumer.dependency
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.TimeZone
;
import
junit.framework.Assert
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.unidal.helper.Files
;
import
org.unidal.lookup.ComponentTestCase
;
import
com.dianping.cat.Constants
;
import
com.dianping.cat.analysis.MessageAnalyzer
;
import
com.dianping.cat.consumer.dependency.model.entity.DependencyReport
;
import
com.dianping.cat.message.Message
;
import
com.dianping.cat.message.internal.DefaultTransaction
;
import
com.dianping.cat.message.spi.MessageTree
;
import
com.dianping.cat.message.spi.internal.DefaultMessageTree
;
public
class
DependencyAnalyzerTest
extends
ComponentTestCase
{
private
long
m_timestamp
;
private
DependencyAnalyzer
m_analyzer
;
private
String
m_domain
=
"group"
;
@Before
public
void
setUp
()
throws
Exception
{
super
.
setUp
();
TimeZone
.
setDefault
(
TimeZone
.
getTimeZone
(
"Asia/Shanghai"
));
long
currentTimeMillis
=
System
.
currentTimeMillis
();
m_timestamp
=
currentTimeMillis
-
currentTimeMillis
%
(
3600
*
1000
);
m_analyzer
=
(
DependencyAnalyzer
)
lookup
(
MessageAnalyzer
.
class
,
DependencyAnalyzer
.
ID
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyyMMdd HH:mm"
);
Date
date
=
sdf
.
parse
(
"20120101 00:00"
);
m_analyzer
.
initialize
(
date
.
getTime
(),
Constants
.
HOUR
,
Constants
.
MINUTE
*
5
);
}
@Test
public
void
testProcess
()
throws
Exception
{
for
(
int
i
=
1
;
i
<=
100
;
i
++)
{
MessageTree
tree
=
generateMessageTree
(
i
);
m_analyzer
.
process
(
tree
);
}
DependencyReport
report
=
m_analyzer
.
getReport
(
m_domain
);
String
expected
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"dependency_analyzer.xml"
),
"utf-8"
);
Assert
.
assertEquals
(
expected
.
replaceAll
(
"\r"
,
""
),
report
.
toString
().
replaceAll
(
"\r"
,
""
));
}
protected
MessageTree
generateMessageTree
(
int
i
)
{
MessageTree
tree
=
new
DefaultMessageTree
();
tree
.
setMessageId
(
""
+
i
);
tree
.
setDomain
(
m_domain
);
tree
.
setHostName
(
"group001"
);
tree
.
setIpAddress
(
"192.168.1.1"
);
DefaultTransaction
t
;
DefaultTransaction
event
;
if
(
i
%
3
==
0
)
{
t
=
new
DefaultTransaction
(
"URL"
,
"Cat-Test-Call"
,
null
);
event
=
new
DefaultTransaction
(
"Call"
,
"192.168.1.0:3000:class:method1"
,
null
);
}
else
if
(
i
%
3
==
1
)
{
t
=
new
DefaultTransaction
(
"PigeonService"
,
"Cat-Test-Service"
,
null
);
event
=
new
DefaultTransaction
(
"SQL"
,
"192.168.1.2:3000:class:method2"
,
null
);
}
else
{
t
=
new
DefaultTransaction
(
"Service"
,
"Cat-Test-Service"
,
null
);
event
=
new
DefaultTransaction
(
"Cache.CatTest"
,
"192.168.1.2:3000:class:method2"
,
null
);
}
event
.
setTimestamp
(
m_timestamp
+
5
*
60
*
1000
);
event
.
setDurationInMillis
(
i
);
event
.
setStatus
(
Message
.
SUCCESS
);
t
.
addChild
(
event
);
t
.
complete
();
t
.
setDurationInMillis
(
i
*
2
);
t
.
setTimestamp
(
m_timestamp
+
1000
);
tree
.
setMessage
(
t
);
return
tree
;
}
}
cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/dependency/DependencyAnalyzerTest.xml
0 → 100644
浏览文件 @
ba18e53c
<plexus>
<components>
<component>
<role>
com.dianping.cat.service.ReportManager
</role>
<role-hint>
dependency
</role-hint>
<implementation>
com.dianping.cat.consumer.dependency.Configurator$MockDependencyReportManager
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.service.ReportDelegate
</role>
<role-hint>
dependency
</role-hint>
</requirement>
</requirements>
</component>
<component>
<role>
com.dianping.cat.service.ReportDelegate
</role>
<role-hint>
dependency
</role-hint>
<implementation>
com.dianping.cat.consumer.dependency.Configurator$ExtendedDependencyDelegate
</implementation>
</component>
<component>
<role>
com.dianping.cat.DomainManager
</role>
<implementation>
com.dianping.cat.consumer.dependency.Configurator$ExtendedDomainManager
</implementation>
</component>
</components>
</plexus>
cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/dependency/dependency_analyzer.xml
0 → 100644
浏览文件 @
ba18e53c
<?xml version="1.0" encoding="utf-8"?>
<dependency-report
domain=
"group"
startTime=
"2012-01-01 00:00:00"
endTime=
"2012-01-01 00:59:59"
>
<domainName>
group
</domainName>
<segment
id=
"0"
>
<index
name=
"PigeonService"
total-count=
"34"
error-count=
"34"
sum=
"3434.00"
avg=
"101.00"
/>
<index
name=
"Service"
total-count=
"33"
error-count=
"33"
sum=
"3300.00"
avg=
"100.00"
/>
<index
name=
"URL"
total-count=
"33"
error-count=
"33"
sum=
"3366.00"
avg=
"102.00"
/>
</segment>
<segment
id=
"5"
>
<index
name=
"SQL"
total-count=
"34"
error-count=
"0"
sum=
"1717.00"
avg=
"50.50"
/>
<index
name=
"Cache.CatTest"
total-count=
"33"
error-count=
"0"
sum=
"1650.00"
avg=
"50.00"
/>
<index
name=
"Call"
total-count=
"33"
error-count=
"0"
sum=
"1683.00"
avg=
"51.00"
/>
<dependency
type=
"Cache"
target=
"Cache.CatTest"
total-count=
"33"
avg=
"50.00"
error-count=
"0"
key=
"Cache:Cache.CatTest"
sum=
"1650.00"
/>
<dependency
type=
"PigeonCall"
target=
"Cat-CatTest"
total-count=
"33"
avg=
"51.00"
error-count=
"0"
key=
"PigeonCall:Cat-CatTest"
sum=
"1683.00"
/>
</segment>
</dependency-report>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录