Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
4e4d66b0
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,发现更多精彩内容 >>
提交
4e4d66b0
编写于
11月 12, 2013
作者:
A
ainilife
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add unit test for MetricAnalyzer
上级
ca70d003
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
303 addition
and
0 deletion
+303
-0
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/AllTests.java
...ced/src/test/java/com/dianping/cat/consumer/AllTests.java
+3
-0
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/advanced/Configurator.java
...java/com/dianping/cat/consumer/advanced/Configurator.java
+50
-0
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/advanced/MetricAnalyzerTest.java
...om/dianping/cat/consumer/advanced/MetricAnalyzerTest.java
+101
-0
cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/advanced/MetricAnalyzerTest.xml
...com/dianping/cat/consumer/advanced/MetricAnalyzerTest.xml
+38
-0
cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/advanced/metric_analyzer.xml
...es/com/dianping/cat/consumer/advanced/metric_analyzer.xml
+111
-0
未找到文件。
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/AllTests.java
浏览文件 @
4e4d66b0
...
...
@@ -4,6 +4,7 @@ import org.junit.runner.RunWith;
import
org.junit.runners.Suite
;
import
org.junit.runners.Suite.SuiteClasses
;
import
com.dianping.cat.consumer.advanced.MetricAnalyzerTest
;
import
com.dianping.cat.consumer.browser.BrowserReportMergerTest
;
import
com.dianping.cat.consumer.cross.CrossAnalyzerTest
;
import
com.dianping.cat.consumer.cross.CrossInfoTest
;
...
...
@@ -21,6 +22,8 @@ import com.dianping.cat.consumer.sql.SqlReportMergerTest;
@RunWith
(
Suite
.
class
)
@SuiteClasses
({
MetricAnalyzerTest
.
class
,
CrossInfoTest
.
class
,
CrossReportMergerTest
.
class
,
...
...
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/advanced/Configurator.java
0 → 100644
浏览文件 @
4e4d66b0
package
com.dianping.cat.consumer.advanced
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.unidal.lookup.configuration.AbstractResourceConfigurator
;
import
org.unidal.lookup.configuration.Component
;
import
com.dianping.cat.abtest.spi.internal.ABTestCodec
;
import
com.dianping.cat.advanced.metric.config.entity.MetricItemConfig
;
import
com.dianping.cat.analysis.MessageAnalyzer
;
import
com.dianping.cat.storage.BucketManager
;
import
com.dianping.cat.task.TaskManager
;
import
com.dianping.cat.task.TaskManagerTest.MockTaskManager
;
public
class
Configurator
extends
AbstractResourceConfigurator
{
public
static
void
main
(
String
[]
args
)
{
generatePlexusComponentsXmlFile
(
new
Configurator
());
}
protected
Class
<?>
getTestClass
()
{
return
MetricAnalyzerTest
.
class
;
}
@Override
public
List
<
Component
>
defineComponents
()
{
List
<
Component
>
all
=
new
ArrayList
<
Component
>();
final
String
ID
=
MetricAnalyzer
.
ID
;
all
.
add
(
C
(
MetricConfigManager
.
class
,
ExtendedMetricConfigManager
.
class
));
all
.
add
(
C
(
ProductLineConfigManager
.
class
));
all
.
add
(
C
(
TaskManager
.
class
,
MockTaskManager
.
class
));
all
.
add
(
C
(
MessageAnalyzer
.
class
,
ID
,
MetricAnalyzer
.
class
)
//
.
req
(
BucketManager
.
class
,
MetricConfigManager
.
class
)
//
.
req
(
ProductLineConfigManager
.
class
,
ABTestCodec
.
class
,
TaskManager
.
class
));
return
all
;
}
public
static
class
ExtendedMetricConfigManager
extends
MetricConfigManager
{
private
MetricItemConfig
m_config
=
new
MetricItemConfig
();
@Override
public
MetricItemConfig
queryMetricItemConfig
(
String
id
)
{
return
m_config
;
}
}
}
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/advanced/MetricAnalyzerTest.java
0 → 100644
浏览文件 @
4e4d66b0
package
com.dianping.cat.consumer.advanced
;
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.metric.model.entity.MetricReport
;
import
com.dianping.cat.message.internal.DefaultEvent
;
import
com.dianping.cat.message.internal.DefaultMetric
;
import
com.dianping.cat.message.internal.DefaultTransaction
;
import
com.dianping.cat.message.spi.MessageTree
;
import
com.dianping.cat.message.spi.internal.DefaultMessageTree
;
public
class
MetricAnalyzerTest
extends
ComponentTestCase
{
private
long
m_timestamp
;
private
MetricAnalyzer
m_analyzer
;
private
String
m_domain
=
"group"
;
private
final
int
MINITE
=
60
*
1000
;
@Before
public
void
setUp
()
throws
Exception
{
super
.
setUp
();
TimeZone
.
setDefault
(
TimeZone
.
getTimeZone
(
"Asia/Shanghai"
));
long
currentTimeMillis
=
System
.
currentTimeMillis
();
m_timestamp
=
currentTimeMillis
-
currentTimeMillis
%
(
3600
*
1000
);
@SuppressWarnings
(
"unused"
)
MetricConfigManager
manager
=
lookup
(
MetricConfigManager
.
class
);
m_analyzer
=
(
MetricAnalyzer
)
lookup
(
MessageAnalyzer
.
class
,
MetricAnalyzer
.
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
<=
60
;
i
++)
{
MessageTree
tree
=
generateMessageTree
(
i
);
m_analyzer
.
process
(
tree
);
}
MetricReport
report
=
m_analyzer
.
getReport
(
"Default"
);
String
expected
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"metric_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
;
if
(
i
%
2
==
0
)
{
t
=
new
DefaultTransaction
(
"URL"
,
"TuanGouWeb"
,
null
);
t
.
setTimestamp
(
m_timestamp
+
i
*
MINITE
);
DefaultEvent
event
=
new
DefaultEvent
(
"URL"
,
"ABTest"
);
event
.
addData
(
"1=ab:A"
);
t
.
addChild
(
event
);
}
else
{
t
=
new
DefaultTransaction
(
"Metric"
,
"TuanGouWeb"
,
null
);
t
.
setTimestamp
(
m_timestamp
+
1000
);
DefaultMetric
metric
=
new
DefaultMetric
(
"City"
,
"/shanghai"
);
metric
.
setTimestamp
(
m_timestamp
+
i
*
MINITE
);
metric
.
setStatus
(
"C"
);
metric
.
addData
(
"10"
);
t
.
addChild
(
metric
);
}
t
.
complete
();
t
.
setDurationInMillis
(
i
*
2
);
tree
.
setMessage
(
t
);
return
tree
;
}
}
cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/advanced/MetricAnalyzerTest.xml
0 → 100644
浏览文件 @
4e4d66b0
<plexus>
<components>
<component>
<role>
com.dianping.cat.consumer.advanced.MetricConfigManager
</role>
<implementation>
com.dianping.cat.consumer.advanced.Configurator$ExtendedMetricConfigManager
</implementation>
</component>
<component>
<role>
com.dianping.cat.consumer.advanced.ProductLineConfigManager
</role>
<implementation>
com.dianping.cat.consumer.advanced.ProductLineConfigManager
</implementation>
</component>
<component>
<role>
com.dianping.cat.task.TaskManager
</role>
<implementation>
com.dianping.cat.task.TaskManagerTest$MockTaskManager
</implementation>
</component>
<component>
<role>
com.dianping.cat.analysis.MessageAnalyzer
</role>
<role-hint>
metric
</role-hint>
<implementation>
com.dianping.cat.consumer.advanced.MetricAnalyzer
</implementation>
<requirements>
<requirement>
<role>
com.dianping.cat.storage.BucketManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.consumer.advanced.MetricConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.consumer.advanced.ProductLineConfigManager
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.abtest.spi.internal.ABTestCodec
</role>
</requirement>
<requirement>
<role>
com.dianping.cat.task.TaskManager
</role>
</requirement>
</requirements>
</component>
</components>
</plexus>
cat-consumer-advanced/src/test/resources/com/dianping/cat/consumer/advanced/metric_analyzer.xml
0 → 100644
浏览文件 @
4e4d66b0
<?xml version="1.0" encoding="utf-8"?>
<metric-report
product=
"Default"
startTime=
"2012-01-01 00:00:00"
endTime=
"2012-01-01 00:59:59"
>
<metric-item
id=
"group:Metric:/shanghai"
type=
"C"
>
<domain>
group
</domain>
<abtest
run-id=
"-1"
>
<group
name=
""
>
<point
id=
"1"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"3"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"5"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"7"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"9"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"11"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"13"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"15"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"17"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"19"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"21"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"23"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"25"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"27"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"29"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"31"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"33"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"35"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"37"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"39"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"41"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"43"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"45"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"47"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"49"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"51"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"53"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"55"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"57"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
<point
id=
"59"
count=
"10"
sum=
"10.0"
avg=
"1.0"
/>
</group>
</abtest>
</metric-item>
<metric-item
id=
"group:URL:TuanGouWeb"
type=
"C"
>
<domain>
group
</domain>
<abtest
run-id=
"1"
>
<group
name=
"A"
>
<point
id=
"2"
count=
"1"
sum=
"4000.0"
avg=
"4000.0"
/>
<point
id=
"4"
count=
"1"
sum=
"8000.0"
avg=
"8000.0"
/>
<point
id=
"6"
count=
"1"
sum=
"12000.0"
avg=
"12000.0"
/>
<point
id=
"8"
count=
"1"
sum=
"16000.0"
avg=
"16000.0"
/>
<point
id=
"10"
count=
"1"
sum=
"20000.0"
avg=
"20000.0"
/>
<point
id=
"12"
count=
"1"
sum=
"24000.0"
avg=
"24000.0"
/>
<point
id=
"14"
count=
"1"
sum=
"28000.0"
avg=
"28000.0"
/>
<point
id=
"16"
count=
"1"
sum=
"32000.0"
avg=
"32000.0"
/>
<point
id=
"18"
count=
"1"
sum=
"36000.0"
avg=
"36000.0"
/>
<point
id=
"20"
count=
"1"
sum=
"40000.0"
avg=
"40000.0"
/>
<point
id=
"22"
count=
"1"
sum=
"44000.0"
avg=
"44000.0"
/>
<point
id=
"24"
count=
"1"
sum=
"48000.0"
avg=
"48000.0"
/>
<point
id=
"26"
count=
"1"
sum=
"52000.0"
avg=
"52000.0"
/>
<point
id=
"28"
count=
"1"
sum=
"56000.0"
avg=
"56000.0"
/>
<point
id=
"30"
count=
"1"
sum=
"60000.0"
avg=
"60000.0"
/>
<point
id=
"32"
count=
"1"
sum=
"64000.0"
avg=
"64000.0"
/>
<point
id=
"34"
count=
"1"
sum=
"68000.0"
avg=
"68000.0"
/>
<point
id=
"36"
count=
"1"
sum=
"72000.0"
avg=
"72000.0"
/>
<point
id=
"38"
count=
"1"
sum=
"76000.0"
avg=
"76000.0"
/>
<point
id=
"40"
count=
"1"
sum=
"80000.0"
avg=
"80000.0"
/>
<point
id=
"42"
count=
"1"
sum=
"84000.0"
avg=
"84000.0"
/>
<point
id=
"44"
count=
"1"
sum=
"88000.0"
avg=
"88000.0"
/>
<point
id=
"46"
count=
"1"
sum=
"92000.0"
avg=
"92000.0"
/>
<point
id=
"48"
count=
"1"
sum=
"96000.0"
avg=
"96000.0"
/>
<point
id=
"50"
count=
"1"
sum=
"100000.0"
avg=
"100000.0"
/>
<point
id=
"52"
count=
"1"
sum=
"104000.0"
avg=
"104000.0"
/>
<point
id=
"54"
count=
"1"
sum=
"108000.0"
avg=
"108000.0"
/>
<point
id=
"56"
count=
"1"
sum=
"112000.0"
avg=
"112000.0"
/>
<point
id=
"58"
count=
"1"
sum=
"116000.0"
avg=
"116000.0"
/>
<point
id=
"0"
count=
"1"
sum=
"120000.0"
avg=
"120000.0"
/>
</group>
</abtest>
<abtest
run-id=
"-1"
>
<group
name=
""
>
<point
id=
"2"
count=
"1"
sum=
"4000.0"
avg=
"4000.0"
/>
<point
id=
"4"
count=
"1"
sum=
"8000.0"
avg=
"8000.0"
/>
<point
id=
"6"
count=
"1"
sum=
"12000.0"
avg=
"12000.0"
/>
<point
id=
"8"
count=
"1"
sum=
"16000.0"
avg=
"16000.0"
/>
<point
id=
"10"
count=
"1"
sum=
"20000.0"
avg=
"20000.0"
/>
<point
id=
"12"
count=
"1"
sum=
"24000.0"
avg=
"24000.0"
/>
<point
id=
"14"
count=
"1"
sum=
"28000.0"
avg=
"28000.0"
/>
<point
id=
"16"
count=
"1"
sum=
"32000.0"
avg=
"32000.0"
/>
<point
id=
"18"
count=
"1"
sum=
"36000.0"
avg=
"36000.0"
/>
<point
id=
"20"
count=
"1"
sum=
"40000.0"
avg=
"40000.0"
/>
<point
id=
"22"
count=
"1"
sum=
"44000.0"
avg=
"44000.0"
/>
<point
id=
"24"
count=
"1"
sum=
"48000.0"
avg=
"48000.0"
/>
<point
id=
"26"
count=
"1"
sum=
"52000.0"
avg=
"52000.0"
/>
<point
id=
"28"
count=
"1"
sum=
"56000.0"
avg=
"56000.0"
/>
<point
id=
"30"
count=
"1"
sum=
"60000.0"
avg=
"60000.0"
/>
<point
id=
"32"
count=
"1"
sum=
"64000.0"
avg=
"64000.0"
/>
<point
id=
"34"
count=
"1"
sum=
"68000.0"
avg=
"68000.0"
/>
<point
id=
"36"
count=
"1"
sum=
"72000.0"
avg=
"72000.0"
/>
<point
id=
"38"
count=
"1"
sum=
"76000.0"
avg=
"76000.0"
/>
<point
id=
"40"
count=
"1"
sum=
"80000.0"
avg=
"80000.0"
/>
<point
id=
"42"
count=
"1"
sum=
"84000.0"
avg=
"84000.0"
/>
<point
id=
"44"
count=
"1"
sum=
"88000.0"
avg=
"88000.0"
/>
<point
id=
"46"
count=
"1"
sum=
"92000.0"
avg=
"92000.0"
/>
<point
id=
"48"
count=
"1"
sum=
"96000.0"
avg=
"96000.0"
/>
<point
id=
"50"
count=
"1"
sum=
"100000.0"
avg=
"100000.0"
/>
<point
id=
"52"
count=
"1"
sum=
"104000.0"
avg=
"104000.0"
/>
<point
id=
"54"
count=
"1"
sum=
"108000.0"
avg=
"108000.0"
/>
<point
id=
"56"
count=
"1"
sum=
"112000.0"
avg=
"112000.0"
/>
<point
id=
"58"
count=
"1"
sum=
"116000.0"
avg=
"116000.0"
/>
<point
id=
"0"
count=
"1"
sum=
"120000.0"
avg=
"120000.0"
/>
</group>
</abtest>
</metric-item>
</metric-report>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录