diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java index afba0398752f1fd6c23dd7874301be27616fdab2..501c7e17c837ce311ec0f7b43f63122e53b8a0d9 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java @@ -1,19 +1,19 @@ package com.taosdata.jdbc; -import com.google.common.collect.Lists; -import org.checkerframework.checker.units.qual.A; +import com.taosdata.jdbc.annotation.CatalogRunner; +import com.taosdata.jdbc.annotation.Description; +import com.taosdata.jdbc.annotation.TestTarget; import org.junit.*; +import org.junit.runner.RunWith; import org.junit.runners.MethodSorters; import java.sql.*; -import java.util.List; -/** - * test json tag - */ @FixMethodOrder(MethodSorters.NAME_ASCENDING) +@RunWith(CatalogRunner.class) +@TestTarget(alias = "JsonTag", author = "huolibo", version = "2.0.36") public class JsonTagTest { - private static String dbname = "json_tag_test"; + private static final String dbName = "json_tag_test"; private static Connection connection; private static Statement statement; private static final String superSql = "create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)"; @@ -74,6 +74,7 @@ public class JsonTagTest { }; @Test + @Description("insert json tag") public void case01_InsertTest() throws SQLException { for (String sql : sql) { statement.execute(sql); @@ -87,7 +88,8 @@ public class JsonTagTest { } @Test - public void case02_InvalidJsonInsertTest() { + @Description("error json tag insert") + public void case02_ErrorJsonInsertTest() { int count = 0; for (String sql : errorJsonInsertSql) { try { @@ -99,59 +101,62 @@ public class JsonTagTest { Assert.assertEquals(errorJsonInsertSql.length, count); } - // test invalidate json key, key must can be printed assic char @Test(expected = SQLException.class) + @Description("exception will throw when json value is array") public void case02_ArrayErrorTest() throws SQLException { statement.execute("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"tag1\":[1,true]}')"); } @Test(expected = SQLException.class) - public void case02_EmptyKeyErrorTest() throws SQLException { - statement.execute("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"\":\"fff\"}')"); - } - - @Test(expected = SQLException.class) + @Description("exception will throw when json value is empty") public void case02_EmptyValueErrorTest() throws SQLException { statement.execute("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"tag1\":{}}')"); } @Test(expected = SQLException.class) + @Description("exception will throw when json key is not ASCII") public void case02_AbnormalKeyErrorTest1() throws SQLException { statement.execute("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"。loc\":\"fff\"}')"); } @Test(expected = SQLException.class) + @Description("exception will throw when json key is '\\t'") public void case02_AbnormalKeyErrorTest2() throws SQLException { statement.execute("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"\t\":\"fff\"}')"); } @Test(expected = SQLException.class) + @Description("exception will throw when json key is chinese") public void case02_AbnormalKeyErrorTest3() throws SQLException { statement.execute("CREATE TABLE if not exists jsons1_14 using jsons1 tags('{\"试试\":\"fff\"}')"); } @Test + @Description("alter json tag") public void case03_AlterTag() throws SQLException { statement.execute("ALTER TABLE jsons1_1 SET TAG jtag='{\"tag1\":\"femail\",\"tag2\":35,\"tag3\":true}'"); } @Test(expected = SQLException.class) + @Description("exception will throw when add json tag") public void case03_AddTagErrorTest() throws SQLException { statement.execute("ALTER STABLE jsons1 add tag tag2 nchar(20)"); } @Test(expected = SQLException.class) + @Description("exception will throw when delete json tag") public void case03_dropTagErrorTest() throws SQLException { statement.execute("ALTER STABLE jsons1 drop tag jtag"); } @Test(expected = SQLException.class) + @Description("exception will throw when set some json tag value") public void case03_AlterTagErrorTest() throws SQLException { statement.execute("ALTER TABLE jsons1_1 SET TAG jtag=4"); } - // test error syntax @Test + @Description("exception will throw when select syntax error") public void case04_SelectErrorTest() { int count = 0; for (String sql : errorSelectSql) { @@ -164,8 +169,8 @@ public class JsonTagTest { Assert.assertEquals(errorSelectSql.length, count); } - // test select normal column @Test + @Description("normal select stable") public void case04_select01() throws SQLException { ResultSet resultSet = statement.executeQuery("select dataint from jsons1"); int count = 0; @@ -176,8 +181,8 @@ public class JsonTagTest { close(resultSet); } - // test select json tag @Test + @Description("select all column from stable") public void case04_select02() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1"); int count = 0; @@ -189,6 +194,7 @@ public class JsonTagTest { } @Test + @Description("select json tag from stable") public void case04_select03() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag from jsons1"); int count = 0; @@ -200,6 +206,7 @@ public class JsonTagTest { } @Test + @Description("where condition tag is null") public void case04_select04() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag from jsons1 where jtag is null"); int count = 0; @@ -211,6 +218,7 @@ public class JsonTagTest { } @Test + @Description("where condition tag is not null") public void case04_select05() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag from jsons1 where jtag is not null"); int count = 0; @@ -222,6 +230,7 @@ public class JsonTagTest { } @Test + @Description("select json tag") public void case04_select06() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag from jsons1_8"); resultSet.next(); @@ -231,6 +240,7 @@ public class JsonTagTest { } @Test + @Description("select json tag") public void case04_select07() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag from jsons1_1"); resultSet.next(); @@ -239,8 +249,8 @@ public class JsonTagTest { close(resultSet); } - // test jtag is NULL @Test + @Description("select not exist json tag") public void case04_select08() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag from jsons1_9"); resultSet.next(); @@ -249,8 +259,8 @@ public class JsonTagTest { close(resultSet); } - // test select json tag->'key', value is string @Test + @Description("select a json tag") public void case04_select09() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag->'tag1' from jsons1_1"); resultSet.next(); @@ -260,6 +270,7 @@ public class JsonTagTest { } @Test + @Description("select a json tag, the value is empty") public void case04_select10() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag->'tag2' from jsons1_6"); resultSet.next(); @@ -268,8 +279,8 @@ public class JsonTagTest { close(resultSet); } - // test select json tag->'key', value is int @Test + @Description("select a json tag, the value is int") public void case04_select11() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag->'tag2' from jsons1_1"); resultSet.next(); @@ -278,8 +289,8 @@ public class JsonTagTest { close(resultSet); } - // test select json tag->'key', value is bool @Test + @Description("select a json tag, the value is boolean") public void case04_select12() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag->'tag3' from jsons1_1"); resultSet.next(); @@ -288,8 +299,8 @@ public class JsonTagTest { close(resultSet); } - // test select json tag->'key', value is null @Test + @Description("select a json tag, the value is null") public void case04_select13() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag->'tag1' from jsons1_4"); resultSet.next(); @@ -298,8 +309,8 @@ public class JsonTagTest { close(resultSet); } - // test select json tag->'key', value is double @Test + @Description("select a json tag, the value is double") public void case04_select14() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag->'tag1' from jsons1_5"); resultSet.next(); @@ -308,8 +319,8 @@ public class JsonTagTest { close(resultSet); } - // test select json tag->'key', key is not exist @Test + @Description("select a json tag, the key is not exist") public void case04_select15() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag->'tag10' from jsons1_4"); resultSet.next(); @@ -319,6 +330,7 @@ public class JsonTagTest { } @Test + @Description("select a json tag, the result number equals tables number") public void case04_select16() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag->'tag1' from jsons1"); int count = 0; @@ -330,18 +342,7 @@ public class JsonTagTest { } @Test - public void case04_select17() throws SQLException { - ResultSet resultSet = statement.executeQuery("select jtag->'tag1' from jsons1"); - int count = 0; - while (resultSet.next()) { - count++; - } - Assert.assertEquals(sql.length + invalidJsonCreateSql.length + invalidJsonInsertSql.length, count); - close(resultSet); - } - - // where json value is string - @Test + @Description("where condition '=' for string") public void case04_select19() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag2'='beijing'"); int count = 0; @@ -353,6 +354,7 @@ public class JsonTagTest { } @Test + @Description("select and where conditon '=' for string") public void case04_select20() throws SQLException { ResultSet resultSet = statement.executeQuery("select dataint,tbname,jtag->'tag1',jtag from jsons1 where jtag->'tag2'='beijing'"); int count = 0; @@ -364,6 +366,7 @@ public class JsonTagTest { } @Test + @Description("where condition result is null") public void case04_select21() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'='beijing'"); int count = 0; @@ -375,6 +378,7 @@ public class JsonTagTest { } @Test + @Description("where condition equation has chinese") public void case04_select23() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'='收到货'"); int count = 0; @@ -386,6 +390,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '>' for character") public void case05_symbolOperation01() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag2'>'beijing'"); int count = 0; @@ -397,6 +402,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '>=' for character") public void case05_symbolOperation02() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag2'>='beijing'"); int count = 0; @@ -408,6 +414,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '<' for character") public void case05_symbolOperation03() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag2'<'beijing'"); int count = 0; @@ -419,6 +426,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '<=' in character") public void case05_symbolOperation04() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag2'<='beijing'"); int count = 0; @@ -430,6 +438,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '!=' in character") public void case05_symbolOperation05() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag2'!='beijing'"); int count = 0; @@ -441,6 +450,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '=' empty") public void case05_symbolOperation06() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag2'=''"); int count = 0; @@ -453,11 +463,11 @@ public class JsonTagTest { // where json value is int @Test + @Description("where condition support '=' for int") public void case06_selectValue01() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=5"); int count = 0; while (resultSet.next()) { - System.out.println(resultSet.getString(1)); count++; } Assert.assertEquals(1, count); @@ -465,6 +475,7 @@ public class JsonTagTest { } @Test + @Description("where conditional support '<' for int") public void case06_selectValue02() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'<54"); int count = 0; @@ -476,6 +487,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '<=' for int") public void case06_selectValue03() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'<=11"); int count = 0; @@ -487,6 +499,7 @@ public class JsonTagTest { } @Test + @Description("where conditional support '>' for int") public void case06_selectValue04() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'>4"); int count = 0; @@ -498,6 +511,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '>=' for int") public void case06_selectValue05() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'>=5"); int count = 0; @@ -509,6 +523,7 @@ public class JsonTagTest { } @Test + @Description("where conditional support '!=' for int") public void case06_selectValue06() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'!=5"); int count = 0; @@ -520,6 +535,7 @@ public class JsonTagTest { } @Test + @Description("where conditional support '!=' for int") public void case06_selectValue07() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'!=55"); int count = 0; @@ -531,6 +547,7 @@ public class JsonTagTest { } @Test + @Description("where conditional support '!=' for int and result is nothing") public void case06_selectValue08() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=10"); int count = 0; @@ -541,8 +558,8 @@ public class JsonTagTest { close(resultSet); } - // where json value is double @Test + @Description("where condition support '=' for double") public void case07_selectValue01() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=1.232"); int count = 0; @@ -554,6 +571,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '<' for double") public void case07_doubleOperation01() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'<1.232"); int count = 0; @@ -565,6 +583,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '<=' for double") public void case07_doubleOperation02() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'<=1.232"); int count = 0; @@ -576,6 +595,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '>' for double") public void case07_doubleOperation03() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'>1.23"); int count = 0; @@ -587,6 +607,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '>=' for double") public void case07_doubleOperation04() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'>=1.232"); int count = 0; @@ -598,6 +619,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '!=' for double") public void case07_doubleOperation05() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'!=1.232"); int count = 0; @@ -609,6 +631,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '!=' for double") public void case07_doubleOperation06() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'!=3.232"); int count = 0; @@ -620,16 +643,19 @@ public class JsonTagTest { } @Test(expected = SQLException.class) + @Description("exception will throw when denominator is zero") public void case07_doubleOperation07() throws SQLException { statement.executeQuery("select * from jsons1 where jtag->'tag1'/0=3"); } @Test(expected = SQLException.class) + @Description("exception will throw when invalid operation") public void case07_doubleOperation08() throws SQLException { statement.executeQuery("select * from jsons1 where jtag->'tag1'/5=1"); } @Test + @Description("where condition support '=' for boolean") public void case08_boolOperation01() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=true"); int count = 0; @@ -641,6 +667,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '=' for boolean") public void case08_boolOperation02() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=false"); int count = 0; @@ -652,6 +679,7 @@ public class JsonTagTest { } @Test + @Description("where condition support '!=' for boolean") public void case08_boolOperation03() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'!=false"); int count = 0; @@ -663,12 +691,13 @@ public class JsonTagTest { } @Test(expected = SQLException.class) + @Description("exception will throw when '>' operation for boolean") public void case08_boolOperation04() throws SQLException { statement.executeQuery("select * from jsons1 where jtag->'tag1'>false"); } - // where json value is null @Test + @Description("where conditional support '=null'") public void case09_select01() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=null"); int count = 0; @@ -680,6 +709,7 @@ public class JsonTagTest { } @Test + @Description("where conditional support 'is null'") public void case09_select02() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag is null"); int count = 0; @@ -691,6 +721,7 @@ public class JsonTagTest { } @Test + @Description("where condition support 'is not null'") public void case09_select03() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag is not null"); int count = 0; @@ -702,6 +733,7 @@ public class JsonTagTest { } @Test + @Description("where condition support one tag '='") public void case09_select04() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag_no_exist'=3"); int count = 0; @@ -713,6 +745,7 @@ public class JsonTagTest { } @Test + @Description("where condition support one tag 'is null'") public void case09_select05() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1' is null"); int count = 0; @@ -724,6 +757,7 @@ public class JsonTagTest { } @Test + @Description("where condition support one tag 'is null'") public void case09_select06() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag4' is null"); int count = 0; @@ -735,6 +769,7 @@ public class JsonTagTest { } @Test + @Description("where condition support one tag 'is not null'") public void case09_select07() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag3' is not null"); int count = 0; @@ -745,8 +780,8 @@ public class JsonTagTest { close(resultSet); } - // test ? @Test + @Description("contains") public void case09_select10() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag contains 'tag1'"); int count = 0; @@ -758,6 +793,7 @@ public class JsonTagTest { } @Test + @Description("contains") public void case09_select11() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag contains 'tag3'"); int count = 0; @@ -769,6 +805,7 @@ public class JsonTagTest { } @Test + @Description("contains with no exist tag") public void case09_select12() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag contains 'tag_no_exist'"); int count = 0; @@ -779,8 +816,8 @@ public class JsonTagTest { close(resultSet); } - // test json tag in where condition with and/or @Test + @Description("where condition with and") public void case10_selectAndOr01() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='beijing'"); int count = 0; @@ -792,6 +829,7 @@ public class JsonTagTest { } @Test + @Description("where condition with 'or'") public void case10_selectAndOr02() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=false or jtag->'tag2'='beijing'"); int count = 0; @@ -803,6 +841,7 @@ public class JsonTagTest { } @Test + @Description("where condition with 'and'") public void case10_selectAndOr03() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=false and jtag->'tag2'='shanghai'"); int count = 0; @@ -814,6 +853,7 @@ public class JsonTagTest { } @Test + @Description("where condition with 'or'") public void case10_selectAndOr04() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'=13 or jtag->'tag2'>35"); int count = 0; @@ -825,6 +865,7 @@ public class JsonTagTest { } @Test + @Description("where condition with 'or' and contains") public void case10_selectAndOr05() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1' is not null and jtag contains 'tag3'"); int count = 0; @@ -836,6 +877,7 @@ public class JsonTagTest { } @Test + @Description("where condition with 'and' and contains") public void case10_selectAndOr06() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1'='femail' and jtag contains 'tag3'"); int count = 0; @@ -846,8 +888,8 @@ public class JsonTagTest { close(resultSet); } - // test with tbname/normal column @Test + @Description("test with tbname/normal column") public void case11_selectTbName01() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where tbname = 'jsons1_1'"); int count = 0; @@ -859,6 +901,7 @@ public class JsonTagTest { } @Test + @Description("test with tbname/normal column") public void case11_selectTbName02() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3'"); int count = 0; @@ -870,6 +913,7 @@ public class JsonTagTest { } @Test + @Description("test with tbname/normal column") public void case11_selectTbName03() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=3"); int count = 0; @@ -881,6 +925,7 @@ public class JsonTagTest { } @Test + @Description("test with tbname/normal column") public void case11_selectTbName04() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where tbname = 'jsons1_1' and jtag contains 'tag3' and dataint=23"); int count = 0; @@ -891,8 +936,8 @@ public class JsonTagTest { close(resultSet); } - // test where condition like @Test + @Description("where condition like") public void case12_selectWhere01() throws SQLException { ResultSet resultSet = statement.executeQuery("select *,tbname from jsons1 where jtag->'tag2' like 'bei%'"); int count = 0; @@ -904,6 +949,7 @@ public class JsonTagTest { } @Test + @Description("where condition like") public void case12_selectWhere02() throws SQLException { ResultSet resultSet = statement.executeQuery("select *,tbname from jsons1 where jtag->'tag1' like 'fe%' and jtag->'tag2' is not null"); int count = 0; @@ -914,14 +960,14 @@ public class JsonTagTest { close(resultSet); } - // test where condition in no support in @Test(expected = SQLException.class) + @Description("where condition in no support in") public void case12_selectWhere03() throws SQLException { statement.executeQuery("select * from jsons1 where jtag->'tag1' in ('beijing')"); } - // test where condition match @Test + @Description("where condition match") public void case12_selectWhere04() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1' match 'ma'"); int count = 0; @@ -933,6 +979,7 @@ public class JsonTagTest { } @Test + @Description("where condition match") public void case12_selectWhere05() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1' match 'ma$'"); int count = 0; @@ -944,6 +991,7 @@ public class JsonTagTest { } @Test + @Description("where condition match") public void case12_selectWhere06() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag2' match 'jing$'"); int count = 0; @@ -955,6 +1003,7 @@ public class JsonTagTest { } @Test + @Description("where condition match") public void case12_selectWhere07() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from jsons1 where jtag->'tag1' match '收到'"); int count = 0; @@ -965,13 +1014,14 @@ public class JsonTagTest { close(resultSet); } - // test distinct @Test + @Description("insert distinct") public void case13_selectDistinct01() throws SQLException { statement.execute("insert into jsons1_14 using jsons1 tags('{\"tag1\":\"收到货\",\"tag2\":\"\",\"tag3\":null}') values(1591062628000, 2, NULL, '你就会', 'dws')"); } @Test + @Description("distinct json tag") public void case13_selectDistinct02() throws SQLException { ResultSet resultSet = statement.executeQuery("select distinct jtag->'tag1' from jsons1"); int count = 0; @@ -983,6 +1033,7 @@ public class JsonTagTest { } @Test + @Description("distinct json tag") public void case13_selectDistinct03() throws SQLException { ResultSet resultSet = statement.executeQuery("select distinct jtag from jsons1"); int count = 0; @@ -993,13 +1044,14 @@ public class JsonTagTest { close(resultSet); } - // test dumplicate key with normal colomn @Test + @Description("insert json tag") public void case14_selectDump01() throws SQLException { statement.execute("INSERT INTO jsons1_15 using jsons1 tags('{\"tbname\":\"tt\",\"databool\":true,\"datastr\":\"是是是\"}') values(1591060828000, 4, false, 'jjsf', \"你就会\")"); } @Test + @Description("test duplicate key with normal column") public void case14_selectDump02() throws SQLException { ResultSet resultSet = statement.executeQuery("select *,tbname,jtag from jsons1 where jtag->'datastr' match '是' and datastr match 'js'"); int count = 0; @@ -1011,6 +1063,7 @@ public class JsonTagTest { } @Test + @Description("test duplicate key with normal column") public void case14_selectDump03() throws SQLException { ResultSet resultSet = statement.executeQuery("select tbname,jtag->'tbname' from jsons1 where jtag->'tbname'='tt' and tbname='jsons1_14'"); int count = 0; @@ -1021,8 +1074,8 @@ public class JsonTagTest { close(resultSet); } - // test join @Test + @Description("insert json tag for join test") public void case15_selectJoin01() throws SQLException { statement.execute("create table if not exists jsons2(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json)"); statement.execute("insert into jsons2_1 using jsons2 tags('{\"tag1\":\"fff\",\"tag2\":5, \"tag3\":true}') values(1591060618000, 2, false, 'json2', '你是2')"); @@ -1033,17 +1086,17 @@ public class JsonTagTest { statement.execute("insert into jsons3_2 using jsons3 tags('{\"tag1\":5,\"tag2\":\"beijing\"}') values (1591060638000, 2, true, 'json3', 'sss')"); } - // TODO check result @Test + @Description("select json tag from join") public void case15_selectJoin02() throws SQLException { ResultSet resultSet = statement.executeQuery("select 'sss',33,a.jtag->'tag3' from jsons2 a,jsons3 b where a.ts=b.ts and a.jtag->'tag1'=b.jtag->'tag1'"); - + resultSet.next(); + Assert.assertEquals("sss", resultSet.getString(1)); close(resultSet); } - // test group by & order by json tag - // TODO check other result @Test + @Description("group by and order by json tag desc") public void case16_selectGroupOrder01() throws SQLException { ResultSet resultSet = statement.executeQuery("select count(*) from jsons1 group by jtag->'tag1' order by jtag->'tag1' desc"); int count = 0; @@ -1055,6 +1108,7 @@ public class JsonTagTest { } @Test + @Description("group by and order by json tag asc") public void case16_selectGroupOrder02() throws SQLException { ResultSet resultSet = statement.executeQuery("select count(*) from jsons1 group by jtag->'tag1' order by jtag->'tag1' asc"); int count = 0; @@ -1065,9 +1119,8 @@ public class JsonTagTest { close(resultSet); } - // test stddev with group by json tag - // TODO check result @Test + @Description("stddev with group by json tag") public void case17_selectStddev01() throws SQLException { ResultSet resultSet = statement.executeQuery("select stddev(dataint) from jsons1 group by jtag->'tag1'"); String s = ""; @@ -1082,8 +1135,8 @@ public class JsonTagTest { close(resultSet); } - // subquery with json tag @Test + @Description("subquery json tag") public void case18_selectSubquery01() throws SQLException { ResultSet resultSet = statement.executeQuery("select * from (select jtag, dataint from jsons1)"); int count = 0; @@ -1095,8 +1148,14 @@ public class JsonTagTest { } @Test + @Description("subquery some json tags") public void case18_selectSubquery02() throws SQLException { ResultSet resultSet = statement.executeQuery("select jtag->'tag1' from (select jtag->'tag1', dataint from jsons1)"); + + ResultSetMetaData metaData = resultSet.getMetaData(); + String columnName = metaData.getColumnName(1); + Assert.assertEquals("jtag->'tag1'", columnName); + int count = 0; while (resultSet.next()) { count++; @@ -1106,15 +1165,7 @@ public class JsonTagTest { } @Test - public void case18_selectSubquery03() throws SQLException { - ResultSet resultSet = statement.executeQuery("select jtag->'tag1' from (select jtag->'tag1', dataint from jsons1)"); - ResultSetMetaData metaData = resultSet.getMetaData(); - String columnName = metaData.getColumnName(1); - Assert.assertEquals("jtag->'tag1'", columnName); - close(resultSet); - } - - @Test + @Description("query some json tags from subquery") public void case18_selectSubquery04() throws SQLException { ResultSet resultSet = statement.executeQuery("select ts,tbname,jtag->'tag1' from (select jtag->'tag1',tbname,ts from jsons1 order by ts)"); int count = 0; @@ -1142,9 +1193,9 @@ public class JsonTagTest { try { connection = DriverManager.getConnection(url); statement = connection.createStatement(); - statement.execute("drop database if exists " + dbname); - statement.execute("create database if not exists " + dbname); - statement.execute("use " + dbname); + statement.execute("drop database if exists " + dbName); + statement.execute("create database if not exists " + dbName); + statement.execute("use " + dbName); statement.execute(superSql); } catch (SQLException e) { e.printStackTrace(); @@ -1155,7 +1206,7 @@ public class JsonTagTest { public static void afterClass() { try { if (null != statement) { - statement.execute("drop database " + dbname); + statement.execute("drop database " + dbName); statement.close(); } if (null != connection) { diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SchemalessInsertTest.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SchemalessInsertTest.java index a090dd10e3564d498ab807909f97aefb3b2f3466..712cc0c8c1b0b094a20db0fe36d33f553878d71d 100644 --- a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SchemalessInsertTest.java +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/SchemalessInsertTest.java @@ -2,17 +2,23 @@ package com.taosdata.jdbc; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.taosdata.jdbc.annotation.CatalogRunner; +import com.taosdata.jdbc.annotation.Description; +import com.taosdata.jdbc.annotation.TestTarget; import com.taosdata.jdbc.enums.SchemalessProtocolType; import com.taosdata.jdbc.enums.SchemalessTimestampType; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import java.sql.*; import java.util.ArrayList; import java.util.List; +@RunWith(CatalogRunner.class) +@TestTarget(alias = "Schemaless",author = "huolibo", version = "2.0.36") public class SchemalessInsertTest { private final String dbname = "test_schemaless_insert"; private Connection conn; @@ -23,6 +29,7 @@ public class SchemalessInsertTest { * @throws SQLException execute error */ @Test + @Description("line insert") public void schemalessInsert() throws SQLException { // given String[] lines = new String[]{ @@ -53,6 +60,7 @@ public class SchemalessInsertTest { * @throws SQLException execute error */ @Test + @Description("telnet insert") public void telnetInsert() throws SQLException { // given String[] lines = new String[]{ @@ -87,6 +95,7 @@ public class SchemalessInsertTest { * @throws SQLException execute error */ @Test + @Description("json insert") public void jsonInsert() throws SQLException { // given String json = "[\n" + diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogClass.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogClass.java new file mode 100644 index 0000000000000000000000000000000000000000..490346e401dba956c8743abb452bcc943df67904 --- /dev/null +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogClass.java @@ -0,0 +1,86 @@ +package com.taosdata.jdbc.annotation; + +import java.util.ArrayList; +import java.util.List; + +/** + * Test class + */ +public class CatalogClass { + + private String name; + private String alias; + private String author; + private String version; + private List methods = new ArrayList<>(); + private int total; + private int failure; + + public void setTotal(int total) { + this.total = total; + } + + public void setFailure(int failure) { + this.failure = failure; + } + + public void setAuthor(String author) { + this.author = author; + } + + public void setVersion(String version) { + this.version = version; + } + + public void setName(String name) { + this.name = name; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + public void setMethods(List methods) { + this.methods = methods; + } + + @Override + public String toString() { + if (methods.size() < 1) + return null; + StringBuilder sb = new StringBuilder(); + sb.append("ClassName: ").append(name); + String msg = trim(alias); + if (null != msg) + sb.append("\tAlias:").append(alias); + sb.append("\tTotal:").append(total) + .append("\tFailure:").append(failure).append("\n"); + for (CatalogMethod method : methods) { + sb.append("\t").append(method.getName()); + sb.append("\t").append(method.isSuccess()); + sb.append("\t").append(method.getMessage()); + String mAuthor = trim(method.getAuthor()); + if (null == mAuthor) { + sb.append("\t").append(author); + } else { + sb.append("\t").append(method.getAuthor()); + } + String mVersion = trim(method.getVersion()); + if (null == mVersion) { + sb.append("\t").append(version); + } else { + sb.append("\t").append(mVersion); + } + sb.append("\n"); + } + return sb.toString(); + } + + private String trim(String s) { + if (null == s || s.trim().equals("")) { + return null; + } else { + return s.trim(); + } + } +} diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogListener.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogListener.java new file mode 100644 index 0000000000000000000000000000000000000000..2d22302d02f531eca055fa76dea18d8de9f7371f --- /dev/null +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogListener.java @@ -0,0 +1,104 @@ +package com.taosdata.jdbc.annotation; + +import org.junit.runner.Description; +import org.junit.runner.Result; +import org.junit.runner.notification.Failure; +import org.junit.runner.notification.RunListener; + +import java.io.File; +import java.io.FileWriter; +import java.util.LinkedList; + +public class CatalogListener extends RunListener { + public static final String CATALOG_FILE = "target/TestCaseCatalog.txt"; + CatalogClass catalogClass = null; + private final LinkedList methods = new LinkedList<>(); + + @Override + public void testRunStarted(Description description) throws Exception { + catalogClass = new CatalogClass(); + TestTarget target = description.getAnnotation(TestTarget.class); + if (target != null) { + catalogClass.setAlias(target.alias()); + catalogClass.setAuthor(target.author()); + catalogClass.setVersion(target.version()); + } + catalogClass.setName(getClassName(description.getClassName())); + } + + private String getClassName(String name) { + if (null == name || name.trim().equals("")) { + return null; + } + name = name.trim(); + int pos = name.lastIndexOf("."); + if (-1 == pos) { + return name; + } + return name.substring(pos + 1); + } + + @Override + public void testRunFinished(Result result) throws Exception { + catalogClass.setMethods(methods); + catalogClass.setTotal(result.getRunCount()); + catalogClass.setFailure(result.getFailureCount()); + File file = new File(CATALOG_FILE); + if (!file.exists()) { + synchronized (CatalogListener.class) { + if (!file.exists()) { + file.createNewFile(); + try (FileWriter writer = new FileWriter(file, true)) { + writer.write("\tName\tPass\tMessage\tAuthor\tVersion\n"); + writer.write(catalogClass.toString()); + } + } + } + } else { + try (FileWriter writer = new FileWriter(file, true)) { + writer.write(catalogClass.toString()); + } + } + } + + @Override + public void testStarted(Description description) throws Exception { + } + + @Override + public void testFinished(Description description) throws Exception { + com.taosdata.jdbc.annotation.Description annotation + = description.getAnnotation(com.taosdata.jdbc.annotation.Description.class); + if (annotation != null) { + CatalogMethod method = new CatalogMethod(); + method.setMessage(annotation.value()); + method.setAuthor(annotation.author()); + method.setVersion(annotation.version()); + method.setSuccess(true); + method.setName(description.getMethodName()); + methods.addLast(method); + } + } + + @Override + public void testFailure(Failure failure) throws Exception { + com.taosdata.jdbc.annotation.Description annotation + = failure.getDescription().getAnnotation(com.taosdata.jdbc.annotation.Description.class); + CatalogMethod method = new CatalogMethod(); + method.setMessage(annotation.value()); + method.setAuthor(annotation.author()); + method.setVersion(annotation.version()); + method.setSuccess(false); + method.setName(failure.getDescription().getMethodName()); + methods.addFirst(method); + } + + @Override + public void testAssumptionFailure(Failure failure) { + } + + @Override + public void testIgnored(Description description) throws Exception { + super.testIgnored(description); + } +} \ No newline at end of file diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogMethod.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogMethod.java new file mode 100644 index 0000000000000000000000000000000000000000..1dd074df2d1298781bbbfa7e7709113db2c6ca01 --- /dev/null +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogMethod.java @@ -0,0 +1,52 @@ +package com.taosdata.jdbc.annotation; + +/** + * Test method + */ +public class CatalogMethod { + private String name; + private boolean success; + private String message; + private String author; + private String version; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean success) { + this.success = success; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } +} diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogRunner.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogRunner.java new file mode 100644 index 0000000000000000000000000000000000000000..08e5f9212287d517838448d0122ab0876812cc1d --- /dev/null +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/CatalogRunner.java @@ -0,0 +1,36 @@ +package com.taosdata.jdbc.annotation; + +import org.junit.internal.AssumptionViolatedException; +import org.junit.internal.runners.model.EachTestNotifier; +import org.junit.runner.notification.RunNotifier; +import org.junit.runner.notification.StoppedByUserException; +import org.junit.runners.BlockJUnit4ClassRunner; +import org.junit.runners.model.InitializationError; +import org.junit.runners.model.Statement; + +public class CatalogRunner extends BlockJUnit4ClassRunner { + + public CatalogRunner(Class testClass) throws InitializationError { + super(testClass); + } + + @Override + public void run(RunNotifier notifier) { + //add user-defined listener + notifier.addListener(new CatalogListener()); + EachTestNotifier testNotifier = new EachTestNotifier(notifier, getDescription()); + + notifier.fireTestRunStarted(getDescription()); + + try { + Statement statement = classBlock(notifier); + statement.evaluate(); + } catch (AssumptionViolatedException av) { + testNotifier.addFailedAssumption(av); + } catch (StoppedByUserException exception) { + throw exception; + } catch (Throwable e) { + testNotifier.addFailure(e); + } + } +} \ No newline at end of file diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/Description.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/Description.java new file mode 100644 index 0000000000000000000000000000000000000000..669b0a088656c030281e82620117469b3a375c75 --- /dev/null +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/Description.java @@ -0,0 +1,19 @@ +package com.taosdata.jdbc.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.METHOD}) +public @interface Description { + + String value(); + + // git blame author + String author() default ""; + + // since which version; + String version() default ""; +} diff --git a/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/TestTarget.java b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/TestTarget.java new file mode 100644 index 0000000000000000000000000000000000000000..3d1db681647d3b23818143156ffd513c46a6e495 --- /dev/null +++ b/src/connector/jdbc/src/test/java/com/taosdata/jdbc/annotation/TestTarget.java @@ -0,0 +1,18 @@ +package com.taosdata.jdbc.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE}) +public @interface TestTarget { + + String alias() default ""; + + String author(); + + String version() default ""; + +} diff --git a/tests/pytest/fulltest-connector.sh b/tests/pytest/fulltest-connector.sh new file mode 100644 index 0000000000000000000000000000000000000000..eb685bd2146508a55d470c45bd3b4780997de64c --- /dev/null +++ b/tests/pytest/fulltest-connector.sh @@ -0,0 +1,9 @@ +#!/bin/bash +ulimit -c unlimited +#======================p1-start=============== +#======================p1-end=============== + +# restful test for python +# python3 test.py -f restful/restful_bind_db1.py +# python3 test.py -f restful/restful_bind_db2.py +python3 ./test.py -f client/nettest.py \ No newline at end of file diff --git a/tests/pytest/fulltest-insert.sh b/tests/pytest/fulltest-insert.sh new file mode 100644 index 0000000000000000000000000000000000000000..6a2a027c818ecc018829436b63e86a9d96629e5b --- /dev/null +++ b/tests/pytest/fulltest-insert.sh @@ -0,0 +1,154 @@ +#!/bin/bash +ulimit -c unlimited +#======================p1-start=============== +#======================p1-end=============== + +python3 testCompress.py +python3 testNoCompress.py + +python3 ./test.py -f import_merge/importBlock1HO.py +python3 ./test.py -f import_merge/importBlock1HPO.py +python3 ./test.py -f import_merge/importBlock1H.py +python3 ./test.py -f import_merge/importBlock1S.py +python3 ./test.py -f import_merge/importBlock1Sub.py +python3 ./test.py -f import_merge/importBlock1TO.py +python3 ./test.py -f import_merge/importBlock1TPO.py +python3 ./test.py -f import_merge/importBlock1T.py +python3 ./test.py -f import_merge/importBlock2HO.py +python3 ./test.py -f import_merge/importBlock2HPO.py +python3 ./test.py -f import_merge/importBlock2H.py +python3 ./test.py -f import_merge/importBlock2S.py +python3 ./test.py -f import_merge/importBlock2Sub.py +python3 ./test.py -f import_merge/importBlock2TO.py +python3 ./test.py -f import_merge/importBlock2TPO.py +python3 ./test.py -f import_merge/importBlock2T.py +python3 ./test.py -f import_merge/importBlockbetween.py +python3 ./test.py -f import_merge/importCacheFileHO.py +python3 ./test.py -f import_merge/importCacheFileHPO.py +python3 ./test.py -f import_merge/importCacheFileH.py +python3 ./test.py -f import_merge/importCacheFileS.py +python3 ./test.py -f import_merge/importCacheFileSub.py +python3 ./test.py -f import_merge/importCacheFileTO.py +python3 ./test.py -f import_merge/importCacheFileTPO.py +python3 ./test.py -f import_merge/importCacheFileT.py +python3 ./test.py -f import_merge/importDataH2.py +python3 ./test.py -f import_merge/importDataHO2.py +python3 ./test.py -f import_merge/importDataHO.py +python3 ./test.py -f import_merge/importDataHPO.py +python3 ./test.py -f import_merge/importDataLastHO.py +python3 ./test.py -f import_merge/importDataLastHPO.py +python3 ./test.py -f import_merge/importDataLastH.py +python3 ./test.py -f import_merge/importDataLastS.py +python3 ./test.py -f import_merge/importDataLastSub.py +python3 ./test.py -f import_merge/importDataLastTO.py +python3 ./test.py -f import_merge/importDataLastTPO.py +python3 ./test.py -f import_merge/importDataLastT.py +python3 ./test.py -f import_merge/importDataS.py +python3 ./test.py -f import_merge/importDataSub.py +python3 ./test.py -f import_merge/importDataTO.py +python3 ./test.py -f import_merge/importDataTPO.py +python3 ./test.py -f import_merge/importDataT.py +python3 ./test.py -f import_merge/importHeadOverlap.py +python3 ./test.py -f import_merge/importHeadPartOverlap.py +python3 ./test.py -f import_merge/importHead.py +python3 ./test.py -f import_merge/importHORestart.py +python3 ./test.py -f import_merge/importHPORestart.py +python3 ./test.py -f import_merge/importHRestart.py +python3 ./test.py -f import_merge/importLastHO.py +python3 ./test.py -f import_merge/importLastHPO.py +python3 ./test.py -f import_merge/importLastH.py +python3 ./test.py -f import_merge/importLastS.py +python3 ./test.py -f import_merge/importLastSub.py +python3 ./test.py -f import_merge/importLastTO.py +python3 ./test.py -f import_merge/importLastTPO.py +python3 ./test.py -f import_merge/importLastT.py +python3 ./test.py -f import_merge/importSpan.py +python3 ./test.py -f import_merge/importSRestart.py +python3 ./test.py -f import_merge/importSubRestart.py +python3 ./test.py -f import_merge/importTailOverlap.py +python3 ./test.py -f import_merge/importTailPartOverlap.py +python3 ./test.py -f import_merge/importTail.py +python3 ./test.py -f import_merge/importToCommit.py +python3 ./test.py -f import_merge/importTORestart.py +python3 ./test.py -f import_merge/importTPORestart.py +python3 ./test.py -f import_merge/importTRestart.py +python3 ./test.py -f import_merge/importInsertThenImport.py +python3 ./test.py -f import_merge/importCSV.py +python3 ./test.py -f import_merge/import_update_0.py +python3 ./test.py -f import_merge/import_update_1.py +python3 ./test.py -f import_merge/import_update_2.py + +python3 ./test.py -f insert/basic.py +python3 ./test.py -f insert/int.py +python3 ./test.py -f insert/float.py +python3 ./test.py -f insert/bigint.py +python3 ./test.py -f insert/bool.py +python3 ./test.py -f insert/double.py +python3 ./test.py -f insert/smallint.py +python3 ./test.py -f insert/tinyint.py +python3 ./test.py -f insert/date.py +python3 ./test.py -f insert/binary.py +python3 ./test.py -f insert/nchar.py +#python3 ./test.py -f insert/nchar-boundary.py +python3 ./test.py -f insert/nchar-unicode.py +python3 ./test.py -f insert/multi.py +python3 ./test.py -f insert/randomNullCommit.py +python3 insert/retentionpolicy.py +python3 ./test.py -f insert/alterTableAndInsert.py +python3 ./test.py -f insert/insertIntoTwoTables.py +python3 ./test.py -f insert/before_1970.py +python3 ./test.py -f insert/special_character_show.py +python3 bug2265.py +python3 ./test.py -f insert/bug3654.py +python3 ./test.py -f insert/insertDynamicColBeforeVal.py +python3 ./test.py -f insert/in_function.py +python3 ./test.py -f insert/modify_column.py +#python3 ./test.py -f insert/line_insert.py +python3 ./test.py -f insert/specialSql.py +python3 ./test.py -f insert/timestamp.py +python3 ./test.py -f insert/metadataUpdate.py +python3 ./test.py -f insert/unsignedInt.py +python3 ./test.py -f insert/unsignedBigint.py +python3 ./test.py -f insert/unsignedSmallint.py +python3 ./test.py -f insert/unsignedTinyint.py +python3 ./test.py -f insert/insertFromCSV.py +python3 ./test.py -f insert/boundary2.py +python3 ./test.py -f insert/insert_locking.py +python3 test.py -f insert/insert_before_use_db.py +python3 ./test.py -f insert/flushwhiledrop.py +python3 ./test.py -f insert/verifyMemToDiskCrash.py +#python3 ./test.py -f insert/schemalessInsert.py +#python3 ./test.py -f insert/openTsdbJsonInsert.py +python3 ./test.py -f insert/openTsdbTelnetLinesInsert.py + + +# update +python3 ./test.py -f update/merge_commit_data.py +python3 ./test.py -f update/allow_update.py +python3 ./test.py -f update/allow_update-0.py +python3 ./test.py -f update/append_commit_data.py +python3 ./test.py -f update/append_commit_last-0.py +python3 ./test.py -f update/append_commit_last.py + + +python3 ./test.py -f update/merge_commit_data2.py +python3 ./test.py -f update/merge_commit_data2_update0.py +python3 ./test.py -f update/merge_commit_last-0.py +python3 ./test.py -f update/merge_commit_last.py +python3 ./test.py -f update/update_options.py +python3 ./test.py -f update/merge_commit_data-0.py + +# wal +python3 ./test.py -f wal/addOldWalTest.py +python3 ./test.py -f wal/sdbComp.py + + + + + + + + + + + diff --git a/tests/pytest/fulltest-others.sh b/tests/pytest/fulltest-others.sh new file mode 100644 index 0000000000000000000000000000000000000000..e0b0851a22de16dbc3e6aea17937121573eb9997 --- /dev/null +++ b/tests/pytest/fulltest-others.sh @@ -0,0 +1,48 @@ +#!/bin/bash +ulimit -c unlimited +#======================p1-start=============== +#======================p1-end=============== + +#python3 ./test.py -f dbmgmt/database-name-boundary.py +python3 test.py -f dbmgmt/nanoSecondCheck.py + +# +python3 ./test.py -f tsdb/tsdbComp.py + +# user +python3 ./test.py -f user/user_create.py +python3 ./test.py -f user/pass_len.py + +# perfbenchmark +python3 ./test.py -f perfbenchmark/bug3433.py +#python3 ./test.py -f perfbenchmark/bug3589.py +#python3 ./test.py -f perfbenchmark/taosdemoInsert.py + +#alter table +python3 ./test.py -f alter/alter_table_crash.py +python3 ./test.py -f alter/alterTabAddTagWithNULL.py +python3 ./test.py -f alter/alterTimestampColDataProcess.py +python3 ./test.py -f alter/alter_table.py +python3 ./test.py -f alter/alter_debugFlag.py +python3 ./test.py -f alter/alter_keep.py +python3 ./test.py -f alter/alter_cacheLastRow.py +python3 ./test.py -f alter/alter_create_exception.py +python3 ./test.py -f alter/alterColMultiTimes.py + +python3 ./test.py -f account/account_create.py + +# client +python3 ./test.py -f client/client.py +python3 ./test.py -f client/version.py +python3 ./test.py -f client/alterDatabase.py +python3 ./test.py -f client/noConnectionErrorTest.py +python3 ./test.py -f client/taoshellCheckCase.py +# python3 ./test.py -f client/change_time_1_1.py +# python3 ./test.py -f client/change_time_1_2.py +python3 client/twoClients.py + +python3 testMinTablesPerVnode.py + +# topic +python3 ./test.py -f topic/topicQuery.py + diff --git a/tests/pytest/fulltest-query.sh b/tests/pytest/fulltest-query.sh new file mode 100644 index 0000000000000000000000000000000000000000..99321351370d9d09b31dea57b9890cccb00205b2 --- /dev/null +++ b/tests/pytest/fulltest-query.sh @@ -0,0 +1,199 @@ +#!/bin/bash +ulimit -c unlimited +#======================p1-start=============== +#======================p1-end=============== + + +# timezone +python3 ./test.py -f TimeZone/TestCaseTimeZone.py + +#stable +python3 ./test.py -f stable/insert.py +python3 ./test.py -f stable/query_after_reset.py + +#table +python3 ./test.py -f table/alter_wal0.py +python3 ./test.py -f table/column_name.py +python3 ./test.py -f table/column_num.py +python3 ./test.py -f table/db_table.py +python3 ./test.py -f table/create_sensitive.py +python3 ./test.py -f table/tablename-boundary.py +python3 ./test.py -f table/max_table_length.py +python3 ./test.py -f table/alter_column.py +python3 ./test.py -f table/boundary.py +#python3 ./test.py -f table/create.py +python3 ./test.py -f table/del_stable.py +python3 ./test.py -f table/create_db_from_normal_db.py + +# tag +python3 ./test.py -f tag_lite/filter.py +python3 ./test.py -f tag_lite/create-tags-boundary.py +python3 ./test.py -f tag_lite/3.py +python3 ./test.py -f tag_lite/4.py +python3 ./test.py -f tag_lite/5.py +python3 ./test.py -f tag_lite/6.py +python3 ./test.py -f tag_lite/add.py +python3 ./test.py -f tag_lite/bigint.py +python3 ./test.py -f tag_lite/binary_binary.py +python3 ./test.py -f tag_lite/binary.py +python3 ./test.py -f tag_lite/bool_binary.py +python3 ./test.py -f tag_lite/bool_int.py +python3 ./test.py -f tag_lite/bool.py +python3 ./test.py -f tag_lite/change.py +python3 ./test.py -f tag_lite/column.py +python3 ./test.py -f tag_lite/commit.py +python3 ./test.py -f tag_lite/create.py +python3 ./test.py -f tag_lite/datatype.py +python3 ./test.py -f tag_lite/datatype-without-alter.py +python3 ./test.py -f tag_lite/delete.py +python3 ./test.py -f tag_lite/double.py +python3 ./test.py -f tag_lite/float.py +python3 ./test.py -f tag_lite/int_binary.py +python3 ./test.py -f tag_lite/int_float.py +python3 ./test.py -f tag_lite/int.py +python3 ./test.py -f tag_lite/set.py +python3 ./test.py -f tag_lite/smallint.py +python3 ./test.py -f tag_lite/tinyint.py +python3 ./test.py -f tag_lite/timestamp.py +python3 ./test.py -f tag_lite/TestModifyTag.py +python3 ./test.py -f tag_lite/unsignedInt.py +python3 ./test.py -f tag_lite/unsignedBigint.py +python3 ./test.py -f tag_lite/unsignedSmallint.py +python3 ./test.py -f tag_lite/unsignedTinyint.py +python3 ./test.py -f tag_lite/alter_tag.py +python3 ./test.py -f tag_lite/drop_auto_create.py + +#query +python3 ./test.py -f query/distinctOneColTb.py +python3 ./test.py -f query/filter.py +python3 ./test.py -f query/filterCombo.py +python3 ./test.py -f query/queryNormal.py +python3 ./test.py -f query/queryError.py +python3 ./test.py -f query/filterAllIntTypes.py +python3 ./test.py -f query/filterFloatAndDouble.py +python3 ./test.py -f query/filterOtherTypes.py +python3 ./test.py -f query/querySort.py +python3 ./test.py -f query/queryJoin.py +python3 ./test.py -f query/select_last_crash.py +python3 ./test.py -f query/queryNullValueTest.py +python3 ./test.py -f query/queryInsertValue.py +python3 ./test.py -f query/queryConnection.py +python3 ./test.py -f query/queryCountCSVData.py +python3 ./test.py -f query/natualInterval.py +python3 ./test.py -f query/bug1471.py +#python3 ./test.py -f query/dataLossTest.py +python3 ./test.py -f query/bug1874.py +python3 ./test.py -f query/bug1875.py +python3 ./test.py -f query/bug1876.py +python3 ./test.py -f query/bug2218.py +python3 ./test.py -f query/bug2117.py +python3 ./test.py -f query/bug2118.py +python3 ./test.py -f query/bug2143.py +python3 ./test.py -f query/sliding.py +python3 ./test.py -f query/unionAllTest.py +python3 ./test.py -f query/bug2281.py +python3 ./test.py -f query/udf.py +python3 ./test.py -f query/bug2119.py +python3 ./test.py -f query/isNullTest.py +python3 ./test.py -f query/queryWithTaosdKilled.py +python3 ./test.py -f query/floatCompare.py +python3 ./test.py -f query/query1970YearsAf.py +python3 ./test.py -f query/bug3351.py +python3 ./test.py -f query/bug3375.py +python3 ./test.py -f query/queryJoin10tables.py +python3 ./test.py -f query/queryStddevWithGroupby.py +python3 ./test.py -f query/querySecondtscolumnTowherenow.py +python3 ./test.py -f query/queryFilterTswithDateUnit.py +python3 ./test.py -f query/queryTscomputWithNow.py +python3 ./test.py -f query/queryStableJoin.py +python3 ./test.py -f query/computeErrorinWhere.py +python3 ./test.py -f query/queryTsisNull.py +python3 ./test.py -f query/subqueryFilter.py +python3 ./test.py -f query/nestedQuery/queryInterval.py +python3 ./test.py -f query/queryStateWindow.py +# python3 ./test.py -f query/nestedQuery/queryWithOrderLimit.py +python3 ./test.py -f query/nestquery_last_row.py +python3 ./test.py -f query/nestedQuery/nestedQuery.py +python3 ./test.py -f query/nestedQuery/nestedQuery_datacheck.py +python3 ./test.py -f query/queryCnameDisplay.py +# python3 ./test.py -f query/operator_cost.py +# python3 ./test.py -f query/long_where_query.py +python3 test.py -f query/nestedQuery/queryWithSpread.py +python3 ./test.py -f query/bug6586.py +# python3 ./test.py -f query/bug5903.py +python3 test.py -f query/queryInterval.py +python3 test.py -f query/queryFillTest.py +python3 ./test.py -f query/last_cache.py +python3 ./test.py -f query/last_row_cache.py +python3 ./test.py -f query/queryGroupbySort.py +python3 ./test.py -f query/filterAllUnsignedIntTypes.py +python3 ./test.py -f query/queryBetweenAnd.py +python3 ./test.py -f query/querySession.py +python3 ./test.py -f query/queryWildcardLength.py +python3 ./test.py -f query/queryTbnameUpperLower.py +python3 ./test.py -f query/query.py +python3 ./test.py -f query/queryDiffColsTagsAndOr.py +python3 ./test.py -f query/queryGroupTbname.py +python3 ./test.py -f query/queryRegex.py + +#stream +python3 ./test.py -f stream/metric_1.py +python3 ./test.py -f stream/metric_n.py +python3 ./test.py -f stream/new.py +python3 ./test.py -f stream/stream1.py +python3 ./test.py -f stream/stream2.py +#python3 ./test.py -f stream/parser.py +python3 ./test.py -f stream/history.py +python3 ./test.py -f stream/sys.py +python3 ./test.py -f stream/table_1.py +python3 ./test.py -f stream/table_n.py +python3 ./test.py -f stream/showStreamExecTimeisNull.py +python3 ./test.py -f stream/cqSupportBefore1970.py + +python3 ./test.py -f query/queryGroupbyWithInterval.py +python3 queryCount.py + +# subscribe +python3 test.py -f subscribe/singlemeter.py +#python3 test.py -f subscribe/stability.py +python3 test.py -f subscribe/supertable.py + +# functions +python3 ./test.py -f functions/all_null_value.py +python3 ./test.py -f functions/function_avg.py -r 1 +python3 ./test.py -f functions/function_bottom.py -r 1 +python3 ./test.py -f functions/function_count.py -r 1 +python3 ./test.py -f functions/function_count_last_stab.py +python3 ./test.py -f functions/function_diff.py -r 1 +python3 ./test.py -f functions/function_first.py -r 1 +python3 ./test.py -f functions/function_last.py -r 1 +python3 ./test.py -f functions/function_last_row.py -r 1 +python3 ./test.py -f functions/function_leastsquares.py -r 1 +python3 ./test.py -f functions/function_max.py -r 1 +python3 ./test.py -f functions/function_min.py -r 1 +python3 ./test.py -f functions/function_operations.py -r 1 +python3 ./test.py -f functions/function_percentile.py -r 1 +python3 ./test.py -f functions/function_spread.py -r 1 +python3 ./test.py -f functions/function_stddev.py -r 1 +python3 ./test.py -f functions/function_sum.py -r 1 +python3 ./test.py -f functions/function_top.py -r 1 +python3 ./test.py -f functions/function_sample.py -r 1 +python3 ./test.py -f functions/function_twa.py -r 1 +python3 ./test.py -f functions/function_twa_test2.py +python3 ./test.py -f functions/function_stddev_td2555.py +python3 ./test.py -f functions/showOfflineThresholdIs864000.py +python3 ./test.py -f functions/function_interp.py +#python3 ./test.py -f functions/queryTestCases.py +python3 ./test.py -f functions/function_stateWindow.py +python3 ./test.py -f functions/function_derivative.py +python3 ./test.py -f functions/function_irate.py +python3 ./test.py -f functions/function_ceil.py +python3 ./test.py -f functions/function_floor.py +python3 ./test.py -f functions/function_round.py +python3 ./test.py -f functions/function_elapsed.py +python3 ./test.py -f functions/function_mavg.py +python3 ./test.py -f functions/function_csum.py +python3 ./test.py -f functions/function_percentile2.py +python3 ./test.py -f functions/variable_httpDbNameMandatory.py + + diff --git a/tests/pytest/fulltest-tools.sh b/tests/pytest/fulltest-tools.sh new file mode 100644 index 0000000000000000000000000000000000000000..c4ac42cb57f84cd2f4769a2e1608508d68e6d1a6 --- /dev/null +++ b/tests/pytest/fulltest-tools.sh @@ -0,0 +1,44 @@ +#!/bin/bash +ulimit -c unlimited +#======================p1-start=============== +#======================p1-end=============== + +# tools +python3 test.py -f tools/taosdumpTest.py +python3 test.py -f tools/taosdumpTest2.py + +python3 test.py -f tools/taosdemoTest.py +python3 test.py -f tools/taosdemoTestWithoutMetric.py +python3 test.py -f tools/taosdemoTestWithJson.py +python3 test.py -f tools/taosdemoTestLimitOffset.py +python3 test.py -f tools/taosdemoTestTblAlt.py +python3 test.py -f tools/taosdemoTestSampleData.py +python3 test.py -f tools/taosdemoTestInterlace.py +# python3 test.py -f tools/taosdemoTestQuery.py +python3 ./test.py -f tools/taosdemoTestdatatype.py + +# nano support +python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanoInsert.py +python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanoQuery.py +python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestSupportNanosubscribe.py +python3 test.py -f tools/taosdemoAllTest/NanoTestCase/taosdemoTestInsertTime_step.py +python3 test.py -f tools/taosdumpTestNanoSupport.py +python3 test.py -f tools/taosdemoAllTest/taosdemoTestInsertWithJson.py +python3 test.py -f tools/taosdemoAllTest/taosdemoTestQueryWithJson.py +python3 test.py -f tools/taosdemoAllTest/taosdemoTestInsertAllType.py +python3 test.py -f tools/taosdemoAllTest/TD-4985/query-limit-offset.py +python3 test.py -f tools/taosdemoAllTest/TD-5213/insert4096columns_not_use_taosdemo.py +python3 test.py -f tools/taosdemoAllTest/TD-5213/insertSigcolumnsNum4096.py +#python3 test.py -f tools/taosdemoAllTest/TD-10539/create_taosdemo.py +python3 test.py -f tools/taosdemoAllTest/taosdemoTestInsertWithJsonStmt.py + + + + + + + + + + +