From ac82e6329448bc15cdc573490a9bf7541dde845d Mon Sep 17 00:00:00 2001 From: Leon Zhang Date: Wed, 23 Jan 2019 14:01:41 +0800 Subject: [PATCH] add test case for -report-type tables --- ast/testdata/TestSchemaMetaInfo.golden | 24 +- ast/tidb_test.go | 8 +- cmd/soar/soar_test.go | 2 +- common/tricks.go | 1 + ...write_-2drewrite-2drules_mergealter.golden | 79 +++ .../test_Check_get_tables_from_SQL.golden | 540 ++++++++++++++++++ test/main.bats | 29 +- test/query.bats | 11 +- 8 files changed, 676 insertions(+), 18 deletions(-) create mode 100644 test/fixture/test_Check_-2dreport-2dtype_rewrite_-2drewrite-2drules_mergealter.golden create mode 100644 test/fixture/test_Check_get_tables_from_SQL.golden diff --git a/ast/testdata/TestSchemaMetaInfo.golden b/ast/testdata/TestSchemaMetaInfo.golden index 408f5e4..7b6e6cd 100644 --- a/ast/testdata/TestSchemaMetaInfo.golden +++ b/ast/testdata/TestSchemaMetaInfo.golden @@ -1,3 +1,11 @@ +use world_x; +[`world_x`.`dual`] +select 1; +[] +syntax error case +[] +select * from ta join tb using (id) +[`sakila`.`ta` `sakila`.`tb`] SELECT * FROM film WHERE length = 86; [`sakila`.`film`] SELECT * FROM film WHERE length IS NULL; @@ -71,7 +79,7 @@ SELECT * FROM film WHERE length > 100 and title = 'xyz' ORDER BY release_year; SELECT * FROM film WHERE length > 100 ORDER BY release_year; [`sakila`.`film`] SELECT * FROM city a INNER JOIN country b ON a.country_id=b.country_id; -[`sakila`.`country` `sakila`.`city`] +[`sakila`.`city` `sakila`.`country`] SELECT * FROM city a LEFT JOIN country b ON a.country_id=b.country_id; [`sakila`.`city` `sakila`.`country`] SELECT * FROM city a RIGHT JOIN country b ON a.country_id=b.country_id; @@ -79,17 +87,17 @@ SELECT * FROM city a RIGHT JOIN country b ON a.country_id=b.country_id; SELECT * FROM city a LEFT JOIN country b ON a.country_id=b.country_id WHERE b.last_update IS NULL; [`sakila`.`city` `sakila`.`country`] SELECT * FROM city a RIGHT JOIN country b ON a.country_id=b.country_id WHERE a.last_update IS NULL; -[`sakila`.`country` `sakila`.`city`] +[`sakila`.`city` `sakila`.`country`] SELECT * FROM city a LEFT JOIN country b ON a.country_id=b.country_id UNION SELECT * FROM city a RIGHT JOIN country b ON a.country_id=b.country_id; -[`sakila`.`country` `sakila`.`city`] +[`sakila`.`city` `sakila`.`country`] SELECT * FROM city a RIGHT JOIN country b ON a.country_id=b.country_id WHERE a.last_update IS NULL UNION SELECT * FROM city a LEFT JOIN country b ON a.country_id=b.country_id WHERE b.last_update IS NULL; [`sakila`.`city` `sakila`.`country`] SELECT country_id, last_update FROM city NATURAL JOIN country; -[`sakila`.`country` `sakila`.`city`] +[`sakila`.`city` `sakila`.`country`] SELECT country_id, last_update FROM city NATURAL LEFT JOIN country; [`sakila`.`city` `sakila`.`country`] SELECT country_id, last_update FROM city NATURAL RIGHT JOIN country; -[`sakila`.`country` `sakila`.`city`] +[`sakila`.`city` `sakila`.`country`] SELECT a.country_id, a.last_update FROM city a STRAIGHT_JOIN country b ON a.country_id=b.country_id; [`sakila`.`city` `sakila`.`country`] SELECT a.address, a.postal_code FROM sakila.address a WHERE a.city_id IN (SELECT c.city_id FROM sakila.city c); @@ -97,7 +105,7 @@ SELECT a.address, a.postal_code FROM sakila.address a WHERE a.city_id IN (SELEC SELECT city FROM( SELECT city_id FROM city WHERE city = "A Corua (La Corua)" ORDER BY last_update DESC LIMIT 50, 10) I JOIN city ON (I.city_id = city.city_id) JOIN country ON (country.country_id = city.country_id) ORDER BY city DESC; [`sakila`.`city` `sakila`.`country`] DELETE city, country FROM city INNER JOIN country using (country_id) WHERE city.city_id = 1; -[`sakila`.`country` `sakila`.`city`] +[`sakila`.`city` `sakila`.`country`] DELETE city FROM city LEFT JOIN country ON city.country_id = country.country_id WHERE country.country IS NULL; [`sakila`.`city` `sakila`.`country`] DELETE a1, a2 FROM city AS a1 INNER JOIN country AS a2 WHERE a1.country_id=a2.country_id; @@ -107,7 +115,7 @@ DELETE FROM a1, a2 USING city AS a1 INNER JOIN country AS a2 WHERE a1.country_id DELETE FROM film WHERE length > 100; [`sakila`.`film`] UPDATE city INNER JOIN country USING(country_id) SET city.city = 'Abha', city.last_update = '2006-02-15 04:45:25', country.country = 'Afghanistan' WHERE city.city_id=10; -[`sakila`.`country` `sakila`.`city`] +[`sakila`.`city` `sakila`.`country`] UPDATE city INNER JOIN country ON city.country_id = country.country_id INNER JOIN address ON city.city_id = address.city_id SET city.city = 'Abha', city.last_update = '2006-02-15 04:45:25', country.country = 'Afghanistan' WHERE city.city_id=10; [`sakila`.`address`] UPDATE city, country SET city.city = 'Abha', city.last_update = '2006-02-15 04:45:25', country.country = 'Afghanistan' WHERE city.country_id = country.country_id AND city.city_id=10; @@ -143,7 +151,7 @@ SELECT * FROM city i left JOIN country o ON i.city_id=o.country_id union SELECT SELECT * FROM city i left JOIN country o ON i.city_id=o.country_id WHERE o.country_id is null union SELECT * FROM city i right JOIN country o ON i.city_id=o.country_id WHERE i.city_id is null; [`sakila`.`city` `sakila`.`country`] SELECT first_name,last_name,email FROM customer STRAIGHT_JOIN address ON customer.address_id=address.address_id; -[`sakila`.`customer` `sakila`.`address`] +[`sakila`.`address` `sakila`.`customer`] SELECT ID,name FROM (SELECT address FROM customer_list WHERE SID=1 order by phone limit 50,10) a JOIN customer_list l ON (a.address=l.address) JOIN city c ON (c.city=l.city) order by phone desc; [`sakila`.`city` `sakila`.`customer_list`] SELECT * FROM film WHERE date(last_update)='2006-02-15'; diff --git a/ast/tidb_test.go b/ast/tidb_test.go index 27efa00..93a5b25 100644 --- a/ast/tidb_test.go +++ b/ast/tidb_test.go @@ -59,8 +59,14 @@ func TestStmtNode2JSON(t *testing.T) { func TestSchemaMetaInfo(t *testing.T) { common.Log.Debug("Entering function: %s", common.GetFunctionName()) + sqls := []string{ + "use world_x;", + "select 1;", + "syntax error case", + "select * from ta join tb using (id)", + } err := common.GoldenDiff(func() { - for _, sql := range common.TestSQLs { + for _, sql := range append(sqls, common.TestSQLs...) { fmt.Println(sql) fmt.Println(SchemaMetaInfo(sql, "sakila")) } diff --git a/cmd/soar/soar_test.go b/cmd/soar/soar_test.go index 69066bc..9fbae11 100644 --- a/cmd/soar/soar_test.go +++ b/cmd/soar/soar_test.go @@ -63,7 +63,7 @@ func Test_Main_More(_ *testing.T) { orgRerportType := common.Config.ReportType for _, typ := range []string{ "json", "html", "markdown", "fingerprint", "compress", "pretty", "rewrite", - "ast", "tiast", "ast-json", "tiast-json", "tokenize", "lint", + "ast", "tiast", "ast-json", "tiast-json", "tokenize", "lint", "tables", } { common.Config.ReportType = typ main() diff --git a/common/tricks.go b/common/tricks.go index 943751b..9a76b85 100644 --- a/common/tricks.go +++ b/common/tricks.go @@ -152,5 +152,6 @@ func RemoveDuplicatesItem(duplicate []string) []string { for item := range m { unique = append(unique, item) } + sort.Strings(unique) return unique } diff --git a/test/fixture/test_Check_-2dreport-2dtype_rewrite_-2drewrite-2drules_mergealter.golden b/test/fixture/test_Check_-2dreport-2dtype_rewrite_-2drewrite-2drules_mergealter.golden new file mode 100644 index 0000000..702c682 --- /dev/null +++ b/test/fixture/test_Check_-2dreport-2dtype_rewrite_-2drewrite-2drules_mergealter.golden @@ -0,0 +1,79 @@ +ALTER TABLE `address` add index idx_city_id(city_id) ; +ALTER TABLE `inventory` add index `idx_store_film` (`store_id`,`film_id`), add index `idx_store_film` (`store_id`,`film_id`),add index `idx_store_film` (`store_id`,`film_id`),add index `idx_store_film` (`store_id`,`film_id`) ; +ALTER TABLE `tb` alter column id drop default ; +DELETE a1, a2 FROM city AS a1 INNER JOIN country AS a2 WHERE a1.country_id=a2.country_id +DELETE city, country FROM city INNER JOIN country using (country_id) WHERE city.city_id = 1 +DELETE city FROM city LEFT JOIN country ON city.country_id = country.country_id WHERE country.country IS NULL +DELETE FROM a1, a2 USING city AS a1 INNER JOIN country AS a2 WHERE a1.country_id=a2.country_id +DELETE FROM film WHERE length > 100 +INSERT INTO city (country_id) SELECT 10 FROM DUAL +INSERT INTO city (country_id) SELECT country_id FROM country +INSERT INTO city (country_id) VALUES (1),(2),(3) +REPLACE INTO city (country_id) SELECT 10 FROM DUAL +REPLACE INTO city (country_id) SELECT country_id FROM country +REPLACE INTO city (country_id) VALUES (1),(2),(3) +SELECT a.address, a.postal_code FROM sakila.address a WHERE a.city_id IN (SELECT c.city_id FROM sakila.city c) +SELECT a.country_id, a.last_update FROM city a STRAIGHT_JOIN country b ON a.country_id=b.country_id +SELECT city FROM( SELECT city_id FROM city WHERE city = "A Corua (La Corua)" ORDER BY last_update DESC LIMIT 50, 10) I JOIN city ON (I.city_id = city.city_id) JOIN country ON (country.country_id = city.country_id) ORDER BY city DESC +SELECT country_id, last_update FROM city NATURAL JOIN country +SELECT country_id, last_update FROM city NATURAL LEFT JOIN country +SELECT country_id, last_update FROM city NATURAL RIGHT JOIN country +SELECT DATE_FORMAT(t.last_update, '%Y-%m-%d'), COUNT(DISTINCT (t.city)) FROM city t WHERE t.last_update > '2018-10-22 00:00:00' AND t.city LIKE '%Chrome%' AND t.city = 'eip' GROUP BY DATE_FORMAT(t.last_update, '%Y-%m-%d') ORDER BY DATE_FORMAT(t.last_update, '%Y-%m-%d') +SELECT description FROM film WHERE description IN('NEWS','asd') GROUP BY description +SELECT film_id FROM film ORDER BY release_year LIMIT 10 +SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM ( SELECT film_id FROM film ) film ) film ) film ) film ) film ) film ) film ) film ) film ) film ) film ) film ) film ) film ) film ) film +SELECT first_name,last_name,email FROM customer STRAIGHT_JOIN address ON customer.address_id=address.address_id +SELECT * FROM address GROUP BY address,district +SELECT * FROM city a INNER JOIN country b ON a.country_id=b.country_id +SELECT * FROM city a LEFT JOIN country b ON a.country_id=b.country_id +SELECT * FROM city a LEFT JOIN country b ON a.country_id=b.country_id UNION SELECT * FROM city a RIGHT JOIN country b ON a.country_id=b.country_id +SELECT * FROM city a LEFT JOIN country b ON a.country_id=b.country_id WHERE b.last_update IS NULL +SELECT * FROM city a RIGHT JOIN country b ON a.country_id=b.country_id +SELECT * FROM city a RIGHT JOIN country b ON a.country_id=b.country_id WHERE a.last_update IS NULL +SELECT * FROM city a RIGHT JOIN country b ON a.country_id=b.country_id WHERE a.last_update IS NULL UNION SELECT * FROM city a LEFT JOIN country b ON a.country_id=b.country_id WHERE b.last_update IS NULL +SELECT * FROM city i left JOIN country o ON i.city_id=o.country_id union SELECT * FROM city i right JOIN country o ON i.city_id=o.country_id +SELECT * FROM city i left JOIN country o ON i.city_id=o.country_id WHERE o.country_id is null union SELECT * FROM city i right JOIN country o ON i.city_id=o.country_id WHERE i.city_id is null +SELECT * FROM customer WHERE address_id in (224,510) ORDER BY last_name +SELECT * FROM film HAVING title = 'abc' +SELECT * FROM film ORDER BY release_year LIMIT 10 +SELECT * FROM film WHERE date(last_update)='2006-02-15' +SELECT * FROM film WHERE language_id = (SELECT language_id FROM language LIMIT 1) +SELECT * FROM film WHERE length > 100 and language_id < 10 +SELECT * FROM film WHERE length > 100 and language_id < 10 and title = 'xyz' +SELECT * FROM film WHERE length > 100 and title = 'ALABAMA DEVIL' +SELECT * FROM film WHERE length = 100 and title = 'xyz' ORDER BY release_year +SELECT * FROM film WHERE length > 100 and title = 'xyz' ORDER BY release_year +SELECT * FROM film WHERE length < 100 ORDER BY length LIMIT 10 +SELECT * FROM film WHERE length > 100 ORDER BY length LIMIT 10 +SELECT * FROM film WHERE length > 100 ORDER BY release_year +SELECT * FROM film WHERE length = 114 and title = 'ALABAMA DEVIL' +SELECT * FROM film WHERE length = 123 ORDER BY release_year ASC, language_id DESC +SELECT * FROM film WHERE length = 123 ORDER BY release_year LIMIT 10 +SELECT * FROM film WHERE length = 86 +SELECT * FROM film WHERE length BETWEEN 60 AND 84 +SELECT * FROM film WHERE length IS NULL +SELECT * FROM film WHERE release_year = 2016 AND length != 1 ORDER BY title +SELECT * FROM film WHERE title IS NOT NULL +SELECT * FROM film WHERE title LIKE 'AIR%' +SELECT * FROM sakila.film WHERE length >= 60 +SELECT * FROM (SELECT * FROM actor WHERE last_update='2006-02-15 04:34:33' and last_name='CHASE') t WHERE last_update='2006-02-15 04:34:33' and last_name='CHASE' GROUP BY first_name +select * from tb where data >= '' +SELECT ID,name FROM (SELECT address FROM customer_list WHERE SID=1 order by phone limit 50,10) a JOIN customer_list l ON (a.address=l.address) JOIN city c ON (c.city=l.city) order by phone desc +SELECT language_id FROM film WHERE length = 123 GROUP BY release_year ORDER BY language_id +SELECT last_update FROM film GROUP BY date(last_update) +SELECT last_update FROM film order by date(last_update) +SELECT release_year FROM film WHERE length = 123 GROUP BY release_year ORDER BY release_year +SELECT release_year FROM film WHERE length = 123 GROUP BY release_year ORDER BY release_year LIMIT 10 +SELECT release_year, language_id, sum(length) FROM film GROUP BY release_year, language_id +SELECT release_year, sum(film_id) FROM film GROUP BY release_year +SELECT release_year, sum(length) FROM film WHERE length = 123 AND language_id = 1 GROUP BY release_year +SELECT release_year, sum(length) FROM film WHERE length >= 123 GROUP BY release_year +SELECT release_year, sum(length) FROM film WHERE length = 123 GROUP BY release_year,(length+language_id) +SELECT title FROM film WHERE ABS(language_id) = 3 GROUP BY title +SELECT title FROM film WHERE language_id > 5 AND length > 70 +SELECT title FROM film WHERE release_year = 1995 +SELECT title, replacement_cost FROM film WHERE language_id = 5 AND length = 70 +UPDATE city, country SET city.city = 'Abha', city.last_update = '2006-02-15 04:45:25', country.country = 'Afghanistan' WHERE city.country_id = country.country_id AND city.city_id=10 +UPDATE city INNER JOIN country ON city.country_id = country.country_id INNER JOIN address ON city.city_id = address.city_id SET city.city = 'Abha', city.last_update = '2006-02-15 04:45:25', country.country = 'Afghanistan' WHERE city.city_id=10 +UPDATE city INNER JOIN country USING(country_id) SET city.city = 'Abha', city.last_update = '2006-02-15 04:45:25', country.country = 'Afghanistan' WHERE city.city_id=10 +UPDATE film SET length = 10 WHERE language_id = 20 diff --git a/test/fixture/test_Check_get_tables_from_SQL.golden b/test/fixture/test_Check_get_tables_from_SQL.golden new file mode 100644 index 0000000..98be1f6 --- /dev/null +++ b/test/fixture/test_Check_get_tables_from_SQL.golden @@ -0,0 +1,540 @@ +{ + "084DA3E3EE38DD85": [ + "`unknown`.tb`" + ], + "08CFE41C7D20AAC8": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "0BE2D79E2F1E7CB0": [ + "`unknown`.`film`" + ], + "0D0DABACEDFF5765": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "105C870D5DFB6710": [ + "`unknown`.`film`" + ], + "11EC7AAACC97DC0F": [ + "`unknown`.`city`" + ], + "12FF1DAA3D425FA9": [ + "`unknown`.`film`" + ], + "16C2B14E7DAA9906": [ + "`unknown`.`film`", + "`unknown`.`language`" + ], + "16CB4628D2597D40": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "17D5BCF21DC2364C": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "18A2AD1395A58EAE": [ + "`unknown`.`film`" + ], + "1A53649C43122975": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "1E2CF4145EE706A5": [ + "`unknown`.`film`" + ], + "1E56C6CCEA2131CC": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "1E8B70E30062FD13": [ + "`unknown`.`address`", + "`unknown`.`customer`" + ], + "1ED2B7ECBA4215E1": [ + "`unknown`.`film`" + ], + "23D176AEA2947002": [ + "`unknown`.`film`" + ], + "255BAC03F56CDBC7": [ + "`unknown`.address`" + ], + "291F95B7DCB74C21": [ + "`unknown`.`tb`" + ], + "2BA1217F6C8CF0AB": [ + "`unknown`.`address`" + ], + "2EAACFD7030EA528": [ + "`unknown`.`film`" + ], + "2F7439623B712317": [ + "`unknown`.`city`" + ], + "3656B13CC4F888E2": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "3FF20E28EC9CBEF9": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "466F1AC2F5851149": [ + "`unknown`.`city`" + ], + "47044E1FE1A965A5": [ + "`unknown`.`film`" + ], + "485D56FC88BBBDB9": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "4E73AA068370E6A8": [ + "`unknown`.`film`" + ], + "4ECCA9568BE69E68": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "50F2AB4243CE2071": [ + "`sakila`.`address`", + "`sakila`.`city`" + ], + "584CCEC8069B6947": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "5C547F08EADBB131": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "5CE2F187DBF2A710": [ + "`unknown`.`film`" + ], + "60F234BA33AAC132": [ + "`unknown`.`film`" + ], + "626571EAE84E2C8A": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "68E48001ECD53152": [ + "`unknown`.`film`" + ], + "6A0F035BD4E01018": [ + "`unknown`.`film`" + ], + "6E9B96CA3F0E6BDA": [ + "`unknown`.`film`" + ], + "707FE669669FA075": [ + "`unknown`.`film`" + ], + "73DDF6E6D9E40384": [ + "`unknown`.`film`" + ], + "7598A4EDE6CFA6BE": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "7F02E23D44A38A6D": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "863A85207E4F410D": [ + "`unknown`.`film`" + ], + "868317D1973FD1B0": [ + "`unknown`.`film`" + ], + "8A106444D14B9880": [ + "`unknown`.`film`" + ], + "965D5AC955824512": [ + "`unknown`.`film`" + ], + "9BB74D074BA0727C": [ + "`unknown`.inventory`" + ], + "A0C5E62C724A121A": [ + "`sakila`.`film`" + ], + "A314542EEE8571EE": [ + "`unknown`.`customer`" + ], + "A3FAB6027484B88B": [ + "`unknown`.`film`" + ], + "A4911095C201896F": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "A7973BDD268F926E": [ + "`unknown`.`city`" + ], + "AF0C1EB58B23D2FA": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "AFEEBF10A8D74E32": [ + "`unknown`.`film`" + ], + "B0BA5A7079EA16B3": [ + "`unknown`.`film`" + ], + "B13E0ACEAF8F3119": [ + "`unknown`.`film`" + ], + "B3C502B4AA344196": [ + "`unknown`.`film`" + ], + "B862978586C6338B": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "B9336971FF3D3792": [ + "`unknown`.`film`" + ], + "BA7111449E4F1122": [ + "`unknown`.`film`" + ], + "C11ECE7AE5F80CE5": [ + "`hello`.`t`" + ], + "C15BDF2C73B5B7ED": [ + "`unknown`.`address`" + ], + "C315BC4EE0F4E523": [ + "`unknown`.inventory`" + ], + "C3FAEDA6AD6D762B": [ + "`unknown`.`film`" + ], + "C4A212A42400411D": [ + "`unknown`.`film`" + ], + "C95B5C028C8FFF95": [ + "`unknown`.`city`" + ], + "CB42080E9F35AB07": [ + "`unknown`.`film`" + ], + "DF59FD602E4AA368": [ + "`unknown`.`film`" + ], + "DF916439ABD07664": [ + "`unknown`.`film`" + ], + "E3DDA1A929236E72": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "E48A20D0413512DA": [ + "`unknown`.`city`", + "`unknown`.`customer_list`" + ], + "E75234155B5E2E14": [ + "`unknown`.`film`" + ], + "E84CBAAC2E12BDEA": [ + "`unknown`.`film`" + ], + "E969B9297DA79BA6": [ + "`unknown`.`film`" + ], + "EA50643B01E139A8": [ + "`unknown`.`actor`" + ], + "F16FD63381EF8299": [ + "`unknown`.`film`" + ], + "F5D30BCAC1E206A1": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "F6DBEAA606D800FC": [ + "`unknown`.`film`" + ], + "F8314ABD1CBF2FF1": [ + "`unknown`.`city`", + "`unknown`.`country`" + ], + "FCD1ABF36F8CDAD7": [ + "`unknown`.`country`" + ], + "FE409EB794EE91CF": [ + "`unknown`.`film`" + ] +} +{ + "084DA3E3EE38DD85": [ + "`sakila`.tb`" + ], + "08CFE41C7D20AAC8": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "0BE2D79E2F1E7CB0": [ + "`sakila`.`film`" + ], + "0D0DABACEDFF5765": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "105C870D5DFB6710": [ + "`sakila`.`film`" + ], + "11EC7AAACC97DC0F": [ + "`sakila`.`city`" + ], + "12FF1DAA3D425FA9": [ + "`sakila`.`film`" + ], + "16C2B14E7DAA9906": [ + "`sakila`.`film`", + "`sakila`.`language`" + ], + "16CB4628D2597D40": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "17D5BCF21DC2364C": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "18A2AD1395A58EAE": [ + "`sakila`.`film`" + ], + "1A53649C43122975": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "1E2CF4145EE706A5": [ + "`sakila`.`film`" + ], + "1E56C6CCEA2131CC": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "1E8B70E30062FD13": [ + "`sakila`.`address`", + "`sakila`.`customer`" + ], + "1ED2B7ECBA4215E1": [ + "`sakila`.`film`" + ], + "23D176AEA2947002": [ + "`sakila`.`film`" + ], + "255BAC03F56CDBC7": [ + "`sakila`.address`" + ], + "291F95B7DCB74C21": [ + "`sakila`.`tb`" + ], + "2BA1217F6C8CF0AB": [ + "`sakila`.`address`" + ], + "2EAACFD7030EA528": [ + "`sakila`.`film`" + ], + "2F7439623B712317": [ + "`sakila`.`city`" + ], + "3656B13CC4F888E2": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "3FF20E28EC9CBEF9": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "466F1AC2F5851149": [ + "`sakila`.`city`" + ], + "47044E1FE1A965A5": [ + "`sakila`.`film`" + ], + "485D56FC88BBBDB9": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "4E73AA068370E6A8": [ + "`sakila`.`film`" + ], + "4ECCA9568BE69E68": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "50F2AB4243CE2071": [ + "`sakila`.`address`", + "`sakila`.`city`" + ], + "584CCEC8069B6947": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "5C547F08EADBB131": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "5CE2F187DBF2A710": [ + "`sakila`.`film`" + ], + "60F234BA33AAC132": [ + "`sakila`.`film`" + ], + "626571EAE84E2C8A": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "68E48001ECD53152": [ + "`sakila`.`film`" + ], + "6A0F035BD4E01018": [ + "`sakila`.`film`" + ], + "6E9B96CA3F0E6BDA": [ + "`sakila`.`film`" + ], + "707FE669669FA075": [ + "`sakila`.`film`" + ], + "73DDF6E6D9E40384": [ + "`sakila`.`film`" + ], + "7598A4EDE6CFA6BE": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "7F02E23D44A38A6D": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "863A85207E4F410D": [ + "`sakila`.`film`" + ], + "868317D1973FD1B0": [ + "`sakila`.`film`" + ], + "8A106444D14B9880": [ + "`sakila`.`film`" + ], + "965D5AC955824512": [ + "`sakila`.`film`" + ], + "9BB74D074BA0727C": [ + "`sakila`.inventory`" + ], + "A0C5E62C724A121A": [ + "`sakila`.`film`" + ], + "A314542EEE8571EE": [ + "`sakila`.`customer`" + ], + "A3FAB6027484B88B": [ + "`sakila`.`film`" + ], + "A4911095C201896F": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "A7973BDD268F926E": [ + "`sakila`.`city`" + ], + "AF0C1EB58B23D2FA": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "AFEEBF10A8D74E32": [ + "`sakila`.`film`" + ], + "B0BA5A7079EA16B3": [ + "`sakila`.`film`" + ], + "B13E0ACEAF8F3119": [ + "`sakila`.`film`" + ], + "B3C502B4AA344196": [ + "`sakila`.`film`" + ], + "B862978586C6338B": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "B9336971FF3D3792": [ + "`sakila`.`film`" + ], + "BA7111449E4F1122": [ + "`sakila`.`film`" + ], + "C11ECE7AE5F80CE5": [ + "`hello`.`t`" + ], + "C15BDF2C73B5B7ED": [ + "`sakila`.`address`" + ], + "C315BC4EE0F4E523": [ + "`sakila`.inventory`" + ], + "C3FAEDA6AD6D762B": [ + "`sakila`.`film`" + ], + "C4A212A42400411D": [ + "`sakila`.`film`" + ], + "C95B5C028C8FFF95": [ + "`sakila`.`city`" + ], + "CB42080E9F35AB07": [ + "`sakila`.`film`" + ], + "DF59FD602E4AA368": [ + "`sakila`.`film`" + ], + "DF916439ABD07664": [ + "`sakila`.`film`" + ], + "E3DDA1A929236E72": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "E48A20D0413512DA": [ + "`sakila`.`city`", + "`sakila`.`customer_list`" + ], + "E75234155B5E2E14": [ + "`sakila`.`film`" + ], + "E84CBAAC2E12BDEA": [ + "`sakila`.`film`" + ], + "E969B9297DA79BA6": [ + "`sakila`.`film`" + ], + "EA50643B01E139A8": [ + "`sakila`.`actor`" + ], + "F16FD63381EF8299": [ + "`sakila`.`film`" + ], + "F5D30BCAC1E206A1": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "F6DBEAA606D800FC": [ + "`sakila`.`film`" + ], + "F8314ABD1CBF2FF1": [ + "`sakila`.`city`", + "`sakila`.`country`" + ], + "FCD1ABF36F8CDAD7": [ + "`sakila`.`country`" + ], + "FE409EB794EE91CF": [ + "`sakila`.`film`" + ] +} diff --git a/test/main.bats b/test/main.bats index 503a43e..6ed2ac3 100644 --- a/test/main.bats +++ b/test/main.bats @@ -24,6 +24,7 @@ load test_helper @test "Run default printconfig cases" { ${SOAR_BIN} -print-config -log-output=/dev/null > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden run golden_diff + echo "${output}" [ $status -eq 0 ] } @@ -41,6 +42,7 @@ load test_helper @test "Check the default config of the changes" { ${SOAR_BIN} -config ${BATS_FIXTURE_DIRNAME}/${BATS_TEST_NAME}.golden -print-config -log-output=/dev/null > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden run golden_diff + echo "${output}" [ $status -eq 0 ] } @@ -48,6 +50,7 @@ load test_helper @test "Check soar query for input file" { ${SOAR_BIN} -query <(${SOAR_BIN} -list-test-sqls) > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden run golden_diff + echo "${output}" [ $status -eq 0 ] } @@ -55,6 +58,7 @@ load test_helper @test "Check soar for pipe input" { ${SOAR_BIN} -list-test-sqls |${SOAR_BIN} > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden run golden_diff + echo "${output}" [ $status -eq 0 ] } # 10. report 为 json 格式是否正常 @@ -62,6 +66,7 @@ load test_helper ${SOAR_BIN} -query "select * from film" \ -report-type json > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden run golden_diff + echo "${output}" [ $status -eq 0 ] } @@ -70,6 +75,7 @@ load test_helper ${SOAR_BIN} -query "select * from film" \ -report-type markdown > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden run golden_diff + echo "${output}" [ $status -eq 0 ] } @@ -79,6 +85,7 @@ load test_helper -report-title "soar report check" \ -report-type html > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden run golden_diff + echo "${output}" [ $status -eq 0 ] } @@ -118,7 +125,7 @@ load test_helper # 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 + run ${SOAR_BIN} -online-dsn="root:pase@D@192.168.12.11:3306/testDB" -print-config [ $(expr "$output" : ".*user: root") -ne 0 ] [ $(expr "$output" : ".*addr: 192.168.12.11:3306") -ne 0 ] [ $(expr "$output" : ".*schema: testDB") -ne 0 ] @@ -127,14 +134,22 @@ run ${SOAR_BIN} -online-dsn="root:pase@D@192.168.12.11:3306/testDB" -print-confi # 18. 日志中是否含有密码 @test "Check log has password" { - ${SOAR_BIN_ENV} -query "select * from film" -log-level=7 - run grep "1tIsB1g3rt" ${SOAR_BIN}.log - [ ${status} -eq 1 ] + ${SOAR_BIN_ENV} -query "select * from film" -log-level=7 + run grep "1tIsB1g3rt" ${SOAR_BIN}.log + [ ${status} -eq 1 ] } # 18. 输出中是否含有密码 @test "Check stdout has password" { - run ${SOAR_BIN_ENV} -query "select * from film" -log-level=7 - [ $(expr "$output" : ".*1tIsB1g3rt.*") -eq 0 ] - [ ${status} -eq 0 ] + run ${SOAR_BIN_ENV} -query "select * from film" -log-level=7 + [ $(expr "$output" : ".*1tIsB1g3rt.*") -eq 0 ] + [ ${status} -eq 0 ] +} + +# +@test "Check -report-type rewrite -rewrite-rules mergealter" { + ${SOAR_BIN} -list-test-sqls |${SOAR_BIN} -report-type rewrite -rewrite-rules mergealter | sort > ${BATS_TMP_DIRNAME}/${BATS_TEST_NAME}.golden + run golden_diff + echo "${output}" + [ $status -eq 0 ] } diff --git a/test/query.bats b/test/query.bats index 33d872c..1f84a9d 100644 --- a/test/query.bats +++ b/test/query.bats @@ -5,4 +5,13 @@ load test_helper @test "Check Query Optimizer" { run ${SOAR_BIN} -query "select * from film where length > 120" [ $status -eq 0 ] -} \ No newline at end of file +} + +@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 + run golden_diff + echo "${output}" + [ $status -eq 0 ] +} + -- GitLab