From fe9fd349d7f07fabdf315d1b9b0d07525729b005 Mon Sep 17 00:00:00 2001 From: xiyangxixian <2554758802@qq.com> Date: Tue, 8 Jan 2019 20:07:56 +0800 Subject: [PATCH] update bats test by Becivells --- test/env.bats | 17 +++ .../test_Run_default_printconfig_cases.golden | 125 ++++++++++++++++++ test/main.bats | 45 +++++-- test/other.bats | 4 + test/query.bats | 8 ++ 5 files changed, 191 insertions(+), 8 deletions(-) create mode 100644 test/env.bats create mode 100644 test/fixture/test_Run_default_printconfig_cases.golden mode change 100755 => 100644 test/main.bats create mode 100644 test/other.bats create mode 100644 test/query.bats diff --git a/test/env.bats b/test/env.bats new file mode 100644 index 0000000..7c7e9fd --- /dev/null +++ b/test/env.bats @@ -0,0 +1,17 @@ +#!/usr/bin/env bats + +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 ${BATS_TEST_NAME} + [ $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 ${BATS_TEST_NAME} + [ $status -eq 0 ] +} diff --git a/test/fixture/test_Run_default_printconfig_cases.golden b/test/fixture/test_Run_default_printconfig_cases.golden new file mode 100644 index 0000000..526c475 --- /dev/null +++ b/test/fixture/test_Run_default_printconfig_cases.golden @@ -0,0 +1,125 @@ +online-dsn: + user: "" + password: '********' + net: tcp + addr: 127.0.0.1:3306 + schema: information_schema + charset: utf8 + collation: utf8_general_ci + loc: UTC + tls: "" + server-public-key: "" + maxallowedpacket: 4194304 + params: + charset: utf8 + timeout: 0 + read-timeout: 0 + write-timeout: 0 + allow-native-passwords: true + allow-old-passwords: false + disable: false +test-dsn: + user: "" + password: '********' + net: tcp + addr: 127.0.0.1:3306 + schema: information_schema + charset: utf8 + collation: utf8_general_ci + loc: UTC + tls: "" + server-public-key: "" + maxallowedpacket: 4194304 + params: + charset: utf8 + timeout: 0 + read-timeout: 0 + write-timeout: 0 + allow-native-passwords: true + allow-old-passwords: false + disable: false +allow-online-as-test: false +drop-test-temporary: true +cleanup-test-database: false +only-syntax-check: false +sampling-statistic-target: 100 +sampling: false +sampling-condition: "" +profiling: false +trace: false +explain: true +delimiter: ; +log-level: 3 +log-output: /tmp/soar.log +report-type: markdown +report-css: "" +report-javascript: "" +report-title: SQL优化分析报告 +markdown-extensions: 94 +markdown-html-flags: 0 +ignore-rules: +- COL.011 +rewrite-rules: +- delimiter +- orderbynull +- groupbyconst +- dmlorderby +- having +- star2columns +- insertcolumns +- distinctstar +blacklist: "" +max-join-table-count: 5 +max-group-by-cols-count: 5 +max-distinct-count: 5 +max-index-cols-count: 5 +max-text-cols-count: 2 +max-total-rows: 9999999 +max-query-cost: 9999 +spaghetti-query-length: 2048 +allow-drop-index: false +max-in-count: 10 +max-index-bytes-percolumn: 767 +max-index-bytes: 3072 +allow-charsets: +- utf8 +- utf8mb4 +allow-collates: [] +allow-engines: +- innodb +max-index-count: 10 +max-column-count: 40 +max-value-count: 100 +index-prefix: idx_ +unique-key-prefix: uk_ +max-subquery-depth: 5 +max-varchar-length: 1024 +column-not-allow-type: +- boolean +min-cardinality: 0 +explain-sql-report-type: pretty +explain-type: extended +explain-format: traditional +explain-warn-select-type: +- "" +explain-warn-access-type: +- ALL +explain-max-keys: 3 +explain-min-keys: 0 +explain-max-rows: 10000 +explain-warn-extra: +- Using temporary +- Using filesort +explain-max-filtered: 100 +explain-warn-scalability: +- O(n) +show-warnings: false +show-last-query-cost: false +query: "" +list-heuristic-rules: false +list-rewrite-rules: false +list-test-sqls: false +list-report-types: false +verbose: false +dry-run: true +max-pretty-sql-length: 1024 diff --git a/test/main.bats b/test/main.bats old mode 100755 new mode 100644 index ac67bb0..e7e8535 --- a/test/main.bats +++ b/test/main.bats @@ -2,19 +2,48 @@ 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 ${BATS_TEST_NAME} - [ $status -eq 0 ] +@test "Test soar version" { + run ${SOAR_BIN} -version + [ "$status" -eq 0 ] + [ "${lines[0]%% *}" == "Version:" ] + [ "${lines[1]%% *}" == "Branch:" ] + [ "${lines[2]%% *}" == "Compile:" ] + echo $output|grep "Compile: $(date +'%Y-%m-%d')" # 检查版本是否为当天编译的 } -@test "Syntax Check" { - run ${SOAR_BIN} -query "select * frm film" -only-syntax-check +@test "No arguments prints message" { + run ${SOAR_BIN} [ $status -eq 1 ] + [ "${lines[0]}" == 'Args format error, use --help see how to use it!' ] } -@test "Run all test cases" { - ${SOAR_BIN} -list-test-sqls | ${SOAR_BIN_ENV} | grep -v "散粒度" > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden +@test "Run default printconfig cases" { + ${SOAR_BIN} -print-config -log-output=/tmp/soar.log > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden run golden_diff ${BATS_TEST_NAME} [ $status -eq 0 ] } + + +@test "Check config cases" { + run ${SOAR_BIN_ENV} -check-config + [ $status -eq 0 ] + [ -z ${output} ] +} + +@test "Syntax Check OK" { + run ${SOAR_BIN} -query "select * from film" -only-syntax-check + [ $status -eq 0 ] + [ -z $ouput ] +} + +@test "Syntax Check Error" { + run ${SOAR_BIN} -query "select * frm film" -only-syntax-check + [ $status -eq 1 ] + [ -n $ouput ] +} + + + + + + diff --git a/test/other.bats b/test/other.bats new file mode 100644 index 0000000..deb2c7d --- /dev/null +++ b/test/other.bats @@ -0,0 +1,4 @@ +#!/usr/bin/env bats + +load test_helper + diff --git a/test/query.bats b/test/query.bats new file mode 100644 index 0000000..19322ac --- /dev/null +++ b/test/query.bats @@ -0,0 +1,8 @@ +#!/usr/bin/env bats + +load test_helper + +@test "Simple Query Optimizer" { + run ${SOAR_BIN} -query "select * from film where length > 120" + [ $status -eq 0 ] +} -- GitLab