Files
doris/regression-test/suites/manager/test_manager_interface_1.groovy

812 lines
30 KiB
Groovy

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
import org.apache.doris.regression.suite.ClusterOptions
import org.apache.doris.regression.util.NodeType
import java.time.LocalDateTime
import java.time.Duration
import java.time.format.DateTimeFormatter
suite('test_manager_interface_1',"p0") {
logger.info("test_manager_interface_1 start")
sql """ switch internal """
String jdbcUrl = context.config.jdbcUrl
def tokens = context.config.jdbcUrl.split('/')
jdbcUrl=tokens[0] + "//" + tokens[2] + "/" + "?"
String jdbcUser = context.config.jdbcUser
String jdbcPassword = context.config.jdbcPassword
String s3_endpoint = getS3Endpoint()
String bucket = getS3BucketName()
String driver_url = "https://${bucket}.${s3_endpoint}/regression/jdbc_driver/mysql-connector-java-8.0.25.jar"
//select * from internal.information_schema.schemata
def test_schemata = {
logger.info("TEST select * from internal.information_schema.schemata");
List<List<Object>> schemata = sql """select * from internal.information_schema.schemata"""
for (int i = 0; i < schemata.size(); i++) {
assertTrue(!schemata[i][0].isEmpty()) // CATALOG_NAME
assertTrue(schemata[i][0].toLowerCase() != "null")
assertTrue(!schemata[i][1].isEmpty()) // SCHEMA_NAME
assertTrue(schemata[i][1].toLowerCase() != "null")
}
List<List<Object>> schemata2 = sql """select * from internal.information_schema.schemata where CATALOG_NAME = "internal" and SCHEMA_NAME = "__internal_schema" """
assertTrue(schemata2.size() == 1)
sql """ drop database if exists internal.test_information_schemata_1; """
sql """ create database internal.test_information_schemata_1; """
List<List<Object>> schemata3 = sql """select * from internal.information_schema.schemata where CATALOG_NAME = "internal" and SCHEMA_NAME = "test_information_schemata_1" """
assertTrue(schemata3.size() == 1)
sql """ drop database internal.test_information_schemata_1; """
List<List<Object>> schemata4 = sql """select * from internal.information_schema.schemata where CATALOG_NAME = "internal" and SCHEMA_NAME = "test_information_schemata_1" """
assertTrue(schemata4.size() == 0)
}
test_schemata()
//select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE from information_schema.tables
def test_information_tables = {
logger.info("TEST select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE from information_schema.tables")
List<List<Object>> result = sql """select TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE from information_schema.tables"""
for(int i = 0;i<result.size();i++) {
assertTrue(!result[i][0].isEmpty())
assertTrue(!result[i][1].isEmpty())
assertTrue(!result[i][2].isEmpty())
assertTrue(!result[i][3].isEmpty())
assertTrue(result[i][0].toLowerCase() != "null")
assertTrue(result[i][1].toLowerCase() != "null")
assertTrue(result[i][2].toLowerCase() != "null")
assertTrue(result[i][3].toLowerCase() != "null")
assertTrue( result[i][3] in ["SYSTEM VIEW","VIEW","BASE TABLE"] )
}
}
test_information_tables()
//select * from information_schema.metadata_name_ids
def test_metadata_name_ids = {
logger.info("TEST select * from information_schema.metadata_name_ids")
List<List<Object>> result = sql """select * from information_schema.metadata_name_ids """
def tableName = "internal.information_schema.metadata_name_ids"
sql """ create database if not exists test_manager_metadata_name_ids; """
sql """ use test_manager_metadata_name_ids ; """
qt_metadata_1 """ select CATALOG_NAME,DATABASE_NAME,TABLE_NAME from ${tableName}
where CATALOG_NAME="internal" and DATABASE_NAME ="test_manager_metadata_name_ids" """
sql """ create table if not exists test_metadata_name_ids (
a int ,
b varchar(30)
)
DUPLICATE KEY(`a`)
DISTRIBUTED BY HASH(`a`) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
); """
qt_metadata_2 """ select CATALOG_NAME,DATABASE_NAME,TABLE_NAME from ${tableName}
where CATALOG_NAME="internal" and DATABASE_NAME ="test_manager_metadata_name_ids" """
sql """ drop table test_metadata_name_ids """
qt_metadata_3 """ select CATALOG_NAME,DATABASE_NAME,TABLE_NAME from ${tableName}
where CATALOG_NAME="internal" and DATABASE_NAME ="test_manager_metadata_name_ids" and TABLE_NAME="test_metadata_name_ids";"""
}
test_metadata_name_ids()
//show catalogs
//alter catalog $old_name rename $new_name
//drop catalog $catalog_name
def test_catalogs = {
logger.info("TEST show/rename/drop catalogs")
def catalog_name = "test_manager_catalogs_case"
// println jdbcUrl
sql """ drop catalog if exists ${catalog_name}"""
sql """ CREATE CATALOG `${catalog_name}` PROPERTIES(
"user" = "${jdbcUser}",
"type" = "jdbc",
"password" = "${jdbcPassword}",
"jdbc_url" = "${jdbcUrl}",
"driver_url" = "${driver_url}",
"driver_class" = "com.mysql.cj.jdbc.Driver"
)"""
List<List<Object>> result = sql """ show catalogs """
//CatalogName
def x = 0
for( int i =0 ;i < result.size();i++ ) {
assertTrue(result[i][1].toLowerCase() != "null")
if ( result[i][1].toLowerCase() == catalog_name) {
x = 1
}
}
assertTrue(x == 1)
x = 0
sql """ alter catalog ${catalog_name} rename ${catalog_name}_rename """
result = sql """ show catalogs """
for( int i =0 ;i < result.size();i++ ) {
assertTrue(result[i][1].toLowerCase() != "null")
if ( result[i][1].toLowerCase() == catalog_name + "_rename") {
x = 1
}
}
assertTrue(x == 1)
x = 0
sql """ drop catalog ${catalog_name}_rename"""
result = sql """ show catalogs """
for( int i =0 ;i < result.size();i++ ) {
assertTrue(result[i][1].toLowerCase() != "null")
if ( result[i][1].toLowerCase() == catalog_name + "_rename") {
x = 1
}
}
assertTrue(x == 0)
}
test_catalogs()
//show databases
//alter database $old_name rename $new_name
//create database $database_name
def test_databases = {
logger.info("TEST show/rename/drop databases")
def databases_name = "test_manager_db_case"
sql """ switch internal """
sql """ drop database if exists ${databases_name} """
sql """ drop database if exists ${databases_name}_rename """
sql """ create database ${databases_name} """
List<List<Object>> result = sql """ show databases """
def x = 0
for( int i =0 ;i < result.size();i++ ) {
assert(result[i].size() == 1)
assertTrue(result[i][0].toLowerCase() != "null") //Database
if ( result[i][0].toLowerCase() == databases_name) {
x = 1
}
}
assertTrue(x == 1)
x = 0
sql """ alter database ${databases_name} rename ${databases_name}_rename """
result = sql """ show databases """
for( int i =0 ;i < result.size();i++ ) {
assertTrue(result[i][0].toLowerCase() != "null")
if ( result[i][0].toLowerCase() == databases_name + "_rename") {
x = 1
}
}
assertTrue(x == 1)
x = 0
sql """ drop database ${databases_name}_rename"""
result = sql """ show databases """
for( int i =0 ;i < result.size();i++ ) {
assertTrue(result[i][0].toLowerCase() != "null")
if ( result[i][0].toLowerCase() == databases_name + "_rename") {
x = 1
}
}
assertTrue(x == 0)
}
test_databases()
// show tables && show tables like '$table_name'
//desc $table_name && desc $table_name all
//show create table '$table_name'
//drop tables
def test_show_tables = {
sql """ drop database if exists test_manager_tb_case """
sql """create database test_manager_tb_case"""
sql """ use test_manager_tb_case """
List<List<Object>> result = sql """ show tables """
assertTrue(result.size() == 0)
result = sql """ show tables like 'test_manager_tb%' """
assertTrue(result.size() == 0)
sql """
create table test_manager_tb_1
(
k1 TINYINT,
k2 DECIMAL(10, 2) DEFAULT "10.05",
k3 CHAR(10) COMMENT "string column",
k4 INT NOT NULL DEFAULT "1" COMMENT "int column",
k5 STRING
) COMMENT "manager_test_table"
DISTRIBUTED BY HASH(k1) BUCKETS 1
PROPERTIES ('replication_num' = '1',
"bloom_filter_columns" = "k3,k5"
);"""
qt_tables_1 """ desc test_manager_tb_1 """
qt_tables_2 """ desc test_manager_tb_1 all"""
result = sql """ show tables """
assertTrue(result.size() == 1)
assertTrue(result[0].size() == 1)
assertTrue(result[0][0].toLowerCase() == "test_manager_tb_1")
result = sql """ show tables like 'test_manager_tb%' """
assertTrue(result.size() == 1)
assertTrue(result[0].size() == 1)
assertTrue(result[0][0].toLowerCase() == "test_manager_tb_1")
result = sql """ show create table test_manager_tb_1"""
logger.info ("result = ${result}")
assertTrue(result[0][0] == "test_manager_tb_1") // TABLE NAME
// assertTrue(result[0][1].substring() == "test_manager_tb_1") //DDL
def ddl_str = result[0][1]
def idx = ddl_str.indexOf("PROPERTIES")
assertTrue(idx != -1 );
assertTrue( ddl_str.startsWith("""CREATE TABLE `test_manager_tb_1` (
`k1` tinyint NULL,
`k2` decimal(10,2) NULL DEFAULT "10.05",
`k3` char(10) NULL COMMENT 'string column',
`k4` int NOT NULL DEFAULT "1" COMMENT 'int column',
`k5` text NULL
) ENGINE=OLAP
DUPLICATE KEY(`k1`, `k2`, `k3`)
COMMENT 'manager_test_table'
DISTRIBUTED BY HASH(`k1`) BUCKETS 1"""))
sql """ drop table test_manager_tb_1 """
result = sql """ show tables """
assertTrue(result.size() == 0)
result = sql """ show tables like 'test_manager_tb%' """
assertTrue(result.size() == 0)
sql """ drop database test_manager_tb_case """
}
test_show_tables()
//alter table $table_name set ("$key" = "$value")
def test_tables_PROPERTIES = {
sql """ drop database if exists test_manager_tb_properties_case FORCE"""
sql """create database test_manager_tb_properties_case"""
sql """ use test_manager_tb_properties_case """
sql """ create table test_manager_tb_2
(
k1 TINYINT,
k2 DECIMAL(10, 2) DEFAULT "10.05",
k3 CHAR(10) COMMENT "string column",
k4 INT NOT NULL DEFAULT "1" COMMENT "int column",
k5 STRING
) COMMENT "manager_test_table"
DISTRIBUTED BY HASH(k1) BUCKETS 1
PROPERTIES ('replication_num' = '1',
"bloom_filter_columns" = "k3"
);"""
List<List<Object>> result = sql """ show create table test_manager_tb_2 """
logger.info("result = ${result}" )
assertTrue(result.size() == 1)
assertTrue(result[0][0] == "test_manager_tb_2")
def ddl_str = result[0][1]
def idx = ddl_str.indexOf("min_load_replica_num")
assertTrue( ddl_str.substring(idx,ddl_str.length()).startsWith("""min_load_replica_num" = "-1"""))
sql """alter table test_manager_tb_2 set ("min_load_replica_num" = "1")"""
result = sql """ show create table test_manager_tb_2 """
assertTrue(result[0][0] == "test_manager_tb_2")
ddl_str = result[0][1]
idx = ddl_str.indexOf("min_load_replica_num")
assertTrue( ddl_str.substring(idx,ddl_str.length()).startsWith("""min_load_replica_num" = "1"""))
sql """ DROP table test_manager_tb_2 FORCE"""
sql """ drop database test_manager_tb_properties_case FORCE"""
}
test_tables_PROPERTIES()
// show table status from $db_name like '$table_name'
def test_tables_status = {
sql """ drop database if exists test_manager_tb_case_3 """
sql """create database test_manager_tb_case_3 """
sql """ use test_manager_tb_case_3 """
def formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
def now = LocalDateTime.now()
def formattedNow = now.format(formatter)
logger.info( " NOW TIME = ${formattedNow} " )
sql """ create table test_manager_tb
(
k1 TINYINT,
k2 CHAR(10) COMMENT "string column",
k3 INT NOT NULL DEFAULT "1" COMMENT "int column",
) COMMENT "manager_test_table"
DISTRIBUTED BY HASH(k1) BUCKETS 1
PROPERTIES ('replication_num' = '1');"""
List<List<Object>> result = sql """ show table status from test_manager_tb_case_3 like 'test_manager_tb%' """
logger.info("result = ${result}" )
assertTrue(result[0][4] == 0 )// Rows
def create_time = result[0][11] //Create_time
def duration = Duration.between(now, create_time)
assertTrue(Math.abs(duration.toHours()) < 2)
logger.info( "table test_manager_tb Create TIME = ${create_time} " )
def update_time1 = result[0][12]//Update_time
duration = Duration.between(now, update_time1)
assertTrue(Math.abs(duration.toHours()) < 2)
logger.info( "table test_manager_tb Update TIME = ${update_time1} " )
assertTrue( "manager_test_table" == result[0][17] ) //Comment
result = sql """ insert into test_manager_tb values (1,"hell0",10);"""
assertTrue(result[0][0] == 1)
result = sql """insert into test_manager_tb values (2,"hell0",20); """
assertTrue(result[0][0] == 1)
result = sql """insert into test_manager_tb values (3,"hell0",30);"""
assertTrue(result[0][0] == 1)
result = sql """ insert into test_manager_tb values (4,"hell0",40);"""
assertTrue(result[0][0] == 1)
result = sql """ insert into test_manager_tb values (5,"hell0",50); """
assertTrue(result[0][0] == 1)
def j = 0 ;
def retryTime = 100;
for (j =0 ;j < retryTime;j++) {
sql """ select * from test_manager_tb_case_3.test_manager_tb; """
result = sql """ show table status from test_manager_tb_case_3 like 'test_manager_tb%' """
if ( result[0][4] == 5) {
assert( create_time == result[0][11])//Create_time
assertTrue( "manager_test_table" == result[0][17] ) //Comment
def update_time2 = result[0][12] //Update_time
duration = Duration.between(now, update_time2)
assertTrue(Math.abs(duration.toHours()) < 5)
logger.info( "table test_manager_tb Update TIME = ${update_time2} " )
break;
}
sleep(10000)
}
if (j == retryTime) {
logger.info("result = ${result}" )
logger.info(" TEST show table status from $db_name like '$table_name';ROWS UPDATE FAIL.");
assertTrue(false);
}
sql """ drop table test_manager_tb """
sql """ drop database if exists test_manager_tb_case_3 """
}
test_tables_status()
//show index from '$table_name'
def test_table_index = {
sql """ drop database if exists test_manager_tb_case_4 """
sql """create database test_manager_tb_case_4 """
sql """ use test_manager_tb_case_4 """
sql """
create table test_manager_tb
(
k1 TINYINT,
k2 CHAR(10) COMMENT "string column",
k3 INT NOT NULL DEFAULT "1" COMMENT "int column",
) COMMENT "manager_test_table"
DISTRIBUTED BY HASH(k1) BUCKETS 1
PROPERTIES ('replication_num' = '1',
"bloom_filter_columns" = "k2");"""
List<List<Object>> result = sql """ insert into test_manager_tb values (5,"hell0",50); """
logger.info("result = ${result}" )
assertTrue(result[0][0] == 1)
result = sql """ insert into test_manager_tb values (5,"hell0",50); """
assertTrue(result[0][0] == 1)
result = sql """ insert into test_manager_tb values (5,"hell0",50); """
assertTrue(result[0][0] == 1)
result = sql """ insert into test_manager_tb values (5,"hell0",50); """
assertTrue(result[0][0] == 1)
result = sql """ insert into test_manager_tb values (5,"hell0",50); """
assertTrue(result[0][0] == 1)
sql """ CREATE INDEX bitmap_index_name ON test_manager_tb (k1) USING BITMAP COMMENT 'bitmap_k1'; """
def j = 0 ;
def retryTime = 100;
for (j =0 ;j < retryTime;j++) {
result = sql """ show index from test_manager_tb; """
if (result.size() == 1){
break;
}
sleep(1000);
}
logger.info("result = ${result}" )
if (j == retryTime) {
logger.info(" TEST show index from '$table_name' FAIL.");
assertTrue(false);
}
assertTrue(result[0][2] == "bitmap_index_name" )//Key_name
assertTrue(result[0][4] == "k1" )//Column_name
assertTrue(result[0][10] == "BITMAP" || result[0][10] == "INVERTED" ) //BITMAP
assertTrue(result[0][11] == "bitmap_k1" ) //bitmap_siteid
sql """ drop INDEX bitmap_index_name on test_manager_tb;"""
sql """ drop table test_manager_tb FORCE """
sql """ drop database if exists test_manager_tb_case_4 FORCE"""
}
test_table_index()
// show proc '/current_query_stmts'
// show proc '/current_queries'
// show processlist
// kill query $query_id
// SHOW PROC '/cluster_health/tablet_health'
def test_proc = {
def futures = []
futures.add( thread {
try{
sql """ select sleep(4.809); """
}catch(Exception e){
}
})
futures.add( thread {
sleep(1000);
List<List<Object>> result = sql """ show proc '/current_query_stmts' """
logger.info("result = ${result}" )
def x = 0
def queryid = ""
logger.info("result = ${result}")
for( int i = 0;i<result.size();i++) {
if (result[i][7] != null && result[i][7].contains("sleep(4.809)") )//Statement
{
x = 1
queryid = result[i][0]
logger.info("query ID = ${queryid}")
assertTrue(result[i][0]!= null) //QueryId
assertTrue(result[i][1]!= null) //ConnectionId
assertTrue(result[i][2]!= null)//Catalog
assertTrue(result[i][3]!= null)//Database
assertTrue(result[i][4]!= null)//User
assertTrue(result[i][5]!= null)//ExecTime
assertTrue(result[i][5].isNumber())//ExecTime
assertTrue(result[i][6]!= null)//SqlHash
}
}
assertTrue(x == 1)
x = 0
result = sql """ show proc '/current_queries' """
logger.info("result = ${result}")
for( int i = 0;i<result.size();i++) {
if (result[i][0] == queryid )//QueryId
{
x = 1
assertTrue(result[i][5]!= null)//ScanBytes
assertTrue(result[i][6]!= null)//ProcessBytes
}
}
assertTrue(x == 1)
result = sql """ show processlist """
logger.info("result = ${result}")
for( int i =0 ;i < result.size();i++ ){
assertTrue( result[i][2].toLowerCase() != "null" )//User
assertTrue( result[i][3].toLowerCase() != "null" )//Host
assertTrue( result[i][5].toLowerCase() != "null" )//Catalog
assertTrue( result[i][6].toLowerCase() != "null" )//Db
assertTrue( result[i][10].toLowerCase() != "null" )//QueryId
if (result[i][10] == queryid) {
x = 1
}
}
assertTrue(x == 1)
sql """ kill query "${queryid}" """
x = 0
sleep(5000)
result = sql """ show proc '/current_queries' """
logger.info("result = ${result}")
for( int i = 0;i<result.size();i++) {
if (result[i][0] == queryid )//QueryId
{
x = 1
}
}
assertTrue(x == 0)
})
futures.each { it.get() }
def tablet_num = 0;
def healthy_num = 0;
def total_tablet_num = 0;
def total_healthy_num = 0;
result = sql """ SHOW PROC '/cluster_health/tablet_health' """
logger.info("result = ${result}" )
for( int i =0 ;i < result.size();i++ ){
assertTrue(result[i][0].toLowerCase() != null ) // DbId
if (result[i][0].toLowerCase() == "total") {
total_tablet_num = result[i][2].toBigInteger();
total_healthy_num = result[i][3].toBigInteger();
}else {
tablet_num += result[i][2].toBigInteger();
healthy_num += result[i][3].toBigInteger();
}
// assertTrue(result[i][2]()) // TabletNum
// assertTrue(result[i][3]()) // HealthyNum
}
assertTrue(total_healthy_num == healthy_num )
assertTrue(total_healthy_num == healthy_num )
}
test_proc();
//select a.*, b.*, c.NAME as WORKLOAD_GROUP_NAME from information_schema.active_queries a left join information_schema.backend_active_tasks b on a.QUERY_ID = b.QUERY_ID left join information_schema.workload_groups c on a.WORKLOAD_GROUP_ID = c.ID
def test_active_query = {
List<List<Object>> result = sql """ select 1;"""
def futures = []
futures.add( thread {
try{
sql """ select sleep(4.7676); """
}catch(Exception e){
}
})
futures.add( thread {
sleep(1500)
result = sql """
select a.*, b.*, c.NAME as WORKLOAD_GROUP_NAME from information_schema.active_queries a left join
information_schema.backend_active_tasks b on a.QUERY_ID = b.QUERY_ID left join information_schema.workload_groups c on a.WORKLOAD_GROUP_ID = c.ID
"""
logger.info("result = ${result}")
def x = 0
def queryId = ""
for( int i =0 ;i < result.size();i++ ){
assertTrue(result[i][0] != null ) // QueryId
if ( result[i][9].contains("sleep(4.7676)") ){
x = 1
queryId = result[i][0]
logger.info("result = ${queryId}}")
assertTrue(result[i][2]!=null) // QUERY_TIME_MS
assertTrue(result[i][14]!=null) // TASK_CPU_TIME_MS
assertTrue(result[i][15].toBigInteger() ==0 ) // SCAN_ROWS
assertTrue(result[i][16].toBigInteger() ==0)//SCAN_BYTES
assertTrue(result[i][19].toBigInteger() ==0) // SHUFFLE_SEND_BYTES
assertTrue(result[i][20].toBigInteger() ==0) // SHUFFLE_SEND_ROWS
assertTrue(result[i][18]!=null) // CURRENT_USED_MEMORY_BYTES
assertTrue(result[i][22]!=null) // WORKLOAD_GROUP_NAME
}
}
assertTrue(x == 1)
sql """ kill query "${queryId}" """
})
futures.each { it.get() }
}
test_active_query()
//select * from __internal_schema.audit_log
def test_audit_log = {
sql """ set global enable_audit_plugin = true; """
List<List<Object>> result =sql """ show create table __internal_schema.audit_log; """
logger.info("result = ${result}" )
assertTrue(result[0][0] == "audit_log")
assertTrue(result[0][1].contains("CREATE TABLE `audit_log`"))
assertTrue(result[0][1].contains("`query_id` varchar(48) NULL,"))
assertTrue(result[0][1].contains("`time` datetime(3) NULL,"))
assertTrue(result[0][1].contains("`client_ip` varchar(128) NULL,"))
assertTrue(result[0][1].contains("`user` varchar(128) NULL,"))
assertTrue(result[0][1].contains("`catalog` varchar(128) NULL"))
assertTrue(result[0][1].contains("`db` varchar(128) NULL,"))
assertTrue(result[0][1].contains("`state` varchar(128) NULL"))
assertTrue(result[0][1].contains("`error_code` int NULL,"))
assertTrue(result[0][1].contains("`error_message` text NULL,"))
assertTrue(result[0][1].contains("`query_time` bigint NULL,"))
assertTrue(result[0][1].contains("`scan_bytes` bigint NULL,"))
assertTrue(result[0][1].contains("`scan_rows` bigint NULL,"))
assertTrue(result[0][1].contains("`return_rows` bigint NULL,"))
assertTrue(result[0][1].contains("`stmt_id` bigint NULL,"))
assertTrue(result[0][1].contains("`is_query` tinyint NULL,"))
assertTrue(result[0][1].contains("`frontend_ip` varchar(128) NULL,"))
assertTrue(result[0][1].contains("`cpu_time_ms` bigint NULL,"))
assertTrue(result[0][1].contains("`sql_hash` varchar(128) NULL,"))
assertTrue(result[0][1].contains("`sql_digest` varchar(128) NULL,"))
assertTrue(result[0][1].contains("`peak_memory_bytes` bigint NULL,"))
assertTrue(result[0][1].contains("`workload_group` text NULL,"))
assertTrue(result[0][1].contains("`stmt` text NULL"))
assertTrue(result[0][1].contains("ENGINE=OLAP"))
assertTrue(result[0][1].contains("DUPLICATE KEY(`query_id`, `time`, `client_ip`)"))
assertTrue(result[0][1].contains("""PARTITION BY RANGE(`time`)"""))
assertTrue(result[0][1].contains("""dynamic_partition.enable" = "true"""))
assertTrue(result[0][1].contains("""dynamic_partition.time_unit" = "DAY"""))
assertTrue(result[0][1].contains("""dynamic_partition.start" = "-30"""))
sql """ set global enable_audit_plugin = false; """
}
test_audit_log()
// admin show frontend config
//show frontend config
// admin set frontend config($key = $value)
// set global $key = $value
// show global variables like '%$key'
//show variables like "%version_comment%";
def test_config = {
List<List<Object>> result = sql """
admin show frontend config
"""
logger.info("result = ${result}" )
def x = 0;
def val = 0;
for(int i = 0 ;i<result.size();i++) {
if (result[i][0] == "query_metadata_name_ids_timeout"){
x = 1
val = result[i][1].toBigInteger() + 2
assertTrue( result[i][2] =="long" )
assertTrue( result[i][3] =="true" )
assertTrue( result[i][4] == "false")
}
}
assertTrue(x == 1);
sql """ admin set frontend config("query_metadata_name_ids_timeout"= "${val}")"""
result = sql """
admin show frontend config
"""
logger.info("result = ${result}" )
x = 0
for(int i = 0 ;i<result.size();i++) {
if (result[i][0] == "query_metadata_name_ids_timeout"){
x = 1
assertTrue( result[i][1] =="${val}" )
assertTrue( result[i][2] =="long" )
assertTrue( result[i][3] =="true" )
assertTrue( result[i][4] == "false")
}
}
assertTrue(x == 1);
val -= 2
sql """ admin set frontend config("query_metadata_name_ids_timeout"= "${val}")"""
logger.info("result = ${result}" )
x = 0
result = sql """ show global variables like "create_table_partition_max_num" """
logger.info("result = ${result}" )
assert(result[0][0] == "create_table_partition_max_num")
val = result[0][1].toBigInteger() + 1 ;
assert(result[0][2] == "10000")
sql """ set global create_table_partition_max_num = ${val} """
result = sql """ show global variables like "create_table_partition_max_num" """
logger.info("result = ${result}" )
assert(result[0][1].toBigInteger() == val)
val -= 1
sql """ set global create_table_partition_max_num = ${val} """
logger.info("result = ${result}" )
result = sql """ show frontend config """
x = 0
for(int i = 0 ;i<result.size();i++) {
if (result[i][0] == "edit_log_type") {
assertTrue( result[i][1] =="bdb" )
assertTrue( result[i][2] =="String")
assertTrue( result[i][3] =="false" )
assertTrue( result[i][4] == "false")
x = 1
}
}
assert(x == 1)
result = sql """ show variables like "%version_comment%"; """
assertTrue(result.size() == 1)
assertTrue(result[0][0] == "version_comment")
}
test_config();
logger.info("test_manager_interface_1 end")
}