Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
b6961f7f
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,体验更适合开发者的 AI 搜索 >>
提交
b6961f7f
编写于
11月 25, 2013
作者:
Y
yong.you
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refator code
上级
a191dddd
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
3 addition
and
411 deletion
+3
-411
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserAnalyzer.java
...va/com/dianping/cat/consumer/browser/BrowserAnalyzer.java
+0
-200
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserDelegate.java
...va/com/dianping/cat/consumer/browser/BrowserDelegate.java
+0
-86
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserReportMerger.java
...om/dianping/cat/consumer/browser/BrowserReportMerger.java
+0
-45
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/AllTests.java
...ced/src/test/java/com/dianping/cat/consumer/AllTests.java
+0
-3
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/browser/BrowserAnalyzerTest.java
...om/dianping/cat/consumer/browser/BrowserAnalyzerTest.java
+0
-46
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/browser/BrowserReportMergerTest.java
...ianping/cat/consumer/browser/BrowserReportMergerTest.java
+0
-29
cat-home/src/main/java/com/dianping/cat/report/page/AbstractReportModel.java
...ava/com/dianping/cat/report/page/AbstractReportModel.java
+2
-1
cat-home/src/main/java/com/dianping/cat/system/page/abtest/util/CaseBuilder.java
...com/dianping/cat/system/page/abtest/util/CaseBuilder.java
+1
-1
未找到文件。
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserAnalyzer.java
已删除
100644 → 0
浏览文件 @
a191dddd
package
com.dianping.cat.consumer.browser
;
import
java.util.List
;
import
java.util.StringTokenizer
;
import
org.codehaus.plexus.logging.LogEnabled
;
import
org.codehaus.plexus.logging.Logger
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.analysis.AbstractMessageAnalyzer
;
import
com.dianping.cat.consumer.browser.model.entity.Browser
;
import
com.dianping.cat.consumer.browser.model.entity.BrowserReport
;
import
com.dianping.cat.message.Message
;
import
com.dianping.cat.message.Transaction
;
import
com.dianping.cat.message.spi.MessageTree
;
import
com.dianping.cat.service.ReportManager
;
public
class
BrowserAnalyzer
extends
AbstractMessageAnalyzer
<
BrowserReport
>
implements
LogEnabled
{
public
static
final
String
ID
=
"browser"
;
@Inject
(
ID
)
private
ReportManager
<
BrowserReport
>
m_reportManager
;
public
BrowserReport
update
(
BrowserReport
report
,
String
[]
agentToken
)
{
for
(
String
s
:
agentToken
)
{
for
(
String
browser
:
BrowsersAndOses
.
BROWSERS
)
{
int
index
;
index
=
s
.
toUpperCase
().
indexOf
(
browser
.
toUpperCase
());
if
(
index
>=
0
)
{
String
subS
=
s
.
substring
(
index
);
String
[]
browserAndVersionString
=
split
(
subS
,
"/"
);
Browser
b
=
report
.
findOrCreateDomainDetail
(
"Cat"
)
.
findOrCreateBrowser
(
browserAndVersionString
[
0
]);
b
.
setCount
(
b
.
getCount
()
+
1
);
if
(
browserAndVersionString
.
length
>=
2
)
{
int
i
;
String
version
=
browserAndVersionString
[
1
];
for
(
i
=
0
;
(
i
<
version
.
length
())
&&
(
version
.
charAt
(
i
)
>=
'0'
&&
version
.
charAt
(
i
)
<=
'9'
||
version
.
charAt
(
i
)
==
'.'
);
i
++)
;
version
=
version
.
substring
(
0
,
i
);
b
.
findOrCreateBrowserVersion
(
version
).
setCount
(
b
.
findOrCreateBrowserVersion
(
version
)
.
getCount
()
+
1
);
}
}
}
for
(
String
os
:
BrowsersAndOses
.
OSES
)
{
int
index
;
index
=
s
.
toUpperCase
().
indexOf
(
os
.
toUpperCase
());
if
(
index
>=
0
)
{
report
.
findOrCreateDomainDetail
(
"Cat"
)
.
findOrCreateOs
(
os
).
setCount
(
report
.
findOrCreateDomainDetail
(
"Cat"
)
.
findOrCreateOs
(
os
).
getCount
()
+
1
);
}
}
}
return
report
;
}
public
String
[]
splitAgent
(
String
message
)
{
return
null
;
}
private
String
[]
split
(
String
message
,
String
divisionChar
)
{
StringTokenizer
tokenizer
=
new
StringTokenizer
(
message
,
divisionChar
);
int
i
=
0
;
String
[]
string
=
new
String
[
tokenizer
.
countTokens
()];
// 动态的决定数组的长度
while
(
tokenizer
.
hasMoreTokens
())
{
string
[
i
]
=
new
String
();
string
[
i
]
=
tokenizer
.
nextToken
();
i
++;
}
return
string
;
// 返回字符串数组
}
protected
String
parseValue
(
final
String
key
,
final
String
data
)
{
int
len
=
data
==
null
?
0
:
data
.
length
();
int
keyLen
=
key
.
length
();
StringBuilder
name
=
new
StringBuilder
();
StringBuilder
value
=
new
StringBuilder
();
boolean
inName
=
true
;
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
char
ch
=
data
.
charAt
(
i
);
switch
(
ch
)
{
case
'&'
:
if
(
name
.
length
()
==
keyLen
&&
name
.
toString
().
equals
(
key
))
{
return
value
.
toString
();
}
inName
=
true
;
name
.
setLength
(
0
);
value
.
setLength
(
0
);
break
;
case
'='
:
if
(
inName
)
{
inName
=
false
;
}
else
{
value
.
append
(
ch
);
}
break
;
default
:
if
(
inName
)
{
name
.
append
(
ch
);
}
else
{
value
.
append
(
ch
);
}
break
;
}
}
if
(
name
.
length
()
==
keyLen
&&
name
.
toString
().
equals
(
key
))
{
return
value
.
toString
();
}
return
null
;
}
@Override
public
void
enableLogging
(
Logger
logger
)
{
}
@Override
public
BrowserReport
getReport
(
String
domain
)
{
return
null
;
}
@Override
protected
void
process
(
MessageTree
tree
)
{
Message
message
=
tree
.
getMessage
();
if
(
message
instanceof
Transaction
)
{
String
type
=
message
.
getType
();
if
(
"URL"
.
equals
(
type
))
{
List
<
Message
>
children
=
((
Transaction
)
message
).
getChildren
();
for
(
Message
child
:
children
)
{
String
childType
=
child
.
getType
();
String
childName
=
child
.
getName
();
BrowserReport
report
=
m_reportManager
.
getHourlyReport
(
getStartTime
(),
"Cat"
,
true
);
if
(
"URL"
.
equals
(
childType
)
&&
(
"URL.Server"
.
equals
(
childName
)
||
"ClientInfo"
.
equals
(
childName
)))
{
String
data
=
(
String
)
child
.
getData
();
updateBrowserReport
(
report
,
data
);
return
;
}
}
}
}
}
private
void
updateBrowserReport
(
BrowserReport
report
,
String
data
)
{
}
public
class
BrowserAndVersion
{
private
String
browser
;
private
String
browserVersion
;
public
String
getBrowser
()
{
return
browser
;
}
public
void
setBrowser
(
String
browser
)
{
this
.
browser
=
browser
;
}
public
String
getBrowserVersion
()
{
return
browserVersion
;
}
public
void
setBrowserVersion
(
String
browserVersion
)
{
this
.
browserVersion
=
browserVersion
;
}
}
private
static
class
BrowsersAndOses
{
public
static
final
String
OSES
[]
=
{
"Windows NT"
,
"Linux"
,
"WindowsMobile"
,
"Android"
,
"Mac OS"
};
public
static
final
String
BROWSERS
[]
=
{
"Chrome"
,
"Maxthon"
,
"AppleWebKit"
,
"QQBrowser"
,
"UC Browser"
,
"Safari"
,
"LBBROWSER"
,
"QQ Browser"
,
"UCBrowser"
};
}
@Override
public
void
doCheckpoint
(
boolean
atEnd
)
{
}
}
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserDelegate.java
已删除
100644 → 0
浏览文件 @
a191dddd
package
com.dianping.cat.consumer.browser
;
import
java.util.Date
;
import
java.util.Map
;
import
java.util.Set
;
import
org.unidal.lookup.annotation.Inject
;
import
com.dianping.cat.consumer.browser.BrowserReportMerger
;
import
com.dianping.cat.consumer.browser.model.entity.BrowserReport
;
import
com.dianping.cat.consumer.browser.model.transform.DefaultSaxParser
;
import
com.dianping.cat.consumer.browser.model.transform.DefaultNativeBuilder
;
import
com.dianping.cat.consumer.browser.model.transform.DefaultNativeParser
;
import
com.dianping.cat.service.ReportDelegate
;
import
com.dianping.cat.task.TaskManager
;
import
com.dianping.cat.task.TaskManager.TaskProlicy
;
public
class
BrowserDelegate
implements
ReportDelegate
<
BrowserReport
>
{
@Inject
private
TaskManager
m_taskManager
;
@Override
public
void
afterLoad
(
Map
<
String
,
BrowserReport
>
reports
)
{
}
@Override
public
void
beforeSave
(
Map
<
String
,
BrowserReport
>
reports
)
{
for
(
BrowserReport
report
:
reports
.
values
())
{
Set
<
String
>
domainNames
=
report
.
getDomainNames
();
domainNames
.
clear
();
domainNames
.
addAll
(
reports
.
keySet
());
}
}
@Override
public
String
buildXml
(
BrowserReport
report
)
{
return
report
.
toString
();
}
@Override
public
boolean
createHourlyTask
(
BrowserReport
report
)
{
return
m_taskManager
.
createTask
(
report
.
getStartTime
(),
report
.
getDomain
(),
BrowserAnalyzer
.
ID
,
TaskProlicy
.
ALL_EXCLUED_HOURLY
);
}
@Override
public
String
getDomain
(
BrowserReport
report
)
{
return
report
.
getDomain
();
}
@Override
public
BrowserReport
makeReport
(
String
domain
,
long
startTime
,
long
duration
)
{
BrowserReport
report
=
new
BrowserReport
(
domain
);
report
.
setStartTime
(
new
Date
(
startTime
));
report
.
setEndTime
(
new
Date
(
startTime
+
duration
-
1
));
return
report
;
}
@Override
public
BrowserReport
mergeReport
(
BrowserReport
old
,
BrowserReport
other
)
{
BrowserReportMerger
merger
=
new
BrowserReportMerger
(
old
);
other
.
accept
(
merger
);
return
old
;
}
@Override
public
BrowserReport
parseXml
(
String
xml
)
throws
Exception
{
BrowserReport
report
=
DefaultSaxParser
.
parse
(
xml
);
return
report
;
}
@Override
public
byte
[]
buildBinary
(
BrowserReport
report
)
{
return
DefaultNativeBuilder
.
build
(
report
);
}
@Override
public
BrowserReport
parseBinary
(
byte
[]
bytes
)
{
return
DefaultNativeParser
.
parse
(
bytes
);
}
}
cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserReportMerger.java
已删除
100644 → 0
浏览文件 @
a191dddd
package
com.dianping.cat.consumer.browser
;
import
com.dianping.cat.consumer.browser.model.entity.Browser
;
import
com.dianping.cat.consumer.browser.model.entity.BrowserReport
;
import
com.dianping.cat.consumer.browser.model.entity.BrowserVersion
;
import
com.dianping.cat.consumer.browser.model.entity.DomainDetail
;
import
com.dianping.cat.consumer.browser.model.entity.Os
;
import
com.dianping.cat.consumer.browser.model.transform.DefaultMerger
;
public
class
BrowserReportMerger
extends
DefaultMerger
{
public
BrowserReportMerger
(
BrowserReport
browserReport
)
{
super
(
browserReport
);
}
@Override
protected
void
mergeDomainDetail
(
DomainDetail
old
,
DomainDetail
other
)
{
}
@Override
protected
void
mergeBrowser
(
Browser
old
,
Browser
browser
)
{
old
.
setCount
(
old
.
getCount
()
+
browser
.
getCount
());
}
@Override
protected
void
mergeOs
(
Os
old
,
Os
os
)
{
old
.
setCount
(
old
.
getCount
()
+
os
.
getCount
());
}
@Override
protected
void
mergeBrowserVersion
(
BrowserVersion
old
,
BrowserVersion
browserVersion
)
{
old
.
setCount
(
old
.
getCount
()
+
browserVersion
.
getCount
());
}
@Override
public
void
visitBrowserReport
(
BrowserReport
browserReport
)
{
BrowserReport
oldReport
=
getBrowserReport
();
oldReport
.
setDomain
(
browserReport
.
getDomain
());
oldReport
.
setStartTime
(
browserReport
.
getStartTime
());
oldReport
.
setEndTime
(
browserReport
.
getEndTime
());
oldReport
.
getDomainNames
().
addAll
(
browserReport
.
getDomainNames
());
super
.
visitBrowserReport
(
browserReport
);
}
}
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/AllTests.java
浏览文件 @
b6961f7f
...
...
@@ -5,7 +5,6 @@ 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
;
import
com.dianping.cat.consumer.cross.CrossReportMergerTest
;
...
...
@@ -34,8 +33,6 @@ MatrixReportMergerTest.class,
DatabaseParserTest
.
class
,
BrowserReportMergerTest
.
class
,
CrossAnalyzerTest
.
class
,
SqlAnalyzerTest
.
class
,
...
...
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/browser/BrowserAnalyzerTest.java
已删除
100644 → 0
浏览文件 @
a191dddd
package
com.dianping.cat.consumer.browser
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.unidal.lookup.ComponentTestCase
;
import
com.dianping.cat.consumer.browser.model.entity.BrowserReport
;
public
class
BrowserAnalyzerTest
extends
ComponentTestCase
{
@SuppressWarnings
(
"deprecation"
)
@Test
public
void
splitAgentTest
()
throws
Exception
{
BrowserAnalyzer
browserAnalyzer
=
new
BrowserAnalyzer
();
String
s
=
"Agent=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727)"
;
String
[]
strings
=
browserAnalyzer
.
splitAgent
(
s
);
String
[]
supposed
=
{
"Mozilla/4.0"
,
"compatible"
,
"MSIE 8.0"
,
"Windows NT 5.1"
,
"Trident/4.0"
,
".NET CLR 2.0.50727"
};
Assert
.
assertEquals
(
"Check the split result!"
,
strings
,
supposed
);
}
@Test
public
void
updateTest
()
throws
Exception
{
BrowserAnalyzer
browserAnalyzer
=
new
BrowserAnalyzer
();
String
s
=
"Agent=Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.4.2.1000 Chrome/18.0.966.0 Safari/535.12"
;
BrowserReport
actual
=
browserAnalyzer
.
update
(
new
BrowserReport
(
"Cat"
),
browserAnalyzer
.
splitAgent
(
s
));
System
.
out
.
println
(
actual
);
}
@Test
public
void
updateBrowserReportTest
()
throws
Exception
{
BrowserAnalyzer
browserAnalyzer
=
new
BrowserAnalyzer
();
String
s1
=
"Agent=Mozilla/5.0 (Linux; U; Android 4.0.3; zh-CN; WM8850-mid Build/IML74K) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.2.4.329 U3/0.8.0 Mobile Safari/534.31"
;
String
s2
=
"Agent=Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.4.2.1000 Chrome/18.0.966.0 Safari/535.12"
;
BrowserReport
report1
=
browserAnalyzer
.
update
(
new
BrowserReport
(
"Cat"
),
browserAnalyzer
.
splitAgent
(
s1
));
report1
=
browserAnalyzer
.
update
(
report1
,
browserAnalyzer
.
splitAgent
(
s2
));
// Assert.assertEquals("Check the split result!", report1.toString()
// .replace("\r", ""), supposed.toString().replace("\r", ""));
}
}
cat-consumer-advanced/src/test/java/com/dianping/cat/consumer/browser/BrowserReportMergerTest.java
已删除
100644 → 0
浏览文件 @
a191dddd
package
com.dianping.cat.consumer.browser
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.unidal.lookup.ComponentTestCase
;
import
org.unidal.helper.Files
;
import
com.dianping.cat.consumer.browser.model.entity.BrowserReport
;
import
com.dianping.cat.consumer.browser.model.transform.DefaultSaxParser
;
public
class
BrowserReportMergerTest
extends
ComponentTestCase
{
@Test
public
void
mergeDomainTest
()
throws
Exception
{
String
oldXml
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"old.xml"
),
"utf-8"
);
String
newXml
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"new.xml"
),
"utf-8"
);
BrowserReport
reportOld
=
DefaultSaxParser
.
parse
(
oldXml
);
BrowserReport
reportNew
=
DefaultSaxParser
.
parse
(
newXml
);
String
expected
=
Files
.
forIO
().
readFrom
(
getClass
().
getResourceAsStream
(
"result.xml"
),
"utf-8"
);
BrowserReport
result
=
DefaultSaxParser
.
parse
(
expected
);
BrowserReportMerger
merger
=
new
BrowserReportMerger
(
new
BrowserReport
(
reportOld
.
getDomain
()));
reportOld
.
accept
(
merger
);
reportNew
.
accept
(
merger
);
Assert
.
assertEquals
(
"Check the merge result!"
,
result
.
toString
(),
merger
.
getBrowserReport
().
toString
());
}
}
cat-home/src/main/java/com/dianping/cat/report/page/AbstractReportModel.java
浏览文件 @
b6961f7f
...
...
@@ -90,8 +90,9 @@ public abstract class AbstractReportModel<A extends Action, M extends ActionCont
int
hour
=
cal
.
get
(
Calendar
.
HOUR_OF_DAY
);
if
(
hour
<
10
)
{
return
"0"
+
Integer
.
toString
(
hour
);
}
else
}
else
{
return
Integer
.
toString
(
hour
);
}
}
// required by report tag
...
...
cat-home/src/main/java/com/dianping/cat/system/page/abtest/util/CaseBuilder.java
浏览文件 @
b6961f7f
...
...
@@ -40,7 +40,7 @@ public class CaseBuilder {
return
case_
;
}
else
{
throw
new
NullPointer
Exception
(
"Cannot builder case due to the abtest , abtestRun or groupStrategy is null"
);
throw
new
Runtime
Exception
(
"Cannot builder case due to the abtest , abtestRun or groupStrategy is null"
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录