Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
上島
soar
提交
cc2d6641
S
soar
项目概览
上島
/
soar
与 Fork 源项目一致
Fork自
Xiaomi / soar
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
soar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
cc2d6641
编写于
2月 20, 2019
作者:
W
wenzhi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Bats Test SQL Rewrite
上级
d22add80
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
164 addition
and
14 deletion
+164
-14
test/env.bats
test/env.bats
+0
-6
test/main.bats
test/main.bats
+8
-8
test/query.bats
test/query.bats
+156
-0
未找到文件。
test/env.bats
浏览文件 @
cc2d6641
...
...
@@ -5,18 +5,12 @@ load test_helper
@test "Simple Query Optimizer" {
${SOAR_BIN_ENV} -query "select * from film where length > 120" | grep -v "散粒度" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
echo "$output"
[ $status -eq 0 ]
}
@test "Run all test cases" {
${SOAR_BIN} -list-test-sqls | ${SOAR_BIN_ENV} | grep -v "散粒度" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
echo "$output"
[ $status -eq 0 ]
}
@test "Check dial timeout" {
run timeout 1 ${SOAR_BIN} -test-dsn "1.1.1.1" -check-config
[ $status -eq 124 ]
}
test/main.bats
浏览文件 @
cc2d6641
...
...
@@ -29,7 +29,7 @@ load test_helper
}
# 5. soar 使用 config 配置文件路径是否正确
# 13.
soar -check-config 数据库连接配置检查 *
# 13.
soar -check-config 数据库连接配置检查 *
# soar 数据库测试(线上、线下、-allow-online-as-test)
@test "Check config cases" {
run ${SOAR_BIN_ENV} -check-config
...
...
@@ -61,7 +61,7 @@ load test_helper
echo "${output}"
[ $status -eq 0 ]
}
# 10.
report 为 json 格式是否正常
# 10.
report 为 json 格式是否正常
@test "Check soar report for json" {
${SOAR_BIN} -query "select * from film" \
-report-type json > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
...
...
@@ -70,7 +70,7 @@ load test_helper
[ $status -eq 0 ]
}
# 10.
report 为 markdown 格式是否正常
# 10.
report 为 markdown 格式是否正常
@test "Check soar report for markdown" {
${SOAR_BIN} -query "select * from film" \
-report-type markdown > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
...
...
@@ -89,7 +89,7 @@ load test_helper
[ $status -eq 0 ]
}
# 12.
黑名单功能是否正常
# 12.
黑名单功能是否正常
# soar 的日志和黑名单的相对路径都相对于 soar 的二进制文件路径说的
@test "Check soar blacklist" {
run ${SOAR_BIN} -blacklist ../etc/soar.blacklist -query "show processlist;"
...
...
@@ -97,17 +97,17 @@ load test_helper
[ -z ${output} ]
}
# 13.
soar -check-config 数据库连接配置检查 *
# 13.
soar -check-config 数据库连接配置检查 *
# 参见 5
# 14.
soar -help 检查
# 14.
soar -help 检查
@test "Check soar help" {
run ${SOAR_BIN} -help
[ $status -eq 2 ]
[ "${#lines[@]}" -gt 30 ]
}
# 15.
soar 数据库测试(线上、线下、-allow-online-as-test)
# 15.
soar 数据库测试(线上、线下、-allow-online-as-test)
# 参见 5
# 16. 语法检查(正确)
...
...
@@ -123,7 +123,7 @@ load test_helper
[ -n $ouput ]
}
# 17.
dsn 检查
# 17.
dsn 检查
@test "Check soar test dsn root:passwd@host:port/db" {
run ${SOAR_BIN} -online-dsn="root:pase@D@192.168.12.11:3306/testDB" -print-config
[ $(expr "$output" : ".*user: root") -ne 0 ]
...
...
test/query.bats
浏览文件 @
cc2d6641
...
...
@@ -7,6 +7,7 @@ load test_helper
[ $status -eq 0 ]
}
#
@test "Check get tables from SQL" {
${SOAR_BIN} -list-test-sqls | ${SOAR_BIN} -report-type tables > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
${SOAR_BIN} -list-test-sqls | ${SOAR_BIN} -report-type tables -test-dsn "/sakila" >> ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
...
...
@@ -15,3 +16,158 @@ load test_helper
[ $status -eq 0 ]
}
# SQL 语法检查
# 1. soar SQL 分隔符是否正常 (-delimiter)
@test "Check Soar Delimiter" {
${SOAR_BIN} -delimiter "@" -query "select b from c @ select a from b" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 2. max-column-count (ddl 中才会有提示)
@test "Check Soar Max Column Count" {
${SOAR_BIN} -query "create table a (a int,b int,c int,d int)" --max-column-count 3 > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# SQL 指纹检查
# 1. 检测各种类型的 SQL 语句,以及多条 SQL 语句的情况下,指纹是否正确
@test "Check Soar SQL Fingerprint" {
${SOAR_BIN} -list-test-sqls | ${SOAR_BIN} -report-type "fingerprint" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 1. 检测各种类型的 SQL 语句,以及多条SQL语句的情况下,压缩是否正确
# 1. 检测各种类型的 SQL 语句,以及多条SQL语句的情况下,美化是否正确
@test "Check Soar SQL pretty And Compress " {
${SOAR_BIN} -list-test-sqls |${SOAR_BIN} -report-type "pretty"| ${SOAR_BIN} -report-type "compress" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# SQL 改写检查
# 1. 检查 SQL 改写 dml2select
@test "Check Soar SQL Rewrite Dml2select " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "dml2select" \
-query "DELETE FROM film WHERE length > 100" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 2. 检查 SQL 改写 Star2columns
@test "Check Soar SQL Rewrite Star2columns " {
${SOAR_BIN_ENV} -report-type "rewrite" -rewrite-rules "star2columns" \
-query "select * from film where length > 120" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 4. 检查 SQL 改写 Having
@test "Check Soar SQL Rewrite Having " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "having" \
-query "SELECT state, COUNT(*) FROM Drivers GROUP BY state HAVING state IN ('GA', 'TX') ORDER BY state" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 5. 检查 SQL 改写 orderbynull
@test "Check Soar SQL Rewrite Orderbynull " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "orderbynull" \
-query "SELECT sum(col1) FROM tbl GROUP BY col" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 6. 检查 SQL 改写 unionall
@test "Check Soar SQL Rewrite Unionall " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "unionall" \
-query "select country_id from city union select country_id from country" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 7. 检查 SQL 改写 or2in
@test "Check Soar SQL Rewrite Or2in " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "or2in" \
-query "select country_id from city where col1 = 1 or (col2 = 1 or col2 = 2 ) or col1 = 3;" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 7. 检查 SQL 改写 dmlorderby
@test "Check Soar SQL Rewrite Dmlorderby " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "dmlorderby" \
-query "DELETE FROM tbl WHERE col1=1 ORDER BY col" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 8. 检查 SQL 改写 distinctstar
@test "Check Soar SQL Rewrite Distinctstar " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "distinctstar" \
-query "SELECT DISTINCT * FROM film;" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 9. 检查 SQL 改写 standard
@test "Check Soar SQL Rewrite Standard " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "standard" \
-query "SELECT sum(col1) FROM tbl GROUP BY 1;" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 10. 检查 SQL 改写 mergealter
@test "Check Soar SQL Rewrite Mergealter " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "mergealter" \
-query "ALTER TABLE t2 DROP COLUMN c;ALTER TABLE t2 DROP COLUMN d;" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 11. 检查 SQL 改写 alwaystrue
@test "Check Soar SQL Rewrite Alwaystrue " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "alwaystrue" \
-query "SELECT count(col) FROM tbl where 'a'= 'a' or ('b' = 'b' and a = 'b');" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 12. 检查 SQL 改写 countstar
@test "Check Soar SQL Rewrite Countstar " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "countstar" \
-query "SELECT count(col) FROM tbl GROUP BY 1;" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 16. 检查 SQL 改写 truncate
@test "Check Soar SQL Rewrite Truncate " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "truncate" \
-query "DELETE FROM tbl" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 17. 检查 SQL 改写 rmparenthesis
@test "Check Soar SQL Rewrite Rmparenthesis " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "rmparenthesis" \
-query "select col from a where (col = 1)" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
# 18. 检查 SQL 改写 delimiter
@test "Check Soar SQL Rewrite Delimiter " {
${SOAR_BIN} -report-type "rewrite" -rewrite-rules "delimiter" \
-query "use sakila" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden
run golden_diff
[ $status -eq 0 ]
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录