提交 cc2d6641 编写于 作者: W wenzhi

Bats Test SQL Rewrite

上级 d22add80
......@@ -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 ]
}
......@@ -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 ]
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册