Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
06e88895
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,发现更多精彩内容 >>
提交
06e88895
编写于
9月 06, 2012
作者:
Y
youyong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
modify the cat database report
上级
246ae2ef
变更
50
隐藏空白更改
内联
并排
Showing
50 changed file
with
744 addition
and
194 deletion
+744
-194
cat-consumer/src/main/java/com/dianping/cat/consumer/database/DatabaseAnalyzer.java
.../com/dianping/cat/consumer/database/DatabaseAnalyzer.java
+1
-1
cat-core/src/main/java/com/dianping/cat/status/StatusInfoCollector.java
...ain/java/com/dianping/cat/status/StatusInfoCollector.java
+1
-17
cat-hadoop/src/main/resources/META-INF/dal/jdbc/dal.xml
cat-hadoop/src/main/resources/META-INF/dal/jdbc/dal.xml
+140
-4
cat-home/src/main/java/com/dianping/cat/report/page/cache/Handler.java
...main/java/com/dianping/cat/report/page/cache/Handler.java
+2
-2
cat-home/src/main/java/com/dianping/cat/report/page/cache/Model.java
...c/main/java/com/dianping/cat/report/page/cache/Model.java
+0
-1
cat-home/src/main/java/com/dianping/cat/report/page/cross/Handler.java
...main/java/com/dianping/cat/report/page/cross/Handler.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/cross/Model.java
...c/main/java/com/dianping/cat/report/page/cross/Model.java
+0
-2
cat-home/src/main/java/com/dianping/cat/report/page/database/DisplayDatabase.java
...om/dianping/cat/report/page/database/DisplayDatabase.java
+55
-1
cat-home/src/main/java/com/dianping/cat/report/page/database/Handler.java
...n/java/com/dianping/cat/report/page/database/Handler.java
+21
-11
cat-home/src/main/java/com/dianping/cat/report/page/database/Model.java
...ain/java/com/dianping/cat/report/page/database/Model.java
+0
-1
cat-home/src/main/java/com/dianping/cat/report/page/event/Handler.java
...main/java/com/dianping/cat/report/page/event/Handler.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/event/Model.java
...c/main/java/com/dianping/cat/report/page/event/Model.java
+0
-1
cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/Model.java
...in/java/com/dianping/cat/report/page/heartbeat/Model.java
+0
-2
cat-home/src/main/java/com/dianping/cat/report/page/matrix/Handler.java
...ain/java/com/dianping/cat/report/page/matrix/Handler.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/matrix/Model.java
.../main/java/com/dianping/cat/report/page/matrix/Model.java
+0
-2
cat-home/src/main/java/com/dianping/cat/report/page/model/cross/HistoricalCrossService.java
...g/cat/report/page/model/cross/HistoricalCrossService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/cross/LocalCrossService.java
...anping/cat/report/page/model/cross/LocalCrossService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/database/DatabaseReportMerger.java
.../cat/report/page/model/database/DatabaseReportMerger.java
+8
-21
cat-home/src/main/java/com/dianping/cat/report/page/model/database/HistoricalDatabaseService.java
...report/page/model/database/HistoricalDatabaseService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/database/LocalDatabaseService.java
.../cat/report/page/model/database/LocalDatabaseService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/event/HistoricalEventService.java
...g/cat/report/page/model/event/HistoricalEventService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/event/LocalEventService.java
...anping/cat/report/page/model/event/LocalEventService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/heartbeat/HistoricalHeartbeatService.java
...port/page/model/heartbeat/HistoricalHeartbeatService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/heartbeat/LocalHeartbeatService.java
...at/report/page/model/heartbeat/LocalHeartbeatService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/matrix/HistoricalMatrixService.java
...cat/report/page/model/matrix/HistoricalMatrixService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/matrix/LocalMatrixService.java
...ping/cat/report/page/model/matrix/LocalMatrixService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/problem/HistoricalProblemService.java
...t/report/page/model/problem/HistoricalProblemService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/problem/LocalProblemService.java
...ng/cat/report/page/model/problem/LocalProblemService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HistoricalTransactionService.java
.../page/model/transaction/HistoricalTransactionService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/LocalTransactionService.java
...eport/page/model/transaction/LocalTransactionService.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/problem/Handler.java
...in/java/com/dianping/cat/report/page/problem/Handler.java
+2
-2
cat-home/src/main/java/com/dianping/cat/report/page/problem/Model.java
...main/java/com/dianping/cat/report/page/problem/Model.java
+0
-2
cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java
...ava/com/dianping/cat/report/page/transaction/Handler.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/page/transaction/Model.java
.../java/com/dianping/cat/report/page/transaction/Model.java
+0
-1
cat-home/src/main/java/com/dianping/cat/report/task/AbstractReportBuilder.java
...a/com/dianping/cat/report/task/AbstractReportBuilder.java
+17
-0
cat-home/src/main/java/com/dianping/cat/report/task/DailyTaskProducer.java
.../java/com/dianping/cat/report/task/DailyTaskProducer.java
+79
-14
cat-home/src/main/java/com/dianping/cat/report/task/GraphCreator.java
.../main/java/com/dianping/cat/report/task/GraphCreator.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/task/database/DatabaseMerger.java
...com/dianping/cat/report/task/database/DatabaseMerger.java
+1
-1
cat-home/src/main/java/com/dianping/cat/report/task/database/DatabaseReportBuilder.java
...nping/cat/report/task/database/DatabaseReportBuilder.java
+14
-9
cat-home/src/main/webapp/css/database.css
cat-home/src/main/webapp/css/database.css
+0
-1
cat-home/src/main/webapp/js/database.js
cat-home/src/main/webapp/js/database.js
+27
-0
cat-home/src/main/webapp/jsp/report/database.jsp
cat-home/src/main/webapp/jsp/report/database.jsp
+57
-39
cat-home/src/main/webapp/jsp/report/databaseHistory.jsp
cat-home/src/main/webapp/jsp/report/databaseHistory.jsp
+40
-33
cat-home/src/test/java/com/dianping/cat/AllTests.java
cat-home/src/test/java/com/dianping/cat/AllTests.java
+3
-1
cat-home/src/test/java/com/dianping/cat/report/page/database/DatabaseReportMergerTest.java
...ng/cat/report/page/database/DatabaseReportMergerTest.java
+53
-0
cat-home/src/test/java/com/dianping/cat/report/task/TaskConsumerTest.java
...t/java/com/dianping/cat/report/task/TaskConsumerTest.java
+4
-6
cat-home/src/test/resources/com/dianping/cat/report/page/database/DatabaseReportMergeAllResult.xml
...cat/report/page/database/DatabaseReportMergeAllResult.xml
+42
-0
cat-home/src/test/resources/com/dianping/cat/report/page/database/DatabaseReportMergeResult.xml
...ng/cat/report/page/database/DatabaseReportMergeResult.xml
+66
-0
cat-home/src/test/resources/com/dianping/cat/report/page/database/DatabaseReportNew.xml
...m/dianping/cat/report/page/database/DatabaseReportNew.xml
+58
-0
cat-home/src/test/resources/com/dianping/cat/report/page/database/DatabaseReportOld.xml
...m/dianping/cat/report/page/database/DatabaseReportOld.xml
+34
-0
未找到文件。
cat-consumer/src/main/java/com/dianping/cat/consumer/database/DatabaseAnalyzer.java
浏览文件 @
06e88895
...
...
@@ -209,7 +209,7 @@ public class DatabaseAnalyzer extends AbstractMessageAnalyzer<DatabaseReport> im
r
.
setDomain
(
domain
);
r
.
setPeriod
(
period
);
r
.
setIp
(
ip
);
r
.
setType
(
1
);
r
.
setType
(
2
);
r
.
setContent
(
xml
);
m_reportDao
.
insert
(
r
);
...
...
cat-core/src/main/java/com/dianping/cat/status/StatusInfoCollector.java
浏览文件 @
06e88895
...
...
@@ -12,9 +12,7 @@ import java.util.Date;
import
java.util.List
;
import
java.util.TreeMap
;
import
com.dianping.cat.Cat
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.message.spi.MessageStatistics
;
import
com.dianping.cat.message.spi.MessageStatistics
;
import
com.dianping.cat.status.model.entity.DiskInfo
;
import
com.dianping.cat.status.model.entity.DiskVolumeInfo
;
import
com.dianping.cat.status.model.entity.GcInfo
;
...
...
@@ -105,7 +103,6 @@ class StatusInfoCollector extends BaseVisitor {
@Override
public
void
visitDisk
(
DiskInfo
disk
)
{
Transaction
t
=
Cat
.
newTransaction
(
"Disk"
,
"Disk"
);
File
[]
roots
=
File
.
listRoots
();
if
(
roots
!=
null
)
{
...
...
@@ -121,24 +118,19 @@ class StatusInfoCollector extends BaseVisitor {
}
super
.
visitDisk
(
disk
);
t
.
complete
();
}
@Override
public
void
visitDiskVolume
(
DiskVolumeInfo
diskVolume
)
{
Transaction
t
=
Cat
.
newTransaction
(
"visitDiskVolume"
,
"visitDiskVolume"
);
File
volume
=
new
File
(
diskVolume
.
getId
());
diskVolume
.
setTotal
(
volume
.
getTotalSpace
());
diskVolume
.
setFree
(
volume
.
getFreeSpace
());
diskVolume
.
setUsable
(
volume
.
getUsableSpace
());
t
.
complete
();
}
@Override
public
void
visitMemory
(
MemoryInfo
memory
)
{
Transaction
t
=
Cat
.
newTransaction
(
"visitMemory"
,
"visitMemory"
);
MemoryMXBean
bean
=
ManagementFactory
.
getMemoryMXBean
();
Runtime
runtime
=
Runtime
.
getRuntime
();
...
...
@@ -162,7 +154,6 @@ class StatusInfoCollector extends BaseVisitor {
}
super
.
visitMemory
(
memory
);
t
.
complete
();
}
@Override
...
...
@@ -176,7 +167,6 @@ class StatusInfoCollector extends BaseVisitor {
@Override
public
void
visitOs
(
OsInfo
os
)
{
Transaction
t
=
Cat
.
newTransaction
(
"visitOs"
,
"visitOs"
);
OperatingSystemMXBean
bean
=
ManagementFactory
.
getOperatingSystemMXBean
();
os
.
setArch
(
bean
.
getArch
());
...
...
@@ -196,23 +186,18 @@ class StatusInfoCollector extends BaseVisitor {
os
.
setProcessTime
(
b
.
getProcessCpuTime
());
os
.
setCommittedVirtualMemory
(
b
.
getCommittedVirtualMemorySize
());
}
t
.
complete
();
}
@Override
public
void
visitRuntime
(
RuntimeInfo
runtime
)
{
Transaction
t
=
Cat
.
newTransaction
(
"visitRuntime"
,
"visitRuntime"
);
RuntimeMXBean
bean
=
ManagementFactory
.
getRuntimeMXBean
();
runtime
.
setStartTime
(
bean
.
getStartTime
());
runtime
.
setUpTime
(
bean
.
getUptime
());
t
.
complete
();
}
@Override
public
void
visitStatus
(
StatusInfo
status
)
{
Transaction
t
=
Cat
.
newTransaction
(
"visitStatus"
,
"visitStatus"
);
status
.
setTimestamp
(
new
Date
());
status
.
setOs
(
new
OsInfo
());
status
.
setDisk
(
new
DiskInfo
());
...
...
@@ -222,7 +207,6 @@ class StatusInfoCollector extends BaseVisitor {
status
.
setMessage
(
new
MessageInfo
());
super
.
visitStatus
(
status
);
t
.
complete
();
}
@Override
...
...
cat-hadoop/src/main/resources/META-INF/dal/jdbc/dal.xml
浏览文件 @
06e88895
...
...
@@ -87,6 +87,7 @@
<IF
type=
'NOT_NULL'
field=
'name'
>
AND
<FIELD
name=
'name'
/>
= ${name}
</IF>
AND type =1
]]>
</statement>
</query>
<query
name=
"find-all-by-period-domain-name"
type=
"SELECT"
...
...
@@ -100,6 +101,7 @@
WHERE
<FIELD
name=
'period'
/>
= ${period}
AND
<FIELD
name=
'domain'
/>
= ${domain}
AND
<FIELD
name=
'name'
/>
= ${name}
AND type =1
]]>
</statement>
</query>
<query
name=
"find-all-by-period-domain-type-name"
type=
"SELECT"
...
...
@@ -115,6 +117,7 @@
AND
<FIELD
name=
'domain'
/>
= ${domain}
AND
<FIELD
name=
'type'
/>
= ${type}
AND
<FIELD
name=
'name'
/>
= ${name}
AND type =1
]]>
</statement>
</query>
<query
name=
"find-all-by-period-type-name"
type=
"SELECT"
...
...
@@ -128,6 +131,7 @@
WHERE
<FIELD
name=
'period'
/>
= ${period}
AND
<FIELD
name=
'type'
/>
= ${type}
AND
<FIELD
name=
'name'
/>
= ${name}
AND type =1
]]>
</statement>
</query>
<query
name=
"insert"
type=
"INSERT"
>
...
...
@@ -140,6 +144,70 @@
<FIELD
name=
'creation-date'
/>
= NOW()
]]>
</statement>
</query>
<query
name=
"find-database-all-by-domain-name-duration"
type=
"SELECT"
multiple=
"true"
>
<param
name=
"start-date"
/>
<param
name=
"end-date"
/>
<param
name=
"domain"
/>
<param
name=
"name"
/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
>= ${start-date}
AND
<FIELD
name=
'period'
/>
<
${end-date}
<IF
type=
'NOT_NULL'
field=
'domain'
>
AND
<FIELD
name=
'domain'
/>
= ${domain}
</IF>
<IF
type=
'NOT_NULL'
field=
'name'
>
AND
<FIELD
name=
'name'
/>
= ${name}
</IF>
AND type=2
]]>
</statement>
</query>
<query
name=
"find-database-all-by-period-domain-name"
type=
"SELECT"
multiple=
"true"
>
<param
name=
"period"
/>
<param
name=
"domain"
/>
<param
name=
"name"
/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
= ${period}
AND
<FIELD
name=
'domain'
/>
= ${domain}
AND
<FIELD
name=
'name'
/>
= ${name}
AND type=2
]]>
</statement>
</query>
<query
name=
"find-database-all-by-period-domain-type-name"
type=
"SELECT"
multiple=
"true"
>
<param
name=
"period"
/>
<param
name=
"domain"
/>
<param
name=
"type"
/>
<param
name=
"name"
/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
= ${period}
AND
<FIELD
name=
'domain'
/>
= ${domain}
AND
<FIELD
name=
'type'
/>
= ${type}
AND
<FIELD
name=
'name'
/>
= ${name}
AND type=2
]]>
</statement>
</query>
<query
name=
"find-database-all-by-period-type-name"
type=
"SELECT"
multiple=
"true"
>
<param
name=
"period"
/>
<param
name=
"type"
/>
<param
name=
"name"
/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
= ${period}
AND
<FIELD
name=
'type'
/>
= ${type}
AND
<FIELD
name=
'name'
/>
= ${name}
AND type=2
]]>
</statement>
</query>
</query-defs>
</entity>
...
...
@@ -155,6 +223,10 @@
<readset
name=
"REPORT_NAME"
>
<member
name=
"report_name"
/>
</readset>
<readset
name=
"REPORT_NAME_DOMAIN"
>
<member
name=
"report_domain"
/>
<member
name=
"report_name"
/>
</readset>
<readset
name=
"COUNT"
>
<member
name=
"count"
/>
</readset>
...
...
@@ -343,7 +415,8 @@
WHERE
<FIELD
name=
'period'
/>
>= ${start-date}
AND
<FIELD
name=
'period'
/>
<
${end-date}
AND
<FIELD
name=
'domain'
/>
= ${domain}
AND
<FIELD
name=
'name'
/>
= ${name}
AND
<FIELD
name=
'name'
/>
= ${name}
AND type = 1
]]>
</statement>
</query>
<query
name=
"find-by-name-domain-period"
type=
"SELECT"
>
...
...
@@ -359,7 +432,8 @@
</IF>
<IF
type=
'NOT_NULL'
field=
'name'
>
AND
<FIELD
name=
'name'
/>
= ${name}
</IF>
</IF>
AND type = 1
]]>
</statement>
</query>
<query
name=
"find-all-by-period"
type=
"SELECT"
multiple=
"true"
>
...
...
@@ -369,7 +443,8 @@
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
>= ${start-date}
AND
<FIELD
name=
'period'
/>
<
${end-date}
AND
<FIELD
name=
'period'
/>
<
${end-date}
AND type = 1
]]>
</statement>
</query>
...
...
@@ -385,7 +460,68 @@
</IF>
<IF
type=
'NOT_NULL'
field=
'name'
>
AND
<FIELD
name=
'name'
/>
= ${name}
</IF>
</IF>
AND type =1;
]]>
</statement>
</query><query
name=
"find-database-all-by-domain-name-duration"
type=
"SELECT"
multiple=
"true"
>
<param
name=
"start-date"
/>
<param
name=
"end-date"
/>
<param
name=
"domain"
/>
<param
name=
"name"
/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
>= ${start-date}
AND
<FIELD
name=
'period'
/>
<
${end-date}
AND
<FIELD
name=
'domain'
/>
= ${domain}
AND
<FIELD
name=
'name'
/>
= ${name}
AND type = 2
]]>
</statement>
</query>
<query
name=
"find-database-by-name-domain-period"
type=
"SELECT"
>
<param
name=
"period"
/>
<param
name=
"domain"
/>
<param
name=
"name"
/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
= ${period}
<IF
type=
'NOT_NULL'
field=
'domain'
>
AND
<FIELD
name=
'domain'
/>
= ${domain}
</IF>
<IF
type=
'NOT_NULL'
field=
'name'
>
AND
<FIELD
name=
'name'
/>
= ${name}
</IF>
AND type = 2
]]>
</statement>
</query>
<query
name=
"find-database-all-by-period"
type=
"SELECT"
multiple=
"true"
>
<param
name=
"start-date"
/>
<param
name=
"end-date"
/>
<statement>
<![CDATA[
SELECT <FIELDS/>
FROM
<TABLE/>
WHERE
<FIELD
name=
'period'
/>
>= ${start-date}
AND
<FIELD
name=
'period'
/>
<
${end-date}
AND type =2
]]>
</statement>
</query>
<query
name=
"delete-database-by-domain-name-period"
type=
"DELETE"
>
<param
name=
"period"
/>
<param
name=
"domain"
/>
<param
name=
"name"
/>
<statement>
<![CDATA[
DELETE FROM <TABLE/>
WHERE
<FIELD
name=
'period'
/>
= ${period}
<IF
type=
'NOT_NULL'
field=
'domain'
>
AND
<FIELD
name=
'domain'
/>
= ${domain}
</IF>
<IF
type=
'NOT_NULL'
field=
'name'
>
AND
<FIELD
name=
'name'
/>
= ${name}
</IF>
AND type =2;
]]>
</statement>
</query>
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cache/Handler.java
浏览文件 @
06e88895
...
...
@@ -157,7 +157,7 @@ public class Handler implements PageHandler<Context> {
try
{
List
<
Report
>
reports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"event"
,
ReportEntity
.
READSET_FULL
);
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
null
,
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
"event"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domains
=
new
HashSet
<
String
>();
...
...
@@ -202,7 +202,7 @@ public class Handler implements PageHandler<Context> {
try
{
List
<
Report
>
reports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"transaction"
,
ReportEntity
.
READSET_FULL
);
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
null
,
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
"transaction"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domains
=
new
HashSet
<
String
>();
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cache/Model.java
浏览文件 @
06e88895
...
...
@@ -36,7 +36,6 @@ public class Model extends AbstractReportModel<Action, Context> {
}
else
{
Set
<
String
>
domainNames
=
m_report
.
getDomainNames
();
domainNames
.
add
(
getDomain
());
return
StringSortHelper
.
sortDomain
(
domainNames
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cross/Handler.java
浏览文件 @
06e88895
...
...
@@ -88,7 +88,7 @@ public class Handler implements PageHandler<Context> {
try
{
List
<
Report
>
reports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"cross"
,
ReportEntity
.
READSET_FULL
);
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
null
,
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
"cross"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domains
=
new
HashSet
<
String
>();
...
...
cat-home/src/main/java/com/dianping/cat/report/page/cross/Model.java
浏览文件 @
06e88895
...
...
@@ -59,9 +59,7 @@ public class Model extends AbstractReportModel<Action, Context> {
}
else
{
Set
<
String
>
domainNames
=
m_report
.
getDomainNames
();
domainNames
.
add
(
getDomain
());
return
StringSortHelper
.
sortDomain
(
domainNames
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/database/DisplayDatabase.java
浏览文件 @
06e88895
...
...
@@ -7,14 +7,25 @@ import java.util.List;
import
org.apache.commons.lang.StringUtils
;
import
com.dianping.cat.consumer.database.model.entity.DatabaseReport
;
import
com.dianping.cat.consumer.database.model.entity.Domain
;
import
com.dianping.cat.consumer.database.model.entity.Method
;
import
com.dianping.cat.consumer.database.model.entity.Table
;
import
com.dianping.cat.consumer.database.model.transform.BaseVisitor
;
public
class
DisplayDatabase
extends
BaseVisitor
{
private
String
m_sortBy
=
"name"
;
private
String
m_domain
=
"cat"
;
private
String
m_currentDomain
;
private
List
<
Table
>
m_results
=
new
ArrayList
<
Table
>();
private
int
m_totalCount
;
private
long
m_duration
;
public
List
<
Table
>
getResults
()
{
Collections
.
sort
(
m_results
,
new
TableCompartor
(
m_sortBy
));
return
m_results
;
...
...
@@ -27,9 +38,42 @@ public class DisplayDatabase extends BaseVisitor {
return
this
;
}
@Override
public
void
visitDatabaseReport
(
DatabaseReport
databaseReport
)
{
super
.
visitDatabaseReport
(
databaseReport
);
for
(
Table
table
:
m_results
)
{
int
totalCount
=
table
.
getTotalCount
();
table
.
setTotalPercent
(
totalCount
/
(
double
)
m_totalCount
);
for
(
Method
method
:
table
.
getMethods
().
values
())
{
method
.
setTotalPercent
(
method
.
getTotalCount
()
/
(
double
)
totalCount
);
}
}
}
@Override
public
void
visitDomain
(
Domain
domain
)
{
m_currentDomain
=
domain
.
getId
();
super
.
visitDomain
(
domain
);
}
@Override
public
void
visitTable
(
Table
table
)
{
m_results
.
add
(
table
);
if
(
m_domain
.
equals
(
m_currentDomain
))
{
m_results
.
add
(
table
);
if
(
table
.
getId
().
equals
(
"All"
))
{
m_totalCount
=
table
.
getTotalCount
();
table
.
setTotalPercent
(
1
);
}
if
(
m_duration
>
0
)
{
table
.
setTps
(
table
.
getTotalCount
()
*
1000.0
/
(
double
)
m_duration
);
for
(
Method
method
:
table
.
getMethods
().
values
())
{
method
.
setTps
(
method
.
getTotalCount
()
*
1000.0
/
(
double
)
m_duration
);
}
}
}
}
public
static
class
TableCompartor
implements
Comparator
<
Table
>
{
...
...
@@ -68,4 +112,14 @@ public class DisplayDatabase extends BaseVisitor {
}
}
public
DisplayDatabase
setDomain
(
String
database
)
{
m_domain
=
database
;
return
this
;
}
public
DisplayDatabase
setDuration
(
long
duration
)
{
m_duration
=
duration
;
return
this
;
}
}
cat-home/src/main/java/com/dianping/cat/report/page/database/Handler.java
浏览文件 @
06e88895
...
...
@@ -20,6 +20,7 @@ import com.dianping.cat.hadoop.dal.ReportDao;
import
com.dianping.cat.hadoop.dal.ReportEntity
;
import
com.dianping.cat.report.ReportPage
;
import
com.dianping.cat.report.page.model.database.DatabaseReportMerger
;
import
com.dianping.cat.report.page.model.spi.ModelPeriod
;
import
com.dianping.cat.report.page.model.spi.ModelRequest
;
import
com.dianping.cat.report.page.model.spi.ModelResponse
;
import
com.dianping.cat.report.page.model.spi.ModelService
;
...
...
@@ -88,18 +89,27 @@ public class Handler implements PageHandler<Context> {
Payload
payload
=
ctx
.
getPayload
();
normalize
(
model
,
payload
);
String
domain
=
payload
.
getDomain
();
switch
(
payload
.
getAction
())
{
case
HISTORY_REPORT:
DatabaseReport
historyReport
=
showSummarizeReport
(
model
,
payload
);
DisplayDatabase
displayHistoryDatabase
=
new
DisplayDatabase
();
long
historyDuration
=
historyReport
.
getEndTime
().
getTime
()
-
historyReport
.
getStartTime
().
getTime
();
DisplayDatabase
displayHistoryDatabase
=
new
DisplayDatabase
().
setDomain
(
domain
).
setDuration
(
historyDuration
);
displayHistoryDatabase
.
setSortBy
(
payload
.
getSortBy
()).
visitDatabaseReport
(
historyReport
);
model
.
setReport
(
historyReport
);
model
.
setDisplayDatabase
(
displayHistoryDatabase
);
break
;
case
HOURLY_REPORT:
long
hourlyDuration
=
ONE_HOUR
;
if
(
ModelPeriod
.
CURRENT
==
payload
.
getPeriod
())
{
hourlyDuration
=
System
.
currentTimeMillis
()
%
ONE_HOUR
;
}
DatabaseReport
hourlyReport
=
getHourlyReport
(
payload
);
DisplayDatabase
displayDatabase
=
new
DisplayDatabase
();
DisplayDatabase
displayDatabase
=
new
DisplayDatabase
()
.
setDomain
(
domain
).
setDuration
(
hourlyDuration
)
;
displayDatabase
.
setSortBy
(
payload
.
getSortBy
()).
visitDatabaseReport
(
hourlyReport
);
model
.
setReport
(
hourlyReport
);
...
...
@@ -123,7 +133,7 @@ public class Handler implements PageHandler<Context> {
model
.
setDatabase
(
payload
.
getDatabase
());
model
.
setDisplayDomain
(
payload
.
getDomain
());
model
.
setDomain
(
payload
.
getDomain
());
if
(
payload
.
getPeriod
().
isFuture
())
{
model
.
setLongDate
(
payload
.
getCurrentDate
());
}
else
{
...
...
@@ -145,7 +155,7 @@ public class Handler implements PageHandler<Context> {
}
private
DatabaseReport
showSummarizeReport
(
Model
model
,
Payload
payload
)
{
String
d
omain
=
payload
.
getDomain
();
String
d
atabase
=
payload
.
getDatabase
();
DatabaseReport
databaseReport
=
null
;
Date
start
=
payload
.
getHistoryStartDate
();
...
...
@@ -154,24 +164,24 @@ public class Handler implements PageHandler<Context> {
if
(
currentDayStart
.
getTime
()
==
start
.
getTime
())
{
try
{
List
<
Report
>
reports
=
m_reportDao
.
find
AllByDomainNameDuration
(
start
,
end
,
domain
,
"database"
,
List
<
Report
>
reports
=
m_reportDao
.
find
DatabaseAllByDomainNameDuration
(
start
,
end
,
database
,
"database"
,
ReportEntity
.
READSET_FULL
);
List
<
Report
>
allReports
=
m_reportDao
.
find
AllByDomainNameDuration
(
start
,
end
,
null
,
null
,
List
<
Report
>
allReports
=
m_reportDao
.
find
DatabaseAllByDomainNameDuration
(
start
,
end
,
null
,
"database"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
d
omain
s
=
new
HashSet
<
String
>();
Set
<
String
>
d
atabase
s
=
new
HashSet
<
String
>();
for
(
Report
report
:
allReports
)
{
d
omain
s
.
add
(
report
.
getDomain
());
d
atabase
s
.
add
(
report
.
getDomain
());
}
databaseReport
=
m_databaseMerger
.
mergeForDaily
(
d
omain
,
reports
,
domain
s
);
databaseReport
=
m_databaseMerger
.
mergeForDaily
(
d
atabase
,
reports
,
database
s
);
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
}
}
else
{
try
{
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
find
AllByDomainNameDuration
(
start
,
end
,
domain
,
"database"
,
List
<
Dailyreport
>
reports
=
m_dailyreportDao
.
find
DatabaseAllByDomainNameDuration
(
start
,
end
,
database
,
"database"
,
DailyreportEntity
.
READSET_FULL
);
DatabaseReportMerger
merger
=
new
DatabaseReportMerger
(
new
DatabaseReport
(
d
omain
));
DatabaseReportMerger
merger
=
new
DatabaseReportMerger
(
new
DatabaseReport
(
d
atabase
));
for
(
Dailyreport
report
:
reports
)
{
String
xml
=
report
.
getContent
();
DatabaseReport
reportModel
=
DefaultSaxParser
.
parse
(
xml
);
...
...
cat-home/src/main/java/com/dianping/cat/report/page/database/Model.java
浏览文件 @
06e88895
...
...
@@ -37,7 +37,6 @@ public class Model extends AbstractReportModel<Action, Context> {
}
else
{
Set
<
String
>
domainNames
=
m_report
.
getDatabaseNames
();
domainNames
.
add
(
getDatabase
());
return
StringSortHelper
.
sortDomain
(
domainNames
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/event/Handler.java
浏览文件 @
06e88895
...
...
@@ -313,7 +313,7 @@ public class Handler implements PageHandler<Context> {
try
{
List
<
Report
>
reports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"event"
,
ReportEntity
.
READSET_FULL
);
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
null
,
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
"event"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domains
=
new
HashSet
<
String
>();
...
...
cat-home/src/main/java/com/dianping/cat/report/page/event/Model.java
浏览文件 @
06e88895
...
...
@@ -68,7 +68,6 @@ public class Model extends AbstractReportModel<Action, Context> {
}
else
{
Set
<
String
>
domainNames
=
m_report
.
getDomainNames
();
domainNames
.
add
(
getDomain
());
return
StringSortHelper
.
sortDomain
(
domainNames
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/heartbeat/Model.java
浏览文件 @
06e88895
...
...
@@ -124,9 +124,7 @@ public class Model extends AbstractReportModel<Action, Context> {
}
else
{
Set
<
String
>
domainNames
=
m_report
.
getDomainNames
();
domainNames
.
add
(
getDomain
());
return
StringSortHelper
.
sortDomain
(
domainNames
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/matrix/Handler.java
浏览文件 @
06e88895
...
...
@@ -111,7 +111,7 @@ public class Handler implements PageHandler<Context> {
try
{
List
<
Report
>
reports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"matrix"
,
ReportEntity
.
READSET_FULL
);
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
null
,
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
"matrix"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domains
=
new
HashSet
<
String
>();
...
...
cat-home/src/main/java/com/dianping/cat/report/page/matrix/Model.java
浏览文件 @
06e88895
...
...
@@ -37,9 +37,7 @@ public class Model extends AbstractReportModel<Action, Context> {
}
else
{
Set
<
String
>
domainNames
=
m_report
.
getDomainNames
();
domainNames
.
add
(
getDomain
());
return
StringSortHelper
.
sortDomain
(
domainNames
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/cross/HistoricalCrossService.java
浏览文件 @
06e88895
...
...
@@ -54,7 +54,7 @@ public class HistoricalCrossService extends BaseHistoricalModelService<CrossRepo
CrossReport
crossReport
=
merger
.
getCrossReport
();
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
timestamp
),
new
Date
(
timestamp
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
timestamp
+
60
*
60
*
1000
),
null
,
"cross"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
if
(
crossReport
==
null
)
{
crossReport
=
new
CrossReport
(
domain
);
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/cross/LocalCrossService.java
浏览文件 @
06e88895
...
...
@@ -48,7 +48,7 @@ public class LocalCrossService extends BaseLocalModelService<CrossReport> {
report
=
new
CrossReport
(
domain
);
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
hour
),
new
Date
(
hour
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
hour
+
60
*
60
*
1000
),
null
,
"cross"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domainNames
=
report
.
getDomainNames
();
for
(
Report
temp
:
historyReports
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/database/DatabaseReportMerger.java
浏览文件 @
06e88895
...
...
@@ -16,7 +16,7 @@ public class DatabaseReportMerger extends DefaultMerger {
public
DatabaseReportMerger
(
DatabaseReport
databaseReport
)
{
super
(
databaseReport
);
}
public
Domain
mergesForAllMachine
(
DatabaseReport
report
)
{
Domain
machine
=
new
Domain
(
CatString
.
ALL_IP
);
...
...
@@ -40,15 +40,6 @@ public class DatabaseReportMerger extends DefaultMerger {
@Override
protected
void
mergeTable
(
Table
old
,
Table
table
)
{
double
sum
=
0
;
if
(
old
.
getTotalPercent
()
>
0
)
{
sum
+=
old
.
getTotalCount
()
/
old
.
getTotalPercent
();
}
if
(
table
.
getTotalPercent
()
>
0
)
{
sum
+=
table
.
getTotalCount
()
/
table
.
getTotalPercent
();
}
old
.
setTotalPercent
((
old
.
getTotalCount
()
+
table
.
getTotalCount
())
/
sum
);
old
.
setTotalCount
(
old
.
getTotalCount
()
+
table
.
getTotalCount
());
old
.
setFailCount
(
old
.
getFailCount
()
+
table
.
getFailCount
());
old
.
setFailPercent
(
old
.
getFailCount
()
/
(
double
)
old
.
getTotalCount
());
...
...
@@ -58,20 +49,13 @@ public class DatabaseReportMerger extends DefaultMerger {
@Override
protected
void
mergeMethod
(
Method
old
,
Method
method
)
{
double
sum
=
0
;
if
(
old
.
getTotalPercent
()
>
0
)
{
sum
+=
old
.
getTotalCount
()
/
old
.
getTotalPercent
();
}
if
(
method
.
getTotalPercent
()
>
0
)
{
sum
+=
method
.
getTotalCount
()
/
method
.
getTotalPercent
();
}
old
.
setTotalPercent
((
old
.
getTotalCount
()
+
method
.
getTotalCount
())
/
sum
);
old
.
setTotalCount
(
old
.
getTotalCount
()
+
method
.
getTotalCount
());
old
.
setFailCount
(
old
.
getFailCount
()
+
method
.
getFailCount
());
old
.
setFailPercent
(
old
.
getFailCount
()
/
(
double
)
old
.
getTotalCount
());
old
.
setSum
(
old
.
getSum
()
+
method
.
getSum
());
old
.
setAvg
(
old
.
getSum
()
/
(
double
)
old
.
getTotalCount
());
old
.
getSqlNames
().
addAll
(
method
.
getSqlNames
());
}
@Override
...
...
@@ -89,10 +73,13 @@ public class DatabaseReportMerger extends DefaultMerger {
m_all
=
old
.
findOrCreateDomain
(
CatString
.
ALL_Domain
);
}
super
.
visitDatabaseReport
(
databaseReport
);
old
.
setConnectUrl
(
databaseReport
.
getConnectUrl
());
old
.
setStartTime
(
databaseReport
.
getStartTime
());
old
.
setEndTime
(
databaseReport
.
getEndTime
());
old
.
getDomainNames
().
addAll
(
databaseReport
.
getDomainNames
());
old
.
getDatabaseNames
().
addAll
(
databaseReport
.
getDatabaseNames
());
if
(
m_allDomain
)
{
if
(
m_allDomain
)
{
old
.
getDomainNames
().
remove
(
CatString
.
ALL_Domain
);
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/database/HistoricalDatabaseService.java
浏览文件 @
06e88895
...
...
@@ -55,7 +55,7 @@ public class HistoricalDatabaseService extends BaseHistoricalModelService<Databa
DatabaseReport
databaseReport
=
merger
.
getDatabaseReport
();
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
timestamp
),
new
Date
(
timestamp
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
timestamp
+
60
*
60
*
1000
),
null
,
"database"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
if
(
databaseReport
==
null
)
{
databaseReport
=
new
DatabaseReport
(
database
);
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/database/LocalDatabaseService.java
浏览文件 @
06e88895
...
...
@@ -48,7 +48,7 @@ public class LocalDatabaseService extends BaseLocalModelService<DatabaseReport>
report
=
new
DatabaseReport
(
database
);
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
hour
),
new
Date
(
hour
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
hour
+
60
*
60
*
1000
),
null
,
"database"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
databaseNames
=
report
.
getDatabaseNames
();
for
(
Report
temp
:
historyReports
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/event/HistoricalEventService.java
浏览文件 @
06e88895
...
...
@@ -54,7 +54,7 @@ public class HistoricalEventService extends BaseHistoricalModelService<EventRepo
EventReport
eventReport
=
merger
.
getEventReport
();
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
timestamp
),
new
Date
(
timestamp
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
timestamp
+
60
*
60
*
1000
),
null
,
"event"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
if
(
eventReport
==
null
)
{
eventReport
=
new
EventReport
(
domain
);
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/event/LocalEventService.java
浏览文件 @
06e88895
...
...
@@ -48,7 +48,7 @@ public class LocalEventService extends BaseLocalModelService<EventReport> {
report
=
new
EventReport
(
domain
);
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
hour
),
new
Date
(
hour
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
hour
+
60
*
60
*
1000
),
null
,
"event"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domainNames
=
report
.
getDomainNames
();
for
(
Report
temp
:
historyReports
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/heartbeat/HistoricalHeartbeatService.java
浏览文件 @
06e88895
...
...
@@ -54,7 +54,7 @@ public class HistoricalHeartbeatService extends BaseHistoricalModelService<Heart
HeartbeatReport
heartbeatReport
=
merger
.
getHeartbeatReport
();
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
timestamp
),
new
Date
(
timestamp
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
timestamp
+
60
*
60
*
1000
),
null
,
"heartbeat"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
if
(
heartbeatReport
==
null
)
{
heartbeatReport
=
new
HeartbeatReport
(
domain
);
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/heartbeat/LocalHeartbeatService.java
浏览文件 @
06e88895
...
...
@@ -48,7 +48,7 @@ public class LocalHeartbeatService extends BaseLocalModelService<HeartbeatReport
report
=
new
HeartbeatReport
(
domain
);
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
hour
),
new
Date
(
hour
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
hour
+
60
*
60
*
1000
),
null
,
"heartbeat"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domainNames
=
report
.
getDomainNames
();
for
(
Report
temp
:
historyReports
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/matrix/HistoricalMatrixService.java
浏览文件 @
06e88895
...
...
@@ -54,7 +54,7 @@ public class HistoricalMatrixService extends BaseHistoricalModelService<MatrixRe
MatrixReport
matrixReport
=
merger
.
getMatrixReport
();
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
timestamp
),
new
Date
(
timestamp
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
timestamp
+
60
*
60
*
1000
),
null
,
"matrix"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
if
(
matrixReport
!=
null
&&
historyReports
!=
null
)
{
Set
<
String
>
domainNames
=
matrixReport
.
getDomainNames
();
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/matrix/LocalMatrixService.java
浏览文件 @
06e88895
...
...
@@ -48,7 +48,7 @@ public class LocalMatrixService extends BaseLocalModelService<MatrixReport> {
report
=
new
MatrixReport
(
domain
);
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
hour
),
new
Date
(
hour
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
hour
+
60
*
60
*
1000
),
null
,
"matrix"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domainNames
=
report
.
getDomainNames
();
for
(
Report
temp
:
historyReports
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/problem/HistoricalProblemService.java
浏览文件 @
06e88895
...
...
@@ -54,7 +54,7 @@ public class HistoricalProblemService extends BaseHistoricalModelService<Problem
ProblemReport
problemReport
=
merger
.
getProblemReport
();
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
timestamp
),
new
Date
(
timestamp
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
timestamp
+
60
*
60
*
1000
),
null
,
"problem"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
if
(
problemReport
==
null
)
{
problemReport
=
new
ProblemReport
(
domain
);
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/problem/LocalProblemService.java
浏览文件 @
06e88895
...
...
@@ -48,7 +48,7 @@ public class LocalProblemService extends BaseLocalModelService<ProblemReport> {
report
=
new
ProblemReport
(
domain
);
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
hour
),
new
Date
(
hour
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
hour
+
60
*
60
*
1000
),
null
,
"problem"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domainNames
=
report
.
getDomainNames
();
for
(
Report
temp
:
historyReports
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HistoricalTransactionService.java
浏览文件 @
06e88895
...
...
@@ -54,7 +54,7 @@ public class HistoricalTransactionService extends BaseHistoricalModelService<Tra
TransactionReport
transactionReport
=
merger
.
getTransactionReport
();
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
timestamp
),
new
Date
(
timestamp
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
timestamp
+
60
*
60
*
1000
),
null
,
"transaction"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
if
(
transactionReport
==
null
)
{
transactionReport
=
new
TransactionReport
(
domain
);
...
...
cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/LocalTransactionService.java
浏览文件 @
06e88895
...
...
@@ -48,7 +48,7 @@ public class LocalTransactionService extends BaseLocalModelService<TransactionRe
report
=
new
TransactionReport
(
domain
);
List
<
Report
>
historyReports
=
m_reportDao
.
findAllByDomainNameDuration
(
new
Date
(
hour
),
new
Date
(
hour
+
60
*
60
*
1000
),
null
,
null
,
ReportEntity
.
READSET_DOMAIN_NAME
);
hour
+
60
*
60
*
1000
),
null
,
"transaction"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domainNames
=
report
.
getDomainNames
();
for
(
Report
temp
:
historyReports
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/page/problem/Handler.java
浏览文件 @
06e88895
...
...
@@ -329,7 +329,7 @@ public class Handler implements PageHandler<Context> {
try
{
List
<
Report
>
reports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"problem"
,
ReportEntity
.
READSET_FULL
);
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
null
,
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
"problem"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domains
=
new
HashSet
<
String
>();
...
...
@@ -351,7 +351,7 @@ public class Handler implements PageHandler<Context> {
ProblemReport
reportModel
=
DefaultSaxParser
.
parse
(
xml
);
reportModel
.
accept
(
merger
);
}
problemReport
=
merger
==
null
?
null
:
merger
.
getProblemReport
();
problemReport
=
merger
.
getProblemReport
();
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/problem/Model.java
浏览文件 @
06e88895
...
...
@@ -91,9 +91,7 @@ public class Model extends AbstractReportModel<Action, Context> {
}
else
{
Set
<
String
>
domainNames
=
m_report
.
getDomainNames
();
domainNames
.
add
(
getDomain
());
return
StringSortHelper
.
sortDomain
(
domainNames
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java
浏览文件 @
06e88895
...
...
@@ -338,7 +338,7 @@ public class Handler implements PageHandler<Context> {
try
{
List
<
Report
>
reports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
domain
,
"transaction"
,
ReportEntity
.
READSET_FULL
);
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
null
,
List
<
Report
>
allReports
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
"transaction"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
Set
<
String
>
domains
=
new
HashSet
<
String
>();
...
...
cat-home/src/main/java/com/dianping/cat/report/page/transaction/Model.java
浏览文件 @
06e88895
...
...
@@ -72,7 +72,6 @@ public class Model extends AbstractReportModel<Action, Context> {
}
else
{
Set
<
String
>
domainNames
=
m_report
.
getDomainNames
();
domainNames
.
add
(
getDomain
());
return
StringSortHelper
.
sortDomain
(
domainNames
);
}
}
...
...
cat-home/src/main/java/com/dianping/cat/report/task/AbstractReportBuilder.java
浏览文件 @
06e88895
...
...
@@ -53,4 +53,21 @@ public abstract class AbstractReportBuilder {
domainSet
.
add
(
domainName
.
getDomain
());
}
}
protected
void
getDatabaseSet
(
Set
<
String
>
domainSet
,
Date
start
,
Date
end
)
{
List
<
Report
>
databaseNames
=
new
ArrayList
<
Report
>();
try
{
databaseNames
=
m_reportDao
.
findAllByDomainNameDuration
(
start
,
end
,
null
,
"database"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
}
if
(
databaseNames
==
null
||
databaseNames
.
size
()
==
0
)
{
return
;
}
for
(
Report
domainName
:
databaseNames
)
{
domainSet
.
add
(
domainName
.
getDomain
());
}
}
}
cat-home/src/main/java/com/dianping/cat/report/task/DailyTaskProducer.java
浏览文件 @
06e88895
...
...
@@ -44,25 +44,39 @@ public class DailyTaskProducer implements Runnable, Initializable {
@Inject
private
TaskDao
m_taskDao
;
private
boolean
checkTaskGenerated
(
Date
day
)
{
private
boolean
checkDatabaseTaskGenerated
(
Date
day
)
{
List
<
Dailyreport
>
allReports
=
new
ArrayList
<
Dailyreport
>();
try
{
allReports
=
m_dailyReportDao
.
findDatabaseAllByPeriod
(
day
,
new
Date
(
day
.
getTime
()
+
DAY
),
DailyreportEntity
.
READSET_DOMAIN_NAME
);
}
catch
(
DalException
e
)
{
m_logger
.
warn
(
"DailyTaskProducer isYesterdayTaskGenerated"
,
e
);
}
Set
<
String
>
databaseSet
=
getDatabaseSet
(
day
,
new
Date
(
day
.
getTime
()
+
DAY
));
int
total
=
allReports
.
size
();
if
(
total
!=
databaseSet
.
size
())
{
return
false
;
}
return
true
;
}
private
boolean
checkDomainTaskGenerated
(
Date
day
)
{
List
<
Dailyreport
>
allReports
=
new
ArrayList
<
Dailyreport
>();
try
{
allReports
=
m_dailyReportDao
.
findAllByPeriod
(
day
,
new
Date
(
day
.
getTime
()
+
DAY
),
DailyreportEntity
.
READSET_
COUNT
);
DailyreportEntity
.
READSET_
DOMAIN_NAME
);
}
catch
(
DalException
e
)
{
m_logger
.
warn
(
"DailyTaskProducer isYesterdayTaskGenerated"
,
e
);
}
Set
<
String
>
domainSet
=
getDomainSet
(
day
,
new
Date
(
day
.
getTime
()
+
DAY
));
int
total
=
0
;
int
domanSize
=
domainSet
.
size
();
int
nameSize
=
m_dailyReportNameSet
.
size
();
// SQL Framework
if
(
allReports
!=
null
&&
allReports
.
size
()
>
0
)
{
total
=
allReports
.
get
(
0
).
getCount
();
}
int
total
=
allReports
.
size
();
if
(
total
!=
domanSize
*
nameSize
)
{
return
false
;
...
...
@@ -70,11 +84,38 @@ public class DailyTaskProducer implements Runnable, Initializable {
return
true
;
}
private
boolean
checkDatabaseTaskGenerated
(
Date
day
){
return
false
;
private
void
generateDatabaseTasks
(
Date
day
)
{
Transaction
t
=
Cat
.
newTransaction
(
"System"
,
"ProduceDatabaseReport"
);
try
{
Set
<
String
>
databaseSet
=
getDatabaseSet
(
day
,
new
Date
(
day
.
getTime
()
+
DAY
));
for
(
String
domain
:
databaseSet
)
{
Task
task
=
m_taskDao
.
createLocal
();
task
.
setCreationDate
(
new
Date
());
task
.
setProducer
(
NetworkInterfaceManager
.
INSTANCE
.
getLocalHostAddress
());
task
.
setReportDomain
(
domain
);
task
.
setReportName
(
"database"
);
task
.
setReportPeriod
(
day
);
task
.
setStatus
(
1
);
task
.
setTaskType
(
TYPE_DAILY
);
try
{
m_taskDao
.
insert
(
task
);
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
t
.
setStatus
(
e
);
}
}
t
.
setStatus
(
Message
.
SUCCESS
);
}
catch
(
Exception
e
)
{
Cat
.
logError
(
e
);
t
.
setStatus
(
e
);
}
finally
{
t
.
complete
();
}
}
private
void
generateDailyTasks
(
Date
day
)
{
private
void
generateD
omainD
ailyTasks
(
Date
day
)
{
Transaction
t
=
Cat
.
newTransaction
(
"System"
,
"ProduceDailyReport"
);
try
{
Set
<
String
>
domainSet
=
getDomainSet
(
day
,
new
Date
(
day
.
getTime
()
+
DAY
));
...
...
@@ -107,6 +148,27 @@ public class DailyTaskProducer implements Runnable, Initializable {
}
}
private
Set
<
String
>
getDatabaseSet
(
Date
start
,
Date
end
)
{
List
<
Report
>
databaseNames
=
new
ArrayList
<
Report
>();
Set
<
String
>
databaseSet
=
new
HashSet
<
String
>();
try
{
databaseNames
=
m_reportDao
.
findDatabaseAllByDomainNameDuration
(
start
,
end
,
null
,
"database"
,
ReportEntity
.
READSET_DOMAIN_NAME
);
}
catch
(
DalException
e
)
{
Cat
.
logError
(
e
);
}
if
(
databaseNames
==
null
||
databaseNames
.
size
()
==
0
)
{
return
databaseSet
;
}
for
(
Report
domainName
:
databaseNames
)
{
databaseSet
.
add
(
domainName
.
getDomain
());
}
return
databaseSet
;
}
private
Set
<
String
>
getDomainSet
(
Date
start
,
Date
end
)
{
List
<
Report
>
domainNames
=
new
ArrayList
<
Report
>();
Set
<
String
>
domainSet
=
new
HashSet
<
String
>();
...
...
@@ -142,8 +204,11 @@ public class DailyTaskProducer implements Runnable, Initializable {
while
(
true
)
{
try
{
Date
yestoday
=
TaskHelper
.
yesterdayZero
(
new
Date
());
if
(!
checkTaskGenerated
(
yestoday
))
{
generateDailyTasks
(
yestoday
);
if
(!
checkDomainTaskGenerated
(
yestoday
))
{
generateDomainDailyTasks
(
yestoday
);
}
if
(!
checkDatabaseTaskGenerated
(
yestoday
))
{
generateDatabaseTasks
(
yestoday
);
}
Thread
.
sleep
(
10
*
60
*
1000
);
}
catch
(
Exception
e
)
{
...
...
cat-home/src/main/java/com/dianping/cat/report/task/GraphCreator.java
浏览文件 @
06e88895
...
...
@@ -10,5 +10,5 @@ import com.dianping.cat.hadoop.dal.Graph;
public
interface
GraphCreator
<
E
>
{
List
<
Graph
>
splitReportToGraphs
(
Date
reportPeriod
,
String
reportDomain
,
String
reportName
,
E
report
);
public
List
<
Graph
>
splitReportToGraphs
(
Date
reportPeriod
,
String
reportDomain
,
String
reportName
,
E
report
);
}
cat-home/src/main/java/com/dianping/cat/report/task/database/DatabaseMerger.java
浏览文件 @
06e88895
...
...
@@ -20,7 +20,7 @@ public class DatabaseMerger implements ReportMerger<DatabaseReport> {
DatabaseReport
databaseReport
=
getDailyReport
(
reportDatabase
,
reports
,
false
);
DatabaseReport
databaseReport2
=
getDailyReport
(
reportDatabase
,
reports
,
true
);
databaseReport
.
addDomain
(
databaseReport2
.
find
OrCreate
Domain
(
CatString
.
ALL_Domain
));
databaseReport
.
addDomain
(
databaseReport2
.
findDomain
(
CatString
.
ALL_Domain
));
databaseReport
.
getDomainNames
().
add
(
CatString
.
ALL_Domain
);
Date
date
=
databaseReport
.
getStartTime
();
...
...
cat-home/src/main/java/com/dianping/cat/report/task/database/DatabaseReportBuilder.java
浏览文件 @
06e88895
...
...
@@ -24,7 +24,7 @@ public class DatabaseReportBuilder extends AbstractReportBuilder implements Repo
@Override
public
boolean
buildDailyReport
(
String
reportName
,
String
reportDomain
,
Date
reportPeriod
)
{
try
{
Dailyreport
report
=
get
d
ailyReport
(
reportName
,
reportDomain
,
reportPeriod
);
Dailyreport
report
=
get
D
ailyReport
(
reportName
,
reportDomain
,
reportPeriod
);
m_dailyReportDao
.
insert
(
report
);
return
true
;
}
catch
(
Exception
e
)
{
...
...
@@ -33,13 +33,13 @@ public class DatabaseReportBuilder extends AbstractReportBuilder implements Repo
}
}
private
Dailyreport
get
d
ailyReport
(
String
reportName
,
String
reportDatabase
,
Date
reportPeriod
)
throws
DalException
{
private
Dailyreport
get
D
ailyReport
(
String
reportName
,
String
reportDatabase
,
Date
reportPeriod
)
throws
DalException
{
Date
endDate
=
TaskHelper
.
tomorrowZero
(
reportPeriod
);
Set
<
String
>
d
omain
Set
=
new
HashSet
<
String
>();
getD
omainSet
(
domain
Set
,
reportPeriod
,
endDate
);
List
<
Report
>
reports
=
m_reportDao
.
findAllByDomainNameDuration
(
reportPeriod
,
endDate
,
reportDatabase
,
reportName
,
Set
<
String
>
d
atabase
Set
=
new
HashSet
<
String
>();
getD
atabaseSet
(
database
Set
,
reportPeriod
,
endDate
);
List
<
Report
>
reports
=
m_reportDao
.
find
Database
AllByDomainNameDuration
(
reportPeriod
,
endDate
,
reportDatabase
,
reportName
,
ReportEntity
.
READSET_FULL
);
String
content
=
m_databaseMerger
.
mergeForDaily
(
reportDatabase
,
reports
,
d
omain
Set
).
toString
();
String
content
=
m_databaseMerger
.
mergeForDaily
(
reportDatabase
,
reports
,
d
atabase
Set
).
toString
();
Dailyreport
report
=
m_dailyReportDao
.
createLocal
();
report
.
setContent
(
content
);
...
...
@@ -48,7 +48,7 @@ public class DatabaseReportBuilder extends AbstractReportBuilder implements Repo
report
.
setIp
(
NetworkInterfaceManager
.
INSTANCE
.
getLocalHostAddress
());
report
.
setName
(
reportName
);
report
.
setPeriod
(
reportPeriod
);
report
.
setType
(
1
);
report
.
setType
(
2
);
return
report
;
}
...
...
@@ -60,7 +60,7 @@ public class DatabaseReportBuilder extends AbstractReportBuilder implements Repo
@Override
public
boolean
redoDailyReport
(
String
reportName
,
String
reportDomain
,
Date
reportPeriod
)
{
try
{
Dailyreport
report
=
get
d
ailyReport
(
reportName
,
reportDomain
,
reportPeriod
);
Dailyreport
report
=
get
D
ailyReport
(
reportName
,
reportDomain
,
reportPeriod
);
clearDailyReport
(
report
);
m_dailyReportDao
.
insert
(
report
);
return
true
;
...
...
@@ -69,7 +69,12 @@ public class DatabaseReportBuilder extends AbstractReportBuilder implements Repo
return
false
;
}
}
@Override
protected
void
clearDailyReport
(
Dailyreport
report
)
throws
DalException
{
this
.
m_dailyReportDao
.
deleteDatabaseByDomainNamePeriod
(
report
);
}
@Override
public
boolean
redoHourReport
(
String
reportName
,
String
reportDomain
,
Date
reportPeriod
)
{
throw
new
RuntimeException
(
"Database report don't support redo HourReport!"
);
...
...
cat-home/src/main/webapp/css/database.css
浏览文件 @
06e88895
.database
{
font-size
:
small
;
min-width
:
50%
;
}
.database
tr
th
{
text-align
:
right
;
...
...
cat-home/src/main/webapp/js/database.js
0 → 100755
浏览文件 @
06e88895
$
(
document
).
delegate
(
'
.graph_link
'
,
'
click
'
,
function
(
e
){
var
anchor
=
this
,
el
=
$
(
anchor
),
id
=
Number
(
el
.
attr
(
'
data-status
'
))
||
0
;
if
(
e
.
ctrlKey
||
e
.
metaKey
){
return
true
;
}
else
{
e
.
preventDefault
();
}
var
cell
=
document
.
getElementById
(
id
);
var
text
=
el
.
html
();
if
(
text
==
'
[:: show ::]
'
)
{
anchor
.
innerHTML
=
'
[:: hide ::]
'
;
cell
.
style
.
display
=
''
;
cell
.
style
.
display
=
''
;
}
else
{
anchor
.
innerHTML
=
'
[:: show ::]
'
;
cell
.
style
.
display
=
'
none
'
;
cell
.
style
.
display
=
'
none
'
;
}
});
cat-home/src/main/webapp/jsp/report/database.jsp
浏览文件 @
06e88895
...
...
@@ -4,9 +4,12 @@
<%@ taglib
prefix=
"w"
uri=
"http://www.unidal.org/web/core"
%>
<%@ taglib
prefix=
"c"
uri=
"http://java.sun.com/jsp/jstl/core"
%>
<%@ taglib
prefix=
"res"
uri=
"http://www.unidal.org/webres"
%>
<jsp:useBean
id=
"ctx"
type=
"com.dianping.cat.report.page.database.Context"
scope=
"request"
/>
<jsp:useBean
id=
"payload"
type=
"com.dianping.cat.report.page.database.Payload"
scope=
"request"
/>
<jsp:useBean
id=
"model"
type=
"com.dianping.cat.report.page.database.Model"
scope=
"request"
/>
<jsp:useBean
id=
"ctx"
type=
"com.dianping.cat.report.page.database.Context"
scope=
"request"
/>
<jsp:useBean
id=
"payload"
type=
"com.dianping.cat.report.page.database.Payload"
scope=
"request"
/>
<jsp:useBean
id=
"model"
type=
"com.dianping.cat.report.page.database.Model"
scope=
"request"
/>
<c:set
var=
"report"
value=
"
${
model
.
report
}
"
/>
...
...
@@ -20,12 +23,15 @@
<div
class=
"report"
>
<table
class=
"header"
>
<tr>
<td
class=
"title"
>
From ${w:format(report.startTime,'yyyy-MM-dd HH:mm:ss')} to ${w:format(report.endTime,'yyyy-MM-dd HH:mm:ss')}
</td>
<td
class=
"title"
>
From
${w:format(report.startTime,'yyyy-MM-dd HH:mm:ss')} to
${w:format(report.endTime,'yyyy-MM-dd HH:mm:ss')}
</td>
<td
class=
"switch"
><a
href=
"${model.baseUri}?op=history&database=${model.database}"
>
Switch
To History Mode
</a></td>
<td
class=
"nav"
><c:forEach
var=
"nav"
items=
"
${
model
.
navs
}
"
>
[
<a
href=
"${model.baseUri}?database=${model.database}&date=${model.date}&step=${nav.hours}&${navUrlPrefix}"
>
${nav.title}
</a>
]
[
<a
href=
"${model.baseUri}?database=${model.database}&date=${model.date}&step=${nav.hours}&${navUrlPrefix}"
>
${nav.title}
</a>
]
</c:forEach>
[
<a
href=
"${model.baseUri}?${navUrlPrefix}"
>
now
</a>
]
</td>
</tr>
...
...
@@ -38,11 +44,13 @@
<c:forEach
var=
"database"
items=
"
${
model
.
databases
}
"
>
<c:choose>
<c:when
test=
"
${
model
.
database
eq
database
}
"
>
<a
href=
"${model.baseUri}?database=${database}&date=${model.date}"
<a
href=
"${model.baseUri}?database=${database}&date=${model.date}"
class=
"current"
>
[
${database}
]
</a>
</c:when>
<c:otherwise>
<a
href=
"${model.baseUri}?database=${database}&date=${model.date}"
>
[
${database}
]
</a>
<a
href=
"${model.baseUri}?database=${database}&date=${model.date}"
>
[
${database}
]
</a>
</c:otherwise>
</c:choose>
</c:forEach>
...
...
@@ -52,7 +60,7 @@
</table>
</br>
<table
class=
"machines"
>
<tr
style=
"text-align: left"
>
<th>
Domains:
[
<c:choose>
...
...
@@ -67,11 +75,13 @@
[
<c:choose>
<c:when
test=
"
${
model
.
domain
eq
domain
}
"
>
<a
href=
"?database=${model.database}&domain=${domain}&date=${model.date}"
<a
href=
"?database=${model.database}&domain=${domain}&date=${model.date}"
class=
"current"
>
${domain}
</a>
</c:when>
<c:otherwise>
<a
href=
"?database=${model.database}&domain=${domain}&date=${model.date}"
>
${domain}
</a>
<a
href=
"?database=${model.database}&domain=${domain}&date=${model.date}"
>
${domain}
</a>
</c:otherwise>
</c:choose>
]
...
...
@@ -79,51 +89,58 @@
</th>
</tr>
</table>
</br>
<table
class=
"database"
>
<tr>
<th
class=
"left"
><a
href=
"${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=name"
>
Table
</a
></th>
<th
>
Name
</th>
<th><a
href=
"${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=total"
>
Total
</a></th>
<th><a
href=
"
${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=failure"
>
Failure
</a></th>
<th><a
href=
"
${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=failurePercent"
>
Failure%
</a></th>
<th><a
href=
"
${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=avg"
>
Avg(ms)
</a></th>
<th>
TablePercent%
</th>
<th>
Method
Percent%
</th>
<th
></th>
<th
class=
"left"
><a
href=
"?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=name"
>
Table
</a></th>
<th><a
href=
"
?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=total"
>
Total
</a></th>
<th><a
href=
"
?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=failure"
>
Failure
</a></th>
<th><a
href=
"
?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=failurePercent"
>
Failure%
</a></th>
<th>
<a
href=
"?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=avg"
>
Avg(ms)
</a>
</th>
<th>
Percent%
</th>
<th>
TPS
</th>
</tr>
<c:forEach
var=
"item"
items=
"
${
model
.
displayDatabase
.
results
}
"
varStatus=
"status"
>
<tr
class=
"odd"
>
<td
class=
"left"
>
${item.id}
</td>
<td
>
</td>
<td
class=
"left"
><a
href=
""
class=
"graph_link"
data-status=
"${status.index}"
>
[:: show ::]
</a>
</td>
<td
class=
"left"
>
${item.id}
</td>
<td>
${w:format(item.totalCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(item.failCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(item.failPercent,'0.00%')}
</td>
<td>
${w:format(item.avg,'0.00')}
</td>
<td>
${w:format(item.totalPercent,'0.00%')}
</td>
<td>
-
</td>
<td>
${w:format(item.tps,'0.00')}
</td>
</tr>
<c:forEach
var=
"methodEntry"
items=
"
${
item
.
methods
}
"
varStatus=
"status1"
>
<tr
class=
"${status1.index mod 2==0 ? 'even' : 'odd'}"
>
<c:set
var=
"method"
value=
"
${
methodEntry
.
value
}
"
/>
<td
style=
"background:white"
>
</td>
<td>
${method.id}
</td>
<td>
${w:format(method.totalCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(method.failCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(method.failPercent,'0.00%')}
</td>
<td>
${w:format(method.avg,'0.00')}
</td>
<td>
</td>
<td>
${w:format(method.totalPercent,'0.00%')}
</td>
<td>
${w:format(method.tps,'0.00')}
</td>
</tr>
</c:forEach>
<tr>
<td>
</td>
<tr
id=
"${status.index}"
style=
"display:none"
>
<td
colspan=
"8"
>
<table>
<th>
Method
</th>
<th>
Total
</th>
<th>
Failure
</th>
<th>
Failure%
</th>
<th>
Avg(ms)
</th>
<th>
Percent%
</th>
<th>
TPS
</th>
<c:forEach
var=
"methodEntry"
items=
"
${
item
.
methods
}
"
varStatus=
"status1"
>
<tr
class=
"${status1.index mod 2==0 ? 'even' : 'odd'}"
>
<c:set
var=
"method"
value=
"
${
methodEntry
.
value
}
"
/>
<td>
${method.id}
</td>
<td>
${w:format(method.totalCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(method.failCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(method.failPercent,'0.00%')}
</td>
<td>
${w:format(method.avg,'0.00')}
</td>
<td>
${w:format(method.totalPercent,'0.00%')}
</td>
<td>
${w:format(method.tps,'0.00')}
</td>
</tr>
</c:forEach>
</table></td>
</tr>
</c:forEach>
...
...
@@ -135,5 +152,6 @@
</table>
</div>
</br>
<res:useJs
value=
"
${
res
.
js
.
local
.
database_js
}
"
target=
"bottom-js"
/>
</a:body>
cat-home/src/main/webapp/jsp/report/databaseHistory.jsp
浏览文件 @
06e88895
...
...
@@ -49,11 +49,11 @@
<c:forEach
var=
"database"
items=
"
${
model
.
databases
}
"
>
<c:choose>
<c:when
test=
"
${
model
.
database
eq
database
}
"
>
<a
href=
"${model.baseUri}?database=${database}&date=${model.date}"
<a
href=
"${model.baseUri}?
op=history&
database=${database}&date=${model.date}"
class=
"current"
>
[
${database}
]
</a>
</c:when>
<c:otherwise>
<a
href=
"${model.baseUri}?database=${database}&date=${model.date}"
>
[
${database}
]
</a>
<a
href=
"${model.baseUri}?
op=history&
database=${database}&date=${model.date}"
>
[
${database}
]
</a>
</c:otherwise>
</c:choose>
</c:forEach>
...
...
@@ -70,11 +70,11 @@
[
<c:choose>
<c:when
test=
"
${
model
.
domain
eq
domain
}
"
>
<a
href=
"?database=${model.database}&domain=${domain}&date=${model.date}"
class=
"current"
>
${domain}
</a>
11
<a
href=
"?
op=history&
database=${model.database}&domain=${domain}&date=${model.date}"
class=
"current"
>
${domain}
</a>
</c:when>
<c:otherwise>
<a
href=
"?database=${model.database}&domain=${domain}&date=${model.date}"
>
${domain}
</a>
<a
href=
"?
op=history&
database=${model.database}&domain=${domain}&date=${model.date}"
>
${domain}
</a>
</c:otherwise>
</c:choose>
]
...
...
@@ -87,46 +87,52 @@
<table
class=
"database"
>
<tr>
<th
class=
"left"
><a
href=
"${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=name"
>
Table
</a></th>
<th>
Name
</th>
<th><a
href=
"${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=total"
>
Total
</a></th>
<th><a
href=
"${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=failure"
>
Failure
</a></th>
<th><a
href=
"${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=failurePercent"
>
Failure%
</a></th>
<th><a
href=
"${model.baseUri}?database=${model.database}&date=${model.date}&domain=${model.domain}&sort=avg"
>
Avg(ms)
</a></th>
<th>
TablePercent%
</th>
<th>
MethodPercent%
</th>
<th></th>
<th
class=
"left"
><a
href=
"?op=history&database=${model.database}&date=${model.date}&domain=${model.domain}&sort=name"
>
Table
</a></th>
<th><a
href=
"?op=history&database=${model.database}&date=${model.date}&domain=${model.domain}&sort=total"
>
Total
</a></th>
<th><a
href=
"?op=history&database=${model.database}&date=${model.date}&domain=${model.domain}&sort=failure"
>
Failure
</a></th>
<th><a
href=
"?op=history&database=${model.database}&date=${model.date}&domain=${model.domain}&sort=failurePercent"
>
Failure%
</a></th>
<th><a
href=
"?op=history&database=${model.database}&date=${model.date}&domain=${model.domain}&sort=avg"
>
Avg(ms)
</a></th>
<th>
Percent%
</th>
<th>
TPS
</th>
</tr>
<c:forEach
var=
"item"
items=
"
${
model
.
displayDatabase
.
results
}
"
varStatus=
"status"
>
<tr
class=
"odd"
>
<td
class=
"left"
>
${item.id}
</td>
<td
>
</td>
<td
class=
"left"
><a
href=
""
class=
"graph_link"
data-status=
"${status.index}"
>
[:: show ::]
</a>
</td>
<td
class=
"left"
>
${item.id}
</td>
<td>
${w:format(item.totalCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(item.failCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(item.failPercent,'0.00%')}
</td>
<td>
${w:format(item.avg,'0.00')}
</td>
<td>
${w:format(item.totalPercent,'0.00%')}
</td>
<td>
-
</td>
<td>
${w:format(item.tps,'0.00')}
</td>
</tr>
<c:forEach
var=
"methodEntry"
items=
"
${
item
.
methods
}
"
varStatus=
"status1"
>
<tr
class=
"${status1.index mod 2==0 ? 'even' : 'odd'}"
>
<c:set
var=
"method"
value=
"
${
methodEntry
.
value
}
"
/>
<td
style=
"background:white"
>
</td>
<td>
${method.id}
</td>
<td>
${w:format(method.totalCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(method.failCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(method.failPercent,'0.00%')}
</td>
<td>
${w:format(method.avg,'0.00')}
</td>
<td>
</td>
<td>
${w:format(method.totalPercent,'0.00%')}
</td>
<td>
${w:format(method.tps,'0.00')}
</td>
</tr>
</c:forEach>
<tr>
<td>
</td>
<tr
id=
"${status.index}"
style=
"display:none"
>
<td
colspan=
"8"
>
<table>
<th>
Method
</th>
<th>
Total
</th>
<th>
Failure
</th>
<th>
Failure%
</th>
<th>
Avg(ms)
</th>
<th>
Percent%
</th>
<th>
TPS
</th>
<c:forEach
var=
"methodEntry"
items=
"
${
item
.
methods
}
"
varStatus=
"status1"
>
<tr
class=
"${status1.index mod 2==0 ? 'even' : 'odd'}"
>
<c:set
var=
"method"
value=
"
${
methodEntry
.
value
}
"
/>
<td>
${method.id}
</td>
<td>
${w:format(method.totalCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(method.failCount,'#,###,###,###,##0')}
</td>
<td>
${w:format(method.failPercent,'0.00%')}
</td>
<td>
${w:format(method.avg,'0.00')}
</td>
<td>
${w:format(method.totalPercent,'0.00%')}
</td>
<td>
${w:format(method.tps,'0.00')}
</td>
</tr>
</c:forEach>
</table></td>
</tr>
</c:forEach>
...
...
@@ -139,4 +145,5 @@
</div>
</br>
<res:useJs
value=
"
${
res
.
js
.
local
.
database_js
}
"
target=
"bottom-js"
/>
</a:body>
cat-home/src/test/java/com/dianping/cat/AllTests.java
浏览文件 @
06e88895
...
...
@@ -6,6 +6,7 @@ import org.junit.runners.Suite.SuiteClasses;
import
com.dianping.cat.report.graph.ValueTranslaterTest
;
import
com.dianping.cat.report.page.cross.CrossReportMergerTest
;
import
com.dianping.cat.report.page.database.DatabaseReportMergerTest
;
import
com.dianping.cat.report.page.event.EventGraphDataTest
;
import
com.dianping.cat.report.page.heartbeat.HeartbeatGraphDataTest
;
import
com.dianping.cat.report.page.ip.DisplayModelTest
;
...
...
@@ -68,7 +69,8 @@ EventGraphDataTest.class, HeartbeatGraphDataTest.class,
ProblemGraphDataTest
.
class
,
TransactionGraphDataTest
.
class
,
ProblemReportMergerTest
.
class
,
/* database test*/
DatabaseReportMergerTest
.
class
,
/* .report.task */
TaskConsumerTest
.
class
,
TaskHelperTest
.
class
,
...
...
cat-home/src/test/java/com/dianping/cat/report/page/database/DatabaseReportMergerTest.java
0 → 100644
浏览文件 @
06e88895
package
com.dianping.cat.report.page.database
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.unidal.webres.helper.Files
;
import
com.dianping.cat.consumer.database.model.entity.DatabaseReport
;
import
com.dianping.cat.consumer.database.model.transform.DefaultDomParser
;
import
com.dianping.cat.consumer.database.model.transform.DefaultXmlBuilder
;
import
com.dianping.cat.report.page.model.database.DatabaseReportMerger
;
public
class
DatabaseReportMergerTest
{
@Test
public
void
testDatabaseReportMerge
()
throws
Exception
{
String
oldXml
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"DatabaseReportOld.xml"
),
"utf-8"
);
String
newXml
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"DatabaseReportNew.xml"
),
"utf-8"
);
DatabaseReport
reportOld
=
new
DefaultDomParser
().
parse
(
oldXml
);
DatabaseReport
reportNew
=
new
DefaultDomParser
().
parse
(
newXml
);
String
expected
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"DatabaseReportMergeResult.xml"
),
"utf-8"
);
DatabaseReportMerger
merger
=
new
DatabaseReportMerger
(
new
DatabaseReport
(
reportOld
.
getDatabase
()));
reportOld
.
accept
(
merger
);
reportNew
.
accept
(
merger
);
Assert
.
assertEquals
(
"Check the merge result!"
,
expected
.
replaceAll
(
"\\s*"
,
""
),
merger
.
getDatabaseReport
().
toString
().
replaceAll
(
"\\s*"
,
""
));
Assert
.
assertEquals
(
"Source report is changed!"
,
newXml
.
replaceAll
(
"\\s*"
,
""
),
reportNew
.
toString
().
replaceAll
(
"\\s*"
,
""
));
Assert
.
assertEquals
(
"Source report is changed!"
,
oldXml
.
replaceAll
(
"\\s*"
,
""
),
reportOld
.
toString
().
replaceAll
(
"\\s*"
,
""
));
}
@Test
public
void
testMergeAllIp
()
throws
Exception
{
String
oldXml
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"DatabaseReportOld.xml"
),
"utf-8"
);
String
newXml
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"DatabaseReportNew.xml"
),
"utf-8"
);
DatabaseReport
reportOld
=
new
DefaultDomParser
().
parse
(
oldXml
);
DatabaseReport
reportNew
=
new
DefaultDomParser
().
parse
(
newXml
);
String
expected
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"DatabaseReportMergeAllResult.xml"
),
"utf-8"
);
DatabaseReportMerger
merger
=
new
DatabaseReportMerger
(
new
DatabaseReport
(
reportOld
.
getDatabase
()));
merger
.
setAllDomain
(
true
);
reportOld
.
accept
(
merger
);
reportNew
.
accept
(
merger
);
String
actual
=
new
DefaultXmlBuilder
().
buildXml
(
merger
.
getDatabaseReport
());
Assert
.
assertEquals
(
"Check the merge result!"
,
expected
.
replaceAll
(
"\\s*"
,
""
),
actual
.
replaceAll
(
"\\s*"
,
""
));
Assert
.
assertEquals
(
"Source report is changed!"
,
oldXml
.
replaceAll
(
"\\s*"
,
""
),
reportOld
.
toString
().
replaceAll
(
"\\s*"
,
""
));
Assert
.
assertEquals
(
"Source report is changed!"
,
newXml
.
replaceAll
(
"\\s*"
,
""
),
reportNew
.
toString
().
replaceAll
(
"\\s*"
,
""
));
}
}
cat-home/src/test/java/com/dianping/cat/report/task/TaskConsumerTest.java
浏览文件 @
06e88895
...
...
@@ -35,7 +35,7 @@ public class TaskConsumerTest {
try
{
Thread
.
sleep
(
10
);
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
replayer
.
add
(
4
);
this
.
stop
();
...
...
@@ -267,9 +267,8 @@ public class TaskConsumerTest {
public
void
run
(){
try
{
latch
.
await
();
System
.
out
.
println
(
System
.
currentTimeMillis
());
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
super
.
run
();
}
...
...
@@ -307,9 +306,8 @@ public class TaskConsumerTest {
public
void
run
(){
try
{
latch
.
await
();
System
.
out
.
println
(
System
.
currentTimeMillis
());
}
catch
(
InterruptedException
e
)
{
e
.
printStackTrace
();
}
super
.
run
();
}
...
...
@@ -342,7 +340,7 @@ public class TaskConsumerTest {
}
while
(!
consumerTwo
.
isStopped
())
{
Thread
.
sleep
(
10
);
Thread
.
sleep
(
10
0
);
}
Assert
.
assertEquals
(
"[1, 8, 7, 10, 3, 1, 8, 4]"
,
Arrays
.
toString
(
consumerOne
.
replayer
.
toArray
()));
...
...
cat-home/src/test/resources/com/dianping/cat/report/page/database/DatabaseReportMergeAllResult.xml
0 → 100644
浏览文件 @
06e88895
<database-report
database=
"database0"
connect-url=
"jdbc:mysql://192.168.7.43:3306/database0"
startTime=
"2012-09-06 20:00:00"
endTime=
"2012-09-06 20:59:59"
>
<databaseName>
database3
</databaseName>
<databaseName>
database4
</databaseName>
<databaseName>
database1
</databaseName>
<databaseName>
database2
</databaseName>
<databaseName>
database0
</databaseName>
<domainName>
Cat
</domainName>
<domainName>
Cat0
</domainName>
<domain
id=
"All"
>
<table
id=
"All"
totalCount=
"600"
failCount=
"600"
failPercent=
"1.00"
avg=
"1.00"
sum=
"600.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"600"
failCount=
"600"
failPercent=
"1.00"
avg=
"1.00"
sum=
"600.00"
tps=
"0.00"
totalPercent=
"0.00"
>
</method>
</table>
<table
id=
"Table1"
totalCount=
"300"
failCount=
"300"
failPercent=
"1.00"
avg=
"1.00"
sum=
"300.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"300"
failCount=
"300"
failPercent=
"1.00"
avg=
"1.00"
sum=
"300.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
<table
id=
"Table2"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
<table
id=
"Table3"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
</domain></database-report>
\ No newline at end of file
cat-home/src/test/resources/com/dianping/cat/report/page/database/DatabaseReportMergeResult.xml
0 → 100644
浏览文件 @
06e88895
<database-report
database=
"database0"
connect-url=
"jdbc:mysql://192.168.7.43:3306/database0"
startTime=
"2012-09-06 20:00:00"
endTime=
"2012-09-06 20:59:59"
>
<databaseName>
database3
</databaseName>
<databaseName>
database4
</databaseName>
<databaseName>
database1
</databaseName>
<databaseName>
database2
</databaseName>
<databaseName>
database0
</databaseName>
<domainName>
Cat
</domainName>
<domainName>
Cat0
</domainName>
<domain
id=
"Cat"
>
<table
id=
"All"
totalCount=
"400"
failCount=
"400"
failPercent=
"1.00"
avg=
"1.00"
sum=
"400.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"400"
failCount=
"400"
failPercent=
"1.00"
avg=
"1.00"
sum=
"400.00"
tps=
"0.00"
totalPercent=
"0.00"
>
</method>
</table>
<table
id=
"Table1"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
<table
id=
"Table2"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
<table
id=
"Table3"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
</domain>
<domain
id=
"Cat1"
>
<table
id=
"All"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"0.00"
>
</method>
</table>
<table
id=
"Table1"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
<table
id=
"Table2"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
</domain></database-report>
\ No newline at end of file
cat-home/src/test/resources/com/dianping/cat/report/page/database/DatabaseReportNew.xml
0 → 100644
浏览文件 @
06e88895
<database-report
database=
"database0"
connect-url=
"jdbc:mysql://192.168.7.43:3306/database0"
startTime=
"2012-09-06 20:00:00"
endTime=
"2012-09-06 20:59:59"
>
<databaseName>
database3
</databaseName>
<databaseName>
database4
</databaseName>
<databaseName>
database1
</databaseName>
<databaseName>
database2
</databaseName>
<databaseName>
database0
</databaseName>
<domainName>
Cat
</domainName>
<domainName>
Cat0
</domainName>
<domain
id=
"Cat"
>
<table
id=
"All"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"1.00"
>
<method
id=
"Update"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"1.00"
>
</method>
</table>
<table
id=
"Table1"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.50"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"1.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
<table
id=
"Table3"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.50"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"1.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
</domain>
<domain
id=
"Cat1"
>
<table
id=
"All"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"1.00"
>
<method
id=
"Update"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"1.00"
>
</method>
</table>
<table
id=
"Table1"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.50"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"1.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
<table
id=
"Table2"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.50"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"1.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
</domain></database-report>
\ No newline at end of file
cat-home/src/test/resources/com/dianping/cat/report/page/database/DatabaseReportOld.xml
0 → 100644
浏览文件 @
06e88895
<database-report
database=
"database0"
connect-url=
"jdbc:mysql://192.168.7.43:3306/database0"
startTime=
"2012-09-06 20:00:00"
endTime=
"2012-09-06 20:59:59"
>
<databaseName>
database3
</databaseName>
<databaseName>
database4
</databaseName>
<databaseName>
database1
</databaseName>
<databaseName>
database2
</databaseName>
<databaseName>
database0
</databaseName>
<domainName>
Cat
</domainName>
<domainName>
Cat0
</domainName>
<domain
id=
"Cat"
>
<table
id=
"All"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"1.00"
>
<method
id=
"Update"
totalCount=
"200"
failCount=
"200"
failPercent=
"1.00"
avg=
"1.00"
sum=
"200.00"
tps=
"0.00"
totalPercent=
"1.00"
>
</method>
</table>
<table
id=
"Table1"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.50"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"1.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
<table
id=
"Table2"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"0.50"
>
<method
id=
"Update"
totalCount=
"100"
failCount=
"100"
failPercent=
"1.00"
avg=
"1.00"
sum=
"100.00"
tps=
"0.00"
totalPercent=
"1.00"
>
<sql>
User.insert0
</sql>
<sql>
User.insert1
</sql>
</method>
</table>
</domain></database-report>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录