Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦中观雨
cat
提交
ad94f5ad
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,发现更多精彩内容 >>
提交
ad94f5ad
编写于
9月 03, 2012
作者:
F
Frankie Wu
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
ssh://192.168.8.22:58422/cat
上级
aa468e07
dc531379
变更
13
隐藏空白更改
内联
并排
Showing
13 changed file
with
383 addition
and
110 deletion
+383
-110
bee-engine/src/main/java/com/dianping/bee/engine/build/ComponentsConfigurator.java
...com/dianping/bee/engine/build/ComponentsConfigurator.java
+16
-1
bee-engine/src/main/java/com/dianping/bee/engine/spi/evaluator/logical/ParamMarkerEvaluator.java
...ee/engine/spi/evaluator/logical/ParamMarkerEvaluator.java
+14
-0
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/SingleTableStatementBuilder.java
.../bee/engine/spi/internal/SingleTableStatementBuilder.java
+7
-1
bee-engine/src/main/java/com/dianping/bee/engine/spi/row/DefaultRowContext.java
...va/com/dianping/bee/engine/spi/row/DefaultRowContext.java
+26
-2
bee-engine/src/main/java/com/dianping/bee/engine/spi/row/RowContext.java
...main/java/com/dianping/bee/engine/spi/row/RowContext.java
+2
-0
bee-engine/src/main/resources/META-INF/plexus/components.xml
bee-engine/src/main/resources/META-INF/plexus/components.xml
+23
-0
bee-engine/src/test/java/com/dianping/bee/db/cat/CatDatabase.java
...ne/src/test/java/com/dianping/bee/db/cat/CatDatabase.java
+16
-57
bee-engine/src/test/java/com/dianping/bee/db/cat/EventIndexer.java
...e/src/test/java/com/dianping/bee/db/cat/EventIndexer.java
+118
-0
bee-engine/src/test/java/com/dianping/bee/db/cat/TransactionIndexer.java
...test/java/com/dianping/bee/db/cat/TransactionIndexer.java
+118
-0
bee-engine/src/test/java/com/dianping/bee/db/dog/DogDatabase.java
...ne/src/test/java/com/dianping/bee/db/dog/DogDatabase.java
+1
-29
bee-engine/src/test/java/com/dianping/bee/jdbc/JDBCTest.java
bee-engine/src/test/java/com/dianping/bee/jdbc/JDBCTest.java
+26
-16
bee-engine/src/test/java/com/dianping/bee/jdbc/JDBCTestConfigurator.java
...test/java/com/dianping/bee/jdbc/JDBCTestConfigurator.java
+6
-2
bee-engine/src/test/resources/com/dianping/bee/jdbc/JDBCTest.xml
...ine/src/test/resources/com/dianping/bee/jdbc/JDBCTest.xml
+10
-2
未找到文件。
bee-engine/src/main/java/com/dianping/bee/engine/build/ComponentsConfigurator.java
浏览文件 @
ad94f5ad
...
...
@@ -3,6 +3,10 @@ package com.dianping.bee.engine.build;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.dianping.bee.db.cat.CatDatabase
;
import
com.dianping.bee.db.cat.EventIndexer
;
import
com.dianping.bee.db.cat.TransactionIndexer
;
import
com.dianping.bee.db.dog.DogDatabase
;
import
com.dianping.bee.engine.spi.DatabaseProvider
;
import
com.dianping.bee.engine.spi.StatementManager
;
import
com.dianping.bee.engine.spi.TableProviderManager
;
...
...
@@ -22,6 +26,7 @@ import com.dianping.bee.engine.spi.evaluator.logical.LiteralNumberEvaluator;
import
com.dianping.bee.engine.spi.evaluator.logical.LiteralStringEvaluator
;
import
com.dianping.bee.engine.spi.evaluator.logical.LogicalAndEvaluator
;
import
com.dianping.bee.engine.spi.evaluator.logical.LogicalOrEvaluator
;
import
com.dianping.bee.engine.spi.evaluator.logical.ParamMarkerEvaluator
;
import
com.dianping.bee.engine.spi.handler.internal.DescHandler
;
import
com.dianping.bee.engine.spi.handler.internal.PrepareHandler
;
import
com.dianping.bee.engine.spi.handler.internal.SelectHandler
;
...
...
@@ -72,10 +77,19 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
defineHandlers
(
all
);
defineLogicalEvaluators
(
all
);
defineFunctionEvaluators
(
all
);
defineDatabaseProvider
(
all
);
return
all
;
}
// FIXME: need dependency reverse
private
void
defineDatabaseProvider
(
List
<
Component
>
all
)
{
all
.
add
(
C
(
DatabaseProvider
.
class
,
"cat"
,
CatDatabase
.
class
));
all
.
add
(
C
(
TransactionIndexer
.
class
));
all
.
add
(
C
(
EventIndexer
.
class
));
all
.
add
(
C
(
DatabaseProvider
.
class
,
"dog"
,
DogDatabase
.
class
));
}
private
void
defineFunctionEvaluators
(
List
<
Component
>
all
)
{
all
.
add
(
C
(
Evaluator
.
class
,
ConcatEvaluator
.
ID
,
ConcatEvaluator
.
class
));
}
...
...
@@ -110,7 +124,8 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
all
.
add
(
C
(
Evaluator
.
class
,
InEvaluator
.
ID
,
InEvaluator
.
class
));
all
.
add
(
C
(
Evaluator
.
class
,
IdentifierEvaluator
.
ID
,
IdentifierEvaluator
.
class
));
all
.
add
(
C
(
Evaluator
.
class
,
ParamMarkerEvaluator
.
ID
,
ParamMarkerEvaluator
.
class
));
all
.
add
(
C
(
Evaluator
.
class
,
LiteralStringEvaluator
.
ID
,
LiteralStringEvaluator
.
class
));
all
.
add
(
C
(
Evaluator
.
class
,
LiteralNumberEvaluator
.
ID
,
LiteralNumberEvaluator
.
class
));
all
.
add
(
C
(
Evaluator
.
class
,
LiteralBooleanEvaluator
.
ID
,
LiteralBooleanEvaluator
.
class
));
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/evaluator/logical/ParamMarkerEvaluator.java
0 → 100644
浏览文件 @
ad94f5ad
package
com.dianping.bee.engine.spi.evaluator.logical
;
import
com.alibaba.cobar.parser.ast.expression.primary.ParamMarker
;
import
com.dianping.bee.engine.spi.evaluator.AbstractEvaluator
;
import
com.dianping.bee.engine.spi.row.RowContext
;
public
class
ParamMarkerEvaluator
extends
AbstractEvaluator
<
ParamMarker
,
Object
>
{
public
static
final
String
ID
=
ParamMarker
.
class
.
getName
();
@Override
public
Object
evaluate
(
RowContext
ctx
,
ParamMarker
expr
)
{
return
ctx
.
getFirstAttribute
(
expr
.
getParamIndex
(),
""
);
}
}
bee-engine/src/main/java/com/dianping/bee/engine/spi/internal/SingleTableStatementBuilder.java
浏览文件 @
ad94f5ad
...
...
@@ -166,7 +166,13 @@ public class SingleTableStatementBuilder extends EmptySQLASTVisitor {
Number
value
=
((
LiteralNumber
)
right
).
getNumber
();
m_stmt
.
addAttribute
(
name
,
value
);
}
}
else
if
(
right
instanceof
ParamMarker
)
{
// FIXME
String
name
=
((
Identifier
)
left
).
getIdText
();
String
value
=
"?"
;
m_stmt
.
addAttribute
(
name
,
value
);
}
}
super
.
visit
(
node
);
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/row/DefaultRowContext.java
浏览文件 @
ad94f5ad
package
com.dianping.bee.engine.spi.row
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -27,7 +29,7 @@ public class DefaultRowContext implements RowContext {
}
@SuppressWarnings
(
"unchecked"
)
@Override
@Override
public
<
T
>
List
<
T
>
getAttributeValues
(
String
name
)
{
return
(
List
<
T
>)
m_attributes
.
get
(
name
);
}
...
...
@@ -45,7 +47,7 @@ public class DefaultRowContext implements RowContext {
@SuppressWarnings
(
"unchecked"
)
@Override
public
<
T
>
T
getFirstAttribute
(
String
name
,
T
defaultValue
)
{
public
<
T
>
T
getFirstAttribute
(
String
name
,
T
defaultValue
)
{
List
<
T
>
list
=
(
List
<
T
>)
m_attributes
.
get
(
name
);
if
(
list
==
null
||
list
.
isEmpty
())
{
...
...
@@ -55,6 +57,27 @@ public class DefaultRowContext implements RowContext {
}
}
@SuppressWarnings
(
"unchecked"
)
@Override
public
<
T
>
T
getFirstAttribute
(
int
attrIndex
,
T
defaultValue
)
{
int
index
=
0
;
Collection
<
List
<
Object
>>
values
=
m_attributes
.
values
();
Iterator
<
List
<
Object
>>
iterator
=
values
.
iterator
();
while
(
iterator
.
hasNext
()
&&
index
++
<
attrIndex
)
{
iterator
.
next
();
}
if
(
iterator
.
hasNext
())
{
List
<
T
>
list
=
(
List
<
T
>)
iterator
.
next
();
if
(
list
==
null
||
list
.
isEmpty
())
{
return
defaultValue
;
}
else
{
return
list
.
get
(
0
);
}
}
return
defaultValue
;
}
@SuppressWarnings
(
"unchecked"
)
@Override
public
<
T
>
T
getValue
(
int
colIndex
)
{
...
...
@@ -85,6 +108,7 @@ public class DefaultRowContext implements RowContext {
public
void
setColumnValue
(
int
colIndex
,
Object
value
)
{
m_values
[
colIndex
]
=
value
;
}
public
void
setRowListener
(
RowListener
listener
)
{
m_listener
=
listener
;
}
...
...
bee-engine/src/main/java/com/dianping/bee/engine/spi/row/RowContext.java
浏览文件 @
ad94f5ad
...
...
@@ -16,6 +16,8 @@ public interface RowContext {
public
<
T
>
T
getFirstAttribute
(
String
name
,
T
defaultValue
);
public
<
T
>
T
getFirstAttribute
(
int
attrIndex
,
T
defaultValue
);
public
<
T
>
T
getValue
(
int
colIndex
);
public
<
T
>
T
getValue
(
String
columnName
);
...
...
bee-engine/src/main/resources/META-INF/plexus/components.xml
浏览文件 @
ad94f5ad
...
...
@@ -177,6 +177,11 @@
<role-hint>
com.alibaba.cobar.parser.ast.expression.primary.Identifier
</role-hint>
<implementation>
com.dianping.bee.engine.spi.evaluator.logical.IdentifierEvaluator
</implementation>
</component>
<component>
<role>
com.dianping.bee.engine.spi.evaluator.Evaluator
</role>
<role-hint>
com.alibaba.cobar.parser.ast.expression.primary.ParamMarker
</role-hint>
<implementation>
com.dianping.bee.engine.spi.evaluator.logical.ParamMarkerEvaluator
</implementation>
</component>
<component>
<role>
com.dianping.bee.engine.spi.evaluator.Evaluator
</role>
<role-hint>
com.alibaba.cobar.parser.ast.expression.primary.literal.LiteralString
</role-hint>
...
...
@@ -197,5 +202,23 @@
<role-hint>
com.alibaba.cobar.parser.ast.expression.primary.function.string.Concat
</role-hint>
<implementation>
com.dianping.bee.engine.spi.evaluator.function.ConcatEvaluator
</implementation>
</component>
<component>
<role>
com.dianping.bee.engine.spi.DatabaseProvider
</role>
<role-hint>
cat
</role-hint>
<implementation>
com.dianping.bee.db.cat.CatDatabase
</implementation>
</component>
<component>
<role>
com.dianping.bee.db.cat.TransactionIndexer
</role>
<implementation>
com.dianping.bee.db.cat.TransactionIndexer
</implementation>
</component>
<component>
<role>
com.dianping.bee.db.cat.EventIndexer
</role>
<implementation>
com.dianping.bee.db.cat.EventIndexer
</implementation>
</component>
<component>
<role>
com.dianping.bee.engine.spi.DatabaseProvider
</role>
<role-hint>
dog
</role-hint>
<implementation>
com.dianping.bee.db.dog.DogDatabase
</implementation>
</component>
</components>
</plexus>
bee-engine/src/test/java/com/dianping/bee/db/CatDatabase.java
→
bee-engine/src/test/java/com/dianping/bee/db/
cat/
CatDatabase.java
浏览文件 @
ad94f5ad
package
com.dianping.bee.db
;
import
org.apache.commons.lang3.RandomStringUtils
;
package
com.dianping.bee.db.cat
;
import
com.dianping.bee.engine.spi.DatabaseProvider
;
import
com.dianping.bee.engine.spi.TableProvider
;
import
com.dianping.bee.engine.spi.index.Index
;
import
com.dianping.bee.engine.spi.meta.ColumnMeta
;
import
com.dianping.bee.engine.spi.meta.IndexMeta
;
import
com.dianping.bee.engine.spi.row.RowContext
;
public
class
CatDatabase
implements
DatabaseProvider
{
...
...
@@ -62,18 +59,18 @@ public class CatDatabase implements DatabaseProvider {
}
@Override
public
IndexMeta
[]
getIndexes
()
{
public
IndexMeta
getDefaultIndex
()
{
return
null
;
}
@Override
public
String
getName
()
{
return
m_name
;
public
IndexMeta
[]
getIndexes
()
{
return
null
;
}
@Override
public
IndexMeta
getDefaultIndex
()
{
return
null
;
public
String
getName
()
{
return
m_name
;
}
}
...
...
@@ -165,6 +162,11 @@ public class CatDatabase implements DatabaseProvider {
}
}
@Override
public
Class
<?
extends
Index
>
getIndexClass
()
{
return
EventIndexer
.
class
;
}
@Override
public
int
getLength
()
{
return
m_columns
.
length
;
...
...
@@ -178,11 +180,6 @@ public class CatDatabase implements DatabaseProvider {
throw
new
IndexOutOfBoundsException
(
"size: "
+
m_orders
.
length
+
", index: "
+
index
);
}
}
@Override
public
Class
<?
extends
Index
>
getIndexClass
()
{
return
TransactionIndexer
.
class
;
}
}
public
static
enum
TransactionColumn
implements
ColumnMeta
{
...
...
@@ -263,6 +260,11 @@ public class CatDatabase implements DatabaseProvider {
}
}
@Override
public
Class
<?
extends
Index
>
getIndexClass
()
{
return
TransactionIndexer
.
class
;
}
@Override
public
int
getLength
()
{
return
m_columns
.
length
;
...
...
@@ -276,49 +278,6 @@ public class CatDatabase implements DatabaseProvider {
throw
new
IndexOutOfBoundsException
(
"size: "
+
m_orders
.
length
+
", index: "
+
index
);
}
}
@Override
public
Class
<?
extends
Index
>
getIndexClass
()
{
throw
new
UnsupportedOperationException
(
"Not implemented yet!"
);
}
}
private
static
class
TransactionSampleData
{
private
static
Object
[][]
sampleData
;
static
{
sampleData
=
new
Object
[
10
][];
int
columnSize
=
TransactionColumn
.
values
().
length
;
for
(
int
i
=
0
;
i
<
sampleData
.
length
;
i
++)
{
sampleData
[
i
]
=
new
Object
[
columnSize
];
for
(
int
j
=
0
;
i
<
columnSize
;
j
++)
{
if
(
TransactionColumn
.
values
()[
j
].
getType
().
getSimpleName
().
equals
(
"String"
))
{
sampleData
[
i
][
j
]
=
RandomStringUtils
.
randomAlphabetic
(
5
);
}
else
if
(
TransactionColumn
.
values
()[
j
].
getType
().
getSimpleName
().
equals
(
"Integer"
)
||
TransactionColumn
.
values
()[
j
].
getType
().
getSimpleName
().
equals
(
"Long"
))
{
sampleData
[
i
][
j
]
=
RandomStringUtils
.
randomNumeric
(
3
);
}
else
{
sampleData
[
i
][
j
]
=
RandomStringUtils
.
randomAlphanumeric
(
5
);
}
}
}
}
public
static
Object
[][]
getSampleData
()
{
return
sampleData
;
}
}
private
class
TransactionIndexer
implements
Index
{
@Override
public
void
query
(
RowContext
ctx
)
throws
Exception
{
Object
[][]
sampleData
=
TransactionSampleData
.
getSampleData
();
for
(
int
i
=
0
;
i
<
sampleData
.
length
;
i
++)
{
ctx
.
apply
();
}
}
}
@Override
...
...
bee-engine/src/test/java/com/dianping/bee/db/cat/EventIndexer.java
0 → 100644
浏览文件 @
ad94f5ad
/**
* Project: bee-engine
*
* File Created at 2012-9-3
*
* Copyright 2012 dianping.com.
* All rights reserved.
*
* This software is the confidential and proprietary information of
* Dianping Company. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with dianping.com.
*/
package
com.dianping.bee.db.cat
;
import
java.util.Random
;
import
org.apache.commons.lang3.RandomStringUtils
;
import
com.dianping.bee.db.cat.CatDatabase.EventColumn
;
import
com.dianping.bee.engine.spi.index.Index
;
import
com.dianping.bee.engine.spi.row.RowContext
;
public
class
EventIndexer
implements
Index
{
@Override
public
void
query
(
RowContext
ctx
)
throws
Exception
{
Object
[][]
sampleData
=
EventSampleData
.
getSampleData
();
for
(
int
i
=
0
;
i
<
sampleData
.
length
;
i
++)
{
applyRow
(
ctx
,
sampleData
[
i
]);
}
}
/**
* @param objects
*/
private
void
applyRow
(
RowContext
ctx
,
Object
[]
row
)
{
int
cols
=
ctx
.
getColumnSize
();
for
(
int
i
=
0
;
i
<
cols
;
i
++)
{
EventColumn
column
=
ctx
.
getColumn
(
i
);
switch
(
column
)
{
case
Type:
ctx
.
setColumnValue
(
i
,
row
[
2
]);
break
;
case
Name:
ctx
.
setColumnValue
(
i
,
row
[
3
]);
break
;
case
Domain:
ctx
.
setColumnValue
(
i
,
row
[
1
]);
break
;
case
StartTime:
ctx
.
setColumnValue
(
i
,
row
[
0
]);
break
;
case
MinDuration:
ctx
.
setColumnValue
(
i
,
row
[
7
]);
break
;
case
MaxDuration:
ctx
.
setColumnValue
(
i
,
row
[
8
]);
break
;
case
SampleMessage:
ctx
.
setColumnValue
(
i
,
row
[
6
]);
break
;
case
TotalCount:
ctx
.
setColumnValue
(
i
,
row
[
4
]);
break
;
case
Line95:
ctx
.
setColumnValue
(
i
,
row
[
11
]);
break
;
case
Failures:
ctx
.
setColumnValue
(
i
,
row
[
5
]);
default
:
// TODO more here
}
}
ctx
.
apply
();
}
static
class
EventSampleData
{
private
static
Object
[][]
sampleData
;
static
{
sampleData
=
new
Object
[
10
][];
Random
random
=
new
Random
();
int
columnSize
=
EventColumn
.
values
().
length
;
for
(
int
i
=
0
;
i
<
sampleData
.
length
;
i
++)
{
sampleData
[
i
]
=
new
Object
[
columnSize
];
for
(
int
j
=
0
;
j
<
columnSize
;
j
++)
{
if
(
EventColumn
.
values
()[
j
].
getName
().
equalsIgnoreCase
(
"Domain"
))
{
sampleData
[
i
][
j
]
=
random
.
nextBoolean
()
?
"MobileApi"
:
RandomStringUtils
.
randomAlphabetic
(
5
);
continue
;
}
else
if
(
EventColumn
.
values
()[
j
].
getName
().
equalsIgnoreCase
(
"StartTime"
))
{
sampleData
[
i
][
j
]
=
random
.
nextBoolean
()
?
"20120822"
:
RandomStringUtils
.
randomNumeric
(
8
);
continue
;
}
if
(
EventColumn
.
values
()[
j
].
getType
().
getSimpleName
().
equals
(
"String"
))
{
sampleData
[
i
][
j
]
=
RandomStringUtils
.
randomAlphabetic
(
5
);
}
else
if
(
EventColumn
.
values
()[
j
].
getType
().
getSimpleName
().
equals
(
"Integer"
)
||
EventColumn
.
values
()[
j
].
getType
().
getSimpleName
().
equals
(
"Long"
))
{
sampleData
[
i
][
j
]
=
RandomStringUtils
.
randomNumeric
(
3
);
}
else
{
sampleData
[
i
][
j
]
=
RandomStringUtils
.
randomAlphanumeric
(
5
);
}
}
}
}
public
static
Object
[][]
getSampleData
()
{
return
sampleData
;
}
}
}
\ No newline at end of file
bee-engine/src/test/java/com/dianping/bee/db/cat/TransactionIndexer.java
0 → 100644
浏览文件 @
ad94f5ad
/**
* Project: bee-engine
*
* File Created at 2012-9-3
*
* Copyright 2012 dianping.com.
* All rights reserved.
*
* This software is the confidential and proprietary information of
* Dianping Company. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with dianping.com.
*/
package
com.dianping.bee.db.cat
;
import
java.util.Random
;
import
org.apache.commons.lang3.RandomStringUtils
;
import
com.dianping.bee.db.cat.CatDatabase.TransactionColumn
;
import
com.dianping.bee.engine.spi.index.Index
;
import
com.dianping.bee.engine.spi.row.RowContext
;
public
class
TransactionIndexer
implements
Index
{
@Override
public
void
query
(
RowContext
ctx
)
throws
Exception
{
Object
[][]
sampleData
=
TransactionSampleData
.
getSampleData
();
for
(
int
i
=
0
;
i
<
sampleData
.
length
;
i
++)
{
applyRow
(
ctx
,
sampleData
[
i
]);
}
}
/**
* @param objects
*/
private
void
applyRow
(
RowContext
ctx
,
Object
[]
row
)
{
int
cols
=
ctx
.
getColumnSize
();
for
(
int
i
=
0
;
i
<
cols
;
i
++)
{
TransactionColumn
column
=
ctx
.
getColumn
(
i
);
switch
(
column
)
{
case
Type:
ctx
.
setColumnValue
(
i
,
row
[
2
]);
break
;
case
Name:
ctx
.
setColumnValue
(
i
,
row
[
3
]);
break
;
case
Domain:
ctx
.
setColumnValue
(
i
,
row
[
1
]);
break
;
case
StartTime:
ctx
.
setColumnValue
(
i
,
row
[
0
]);
break
;
case
MinDuration:
ctx
.
setColumnValue
(
i
,
row
[
7
]);
break
;
case
MaxDuration:
ctx
.
setColumnValue
(
i
,
row
[
8
]);
break
;
case
SampleMessage:
ctx
.
setColumnValue
(
i
,
row
[
6
]);
break
;
case
TotalCount:
ctx
.
setColumnValue
(
i
,
row
[
4
]);
break
;
case
Line95:
ctx
.
setColumnValue
(
i
,
row
[
11
]);
break
;
case
Failures:
ctx
.
setColumnValue
(
i
,
row
[
5
]);
default
:
// TODO more here
}
}
ctx
.
apply
();
}
static
class
TransactionSampleData
{
private
static
Object
[][]
sampleData
;
static
{
sampleData
=
new
Object
[
10
][];
Random
random
=
new
Random
();
int
columnSize
=
TransactionColumn
.
values
().
length
;
for
(
int
i
=
0
;
i
<
sampleData
.
length
;
i
++)
{
sampleData
[
i
]
=
new
Object
[
columnSize
];
for
(
int
j
=
0
;
j
<
columnSize
;
j
++)
{
if
(
TransactionColumn
.
values
()[
j
].
getName
().
equalsIgnoreCase
(
"Domain"
))
{
sampleData
[
i
][
j
]
=
random
.
nextBoolean
()
?
"MobileApi"
:
RandomStringUtils
.
randomAlphabetic
(
5
);
continue
;
}
else
if
(
TransactionColumn
.
values
()[
j
].
getName
().
equalsIgnoreCase
(
"StartTime"
))
{
sampleData
[
i
][
j
]
=
random
.
nextBoolean
()
?
"20120822"
:
RandomStringUtils
.
randomNumeric
(
8
);
continue
;
}
if
(
TransactionColumn
.
values
()[
j
].
getType
().
getSimpleName
().
equals
(
"String"
))
{
sampleData
[
i
][
j
]
=
RandomStringUtils
.
randomAlphabetic
(
5
);
}
else
if
(
TransactionColumn
.
values
()[
j
].
getType
().
getSimpleName
().
equals
(
"Integer"
)
||
TransactionColumn
.
values
()[
j
].
getType
().
getSimpleName
().
equals
(
"Long"
))
{
sampleData
[
i
][
j
]
=
RandomStringUtils
.
randomNumeric
(
3
);
}
else
{
sampleData
[
i
][
j
]
=
RandomStringUtils
.
randomAlphanumeric
(
5
);
}
}
}
}
public
static
Object
[][]
getSampleData
()
{
return
sampleData
;
}
}
}
\ No newline at end of file
bee-engine/src/test/java/com/dianping/bee/db/DogDatabase.java
→
bee-engine/src/test/java/com/dianping/bee/db/
dog/
DogDatabase.java
浏览文件 @
ad94f5ad
package
com.dianping.bee.db
;
package
com.dianping.bee.db
.dog
;
import
com.dianping.bee.engine.spi.DatabaseProvider
;
import
com.dianping.bee.engine.spi.TableProvider
;
...
...
@@ -48,34 +48,6 @@ public class DogDatabase implements DatabaseProvider {
return
m_name
;
}
// @Override
// public RowSet queryByIndex(IndexMeta index, ColumnMeta[] selectColumns) {
// ColumnMeta[] columns = selectColumns;
// DefaultRowSet rowSet = new DefaultRowSet(columns);
//
// for (int rowIndex = 0; rowIndex < 10; rowIndex++) {
// Cell[] cells = new Cell[columns.length];
//
// for (int colIndex = 0; colIndex < cells.length; colIndex++) {
// ColumnMeta columnMeta = columns[colIndex];
// String randomValue = null;
// if (columnMeta.getType().getSimpleName().equals("String")) {
// randomValue = RandomStringUtils.randomAlphabetic(5);
// } else if (columnMeta.getType().getSimpleName().equals("Integer")
// || columnMeta.getType().getSimpleName().equals("Long")) {
// randomValue = RandomStringUtils.randomNumeric(3);
// } else {
// randomValue = RandomStringUtils.randomAlphanumeric(5);
// }
// cells[colIndex] = new DefaultCell(columnMeta, randomValue);
// }
//
// Row row = new DefaultRow(cells);
// rowSet.addRow(row);
// }
// return rowSet;
// }
@Override
public
IndexMeta
getDefaultIndex
()
{
return
TransactionIndex
.
IDX_STARTTIME_DOMAIN
;
...
...
bee-engine/src/test/java/com/dianping/bee/jdbc/JDBCTest.java
浏览文件 @
ad94f5ad
...
...
@@ -72,7 +72,7 @@ public class JDBCTest extends ComponentTestCase {
Assert
.
assertNotNull
(
rs
);
rs
.
last
();
Assert
.
assertEquals
(
0
,
rs
.
getRow
());
displayResultSet
(
rs
);
displayResultSet
(
sql
,
rs
);
conn
.
close
();
}
...
...
@@ -85,18 +85,20 @@ public class JDBCTest extends ComponentTestCase {
String
driver
=
"com.mysql.jdbc.Driver"
;
String
userName
=
"test"
;
String
password
=
"test"
;
String
sql
=
null
;
Class
.
forName
(
driver
).
newInstance
();
DriverManager
.
setLoginTimeout
(
600
);
Connection
conn
=
DriverManager
.
getConnection
(
url
+
dbName
,
userName
,
password
);
Statement
stmt
=
conn
.
createStatement
();
Assert
.
assertNotNull
(
stmt
);
ResultSet
rs
=
stmt
.
executeQuery
(
"select type, sum(failures) from transaction where domain=? and starttime=?"
);
Assert
.
assertEquals
(
2
,
rs
.
getMetaData
().
getColumnCount
());
sql
=
"select type, sum(failures), domain from transaction where domain='MobileApi' and starttime='20120822'"
;
ResultSet
rs
=
stmt
.
executeQuery
(
sql
);
Assert
.
assertEquals
(
3
,
rs
.
getMetaData
().
getColumnCount
());
Assert
.
assertNotNull
(
rs
);
rs
.
last
();
Assert
.
assertTrue
(
rs
.
getRow
()
>
0
);
displayResultSet
(
rs
);
displayResultSet
(
sql
,
rs
);
conn
.
close
();
}
...
...
@@ -108,6 +110,7 @@ public class JDBCTest extends ComponentTestCase {
String
driver
=
"com.mysql.jdbc.Driver"
;
String
userName
=
"test"
;
String
password
=
"test"
;
String
sql
=
null
;
Class
.
forName
(
driver
).
newInstance
();
DriverManager
.
setLoginTimeout
(
600
);
...
...
@@ -115,34 +118,37 @@ public class JDBCTest extends ComponentTestCase {
Statement
stmt1
=
conn
.
createStatement
();
Assert
.
assertNotNull
(
stmt1
);
ResultSet
rs1
=
stmt1
.
executeQuery
(
"select type, sum(failures) from transaction where domain=? and starttime=?"
);
sql
=
"select type, sum(failures) from transaction where domain='MobileApi' and starttime='20120822'"
;
ResultSet
rs1
=
stmt1
.
executeQuery
(
sql
);
Assert
.
assertEquals
(
2
,
rs1
.
getMetaData
().
getColumnCount
());
Assert
.
assertNotNull
(
rs1
);
rs1
.
last
();
Assert
.
assertTrue
(
rs1
.
getRow
()
>
0
);
displayResultSet
(
rs1
);
displayResultSet
(
sql
,
rs1
);
Statement
stmt2
=
conn
.
createStatement
();
Assert
.
assertNotNull
(
stmt2
);
ResultSet
rs2
=
stmt2
.
executeQuery
(
"select type,sum(failures) from event"
);
sql
=
"select type,sum(failures) from event"
;
ResultSet
rs2
=
stmt2
.
executeQuery
(
sql
);
Assert
.
assertEquals
(
2
,
rs2
.
getMetaData
().
getColumnCount
());
Assert
.
assertNotNull
(
rs2
);
rs2
.
last
();
Assert
.
assertTrue
(
rs2
.
getRow
()
>
0
);
displayResultSet
(
rs2
);
displayResultSet
(
sql
,
rs2
);
Statement
stmt3
=
conn
.
createStatement
();
Assert
.
assertNotNull
(
stmt3
);
ResultSet
rs3
=
stmt3
.
executeQuery
(
"select * from transaction"
);
sql
=
"select * from transaction"
;
ResultSet
rs3
=
stmt3
.
executeQuery
(
sql
);
Assert
.
assertTrue
(
rs3
.
getMetaData
().
getColumnCount
()
>
0
);
Assert
.
assertNotNull
(
rs3
);
rs3
.
last
();
Assert
.
assertTrue
(
rs3
.
getRow
()
>
0
);
displayResultSet
(
rs3
);
displayResultSet
(
sql
,
rs3
);
conn
.
close
();
}
//
@Test
@Test
public
void
testMultiQueryInMultiDatabaese
()
throws
InstantiationException
,
IllegalAccessException
,
ClassNotFoundException
,
SQLException
{
String
url
=
"jdbc:mysql://localhost:2330/"
;
...
...
@@ -150,6 +156,7 @@ public class JDBCTest extends ComponentTestCase {
String
driver
=
"com.mysql.jdbc.Driver"
;
String
userName
=
"test"
;
String
password
=
"test"
;
String
sql
=
null
;
Class
.
forName
(
driver
).
newInstance
();
DriverManager
.
setLoginTimeout
(
600
);
...
...
@@ -157,28 +164,31 @@ public class JDBCTest extends ComponentTestCase {
Statement
stmt1
=
conn1
.
createStatement
();
Assert
.
assertNotNull
(
stmt1
);
ResultSet
rs1
=
stmt1
.
executeQuery
(
"select type, sum(failures) from transaction where domain=? and starttime=?"
);
sql
=
"select type, sum(failures) from transaction where domain='MobileApi' and starttime='20120822'"
;
ResultSet
rs1
=
stmt1
.
executeQuery
(
sql
);
Assert
.
assertEquals
(
2
,
rs1
.
getMetaData
().
getColumnCount
());
Assert
.
assertNotNull
(
rs1
);
rs1
.
last
();
Assert
.
assertTrue
(
rs1
.
getRow
()
>
0
);
displayResultSet
(
rs1
);
displayResultSet
(
sql
,
rs1
);
conn1
.
close
();
dbName
=
"dog"
;
Connection
conn2
=
DriverManager
.
getConnection
(
url
+
dbName
,
userName
,
password
);
Statement
stmt2
=
conn2
.
createStatement
();
Assert
.
assertNotNull
(
stmt2
);
ResultSet
rs2
=
stmt2
.
executeQuery
(
"select type, sum(failures) from transaction where domain=? and starttime=?"
);
sql
=
"select type, sum(failures) from transaction where domain='MobileApi' and starttime='20120822'"
;
ResultSet
rs2
=
stmt2
.
executeQuery
(
sql
);
Assert
.
assertEquals
(
2
,
rs2
.
getMetaData
().
getColumnCount
());
Assert
.
assertNotNull
(
rs2
);
rs2
.
last
();
Assert
.
assertTrue
(
rs2
.
getRow
()
>
0
);
displayResultSet
(
rs2
);
displayResultSet
(
sql
,
rs2
);
conn2
.
close
();
}
private
void
displayResultSet
(
ResultSet
rs
)
throws
SQLException
{
private
void
displayResultSet
(
String
sql
,
ResultSet
rs
)
throws
SQLException
{
System
.
out
.
println
(
"Query: "
+
sql
);
ResultSetMetaData
meta
=
rs
.
getMetaData
();
int
columns
=
meta
.
getColumnCount
();
for
(
int
column
=
1
;
column
<=
columns
;
column
++)
{
...
...
bee-engine/src/test/java/com/dianping/bee/jdbc/JDBCTestConfigurator.java
浏览文件 @
ad94f5ad
...
...
@@ -4,8 +4,10 @@ import java.io.File;
import
java.util.ArrayList
;
import
java.util.List
;
import
com.dianping.bee.db.CatDatabase
;
import
com.dianping.bee.db.DogDatabase
;
import
com.dianping.bee.db.cat.CatDatabase
;
import
com.dianping.bee.db.cat.EventIndexer
;
import
com.dianping.bee.db.cat.TransactionIndexer
;
import
com.dianping.bee.db.dog.DogDatabase
;
import
com.dianping.bee.engine.spi.DatabaseProvider
;
import
com.site.lookup.configuration.AbstractResourceConfigurator
;
import
com.site.lookup.configuration.Component
;
...
...
@@ -20,6 +22,8 @@ public class JDBCTestConfigurator extends AbstractResourceConfigurator {
List
<
Component
>
all
=
new
ArrayList
<
Component
>();
all
.
add
(
C
(
DatabaseProvider
.
class
,
"cat"
,
CatDatabase
.
class
));
all
.
add
(
C
(
EventIndexer
.
class
));
all
.
add
(
C
(
TransactionIndexer
.
class
));
all
.
add
(
C
(
DatabaseProvider
.
class
,
"dog"
,
DogDatabase
.
class
));
return
all
;
...
...
bee-engine/src/test/resources/com/dianping/bee/jdbc/JDBCTest.xml
浏览文件 @
ad94f5ad
...
...
@@ -3,12 +3,20 @@
<component>
<role>
com.dianping.bee.engine.spi.DatabaseProvider
</role>
<role-hint>
cat
</role-hint>
<implementation>
com.dianping.bee.db.CatDatabase
</implementation>
<implementation>
com.dianping.bee.db.cat.CatDatabase
</implementation>
</component>
<component>
<role>
com.dianping.bee.db.cat.EventIndexer
</role>
<implementation>
com.dianping.bee.db.cat.EventIndexer
</implementation>
</component>
<component>
<role>
com.dianping.bee.db.cat.TransactionIndexer
</role>
<implementation>
com.dianping.bee.db.cat.TransactionIndexer
</implementation>
</component>
<component>
<role>
com.dianping.bee.engine.spi.DatabaseProvider
</role>
<role-hint>
dog
</role-hint>
<implementation>
com.dianping.bee.db.DogDatabase
</implementation>
<implementation>
com.dianping.bee.db.
dog.
DogDatabase
</implementation>
</component>
</components>
</plexus>
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录