2018-07-28 14:38:08 +00:00
import pytest
from helpers . cluster import ClickHouseCluster
cluster = ClickHouseCluster ( __file__ )
2020-09-16 04:26:10 +00:00
node1 = cluster . add_instance ( ' node1 ' , user_configs = [ ' configs/config_no_substs.xml ' ] ) # hardcoded value 33333
node2 = cluster . add_instance ( ' node2 ' , user_configs = [ ' configs/config_env.xml ' ] ,
env_variables = { " MAX_QUERY_SIZE " : " 55555 " } )
2018-08-27 11:40:01 +00:00
node3 = cluster . add_instance ( ' node3 ' , user_configs = [ ' configs/config_zk.xml ' ] , with_zookeeper = True )
2020-09-16 04:26:10 +00:00
node4 = cluster . add_instance ( ' node4 ' , user_configs = [ ' configs/config_incl.xml ' ] ,
main_configs = [ ' configs/max_query_size.xml ' ] ) # include value 77777
2018-08-27 11:40:01 +00:00
node5 = cluster . add_instance ( ' node5 ' , user_configs = [ ' configs/config_allow_databases.xml ' ] )
2020-09-16 04:26:10 +00:00
node6 = cluster . add_instance ( ' node6 ' , user_configs = [ ' configs/config_include_from_env.xml ' ] ,
env_variables = { " INCLUDE_FROM_ENV " : " /etc/clickhouse-server/config.d/max_query_size.xml " } ,
main_configs = [ ' configs/max_query_size.xml ' ] )
2018-07-28 14:38:08 +00:00
@pytest.fixture ( scope = " module " )
def start_cluster ( ) :
try :
def create_zk_roots ( zk ) :
2020-10-02 16:54:07 +00:00
zk . create ( path = " /setting/max_query_size " , value = b " 77777 " , makepath = True )
2020-09-16 04:26:10 +00:00
2018-07-28 14:38:08 +00:00
cluster . add_zookeeper_startup_command ( create_zk_roots )
cluster . start ( )
yield cluster
finally :
cluster . shutdown ( )
2020-09-16 04:26:10 +00:00
2018-07-28 14:38:08 +00:00
def test_config ( start_cluster ) :
2020-09-16 04:26:10 +00:00
assert node1 . query ( " select value from system.settings where name = ' max_query_size ' " ) == " 33333 \n "
assert node2 . query ( " select value from system.settings where name = ' max_query_size ' " ) == " 55555 \n "
assert node3 . query ( " select value from system.settings where name = ' max_query_size ' " ) == " 77777 \n "
assert node4 . query ( " select value from system.settings where name = ' max_query_size ' " ) == " 99999 \n "
assert node6 . query ( " select value from system.settings where name = ' max_query_size ' " ) == " 99999 \n "
2018-08-14 02:18:57 +00:00
def test_allow_databases ( start_cluster ) :
node5 . query ( " CREATE DATABASE db1 " )
2020-09-16 04:26:10 +00:00
node5 . query (
" CREATE TABLE db1.test_table(date Date, k1 String, v1 Int32) ENGINE = MergeTree(date, (k1, date), 8192) " )
2018-08-14 02:18:57 +00:00
node5 . query ( " INSERT INTO db1.test_table VALUES( ' 2000-01-01 ' , ' test_key ' , 1) " )
assert node5 . query ( " SELECT name FROM system.databases WHERE name = ' db1 ' " ) == " db1 \n "
2020-09-16 04:26:10 +00:00
assert node5 . query (
" SELECT name FROM system.tables WHERE database = ' db1 ' AND name = ' test_table ' " ) == " test_table \n "
assert node5 . query (
" SELECT name FROM system.columns WHERE database = ' db1 ' AND table = ' test_table ' " ) == " date \n k1 \n v1 \n "
assert node5 . query (
" SELECT name FROM system.parts WHERE database = ' db1 ' AND table = ' test_table ' " ) == " 20000101_20000101_1_1_0 \n "
assert node5 . query (
" SELECT name FROM system.parts_columns WHERE database = ' db1 ' AND table = ' test_table ' " ) == " 20000101_20000101_1_1_0 \n 20000101_20000101_1_1_0 \n 20000101_20000101_1_1_0 \n "
2018-08-14 02:18:57 +00:00
2018-08-27 11:40:01 +00:00
assert node5 . query ( " SELECT name FROM system.databases WHERE name = ' db1 ' " , user = " test_allow " ) . strip ( ) == " "
2020-09-16 04:26:10 +00:00
assert node5 . query ( " SELECT name FROM system.tables WHERE database = ' db1 ' AND name = ' test_table ' " ,
user = " test_allow " ) . strip ( ) == " "
assert node5 . query ( " SELECT name FROM system.columns WHERE database = ' db1 ' AND table = ' test_table ' " ,
user = " test_allow " ) . strip ( ) == " "
assert node5 . query ( " SELECT name FROM system.parts WHERE database = ' db1 ' AND table = ' test_table ' " ,
user = " test_allow " ) . strip ( ) == " "
assert node5 . query ( " SELECT name FROM system.parts_columns WHERE database = ' db1 ' AND table = ' test_table ' " ,
user = " test_allow " ) . strip ( ) == " "