865 lines
26 KiB
Python
865 lines
26 KiB
Python
#!/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
# 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.
|
|
|
|
"""
|
|
test user privilege on palo
|
|
Date: 2015/08/10 11:07:32
|
|
"""
|
|
from data import privilege as DATA
|
|
from data import schema
|
|
from lib import palo_client
|
|
from lib import palo_config
|
|
from lib import util
|
|
from lib import palo_task
|
|
from lib import palo_job
|
|
|
|
config = palo_config.config
|
|
root_client = None
|
|
super_client = None
|
|
user_client = None
|
|
backend_list = ["be_fake:9850"]
|
|
|
|
|
|
def setup_module():
|
|
"""
|
|
set up
|
|
"""
|
|
global root_client, super_client, user_client
|
|
root_client = palo_client.PaloClient(config.fe_host, config.fe_query_port,
|
|
user="root", password=config.fe_password)
|
|
assert root_client.init()
|
|
super_user = "super_user"
|
|
try:
|
|
root_client.drop_user(super_user)
|
|
except:
|
|
pass
|
|
ret = root_client.create_user(super_user, password=super_user, is_superuser=True)
|
|
assert ret
|
|
super_client = palo_client.PaloClient(config.fe_host, config.fe_query_port,
|
|
user=super_user, password=super_user)
|
|
assert super_client.init()
|
|
normal_user = "normal_user"
|
|
try:
|
|
super_client.drop_user(normal_user)
|
|
except:
|
|
pass
|
|
ret = super_client.create_user(normal_user, password=normal_user)
|
|
assert ret
|
|
user_client = palo_client.PaloClient(config.fe_host, config.fe_query_port,
|
|
user=normal_user, password=normal_user)
|
|
assert user_client.init()
|
|
|
|
|
|
def test_root():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_root",
|
|
"describe": "root权限:1. CREATE SUPERUSER 2. SET PASSWORD 3. DROP SUPERUSER",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""
|
|
root权限:
|
|
1. CREATE SUPERUSER
|
|
2. SET PASSWORD
|
|
3. DROP SUPERUSER
|
|
"""
|
|
#CREATE SUPERUSER
|
|
superuser = "test_root"
|
|
try:
|
|
root_client.drop_user(superuser)
|
|
except:
|
|
pass
|
|
ret = root_client.create_user(superuser, is_superuser=True)
|
|
assert ret
|
|
#SET PASSWORD
|
|
ret = root_client.set_password(superuser, superuser)
|
|
assert ret
|
|
assert palo_client.PaloClient(config.fe_host, config.fe_query_port, \
|
|
user=superuser, password=superuser).init()
|
|
#DROP SUPERUSER
|
|
ret = root_client.drop_user(superuser)
|
|
assert ret
|
|
try:
|
|
root_client.drop_backend_list(backend_list)
|
|
except:
|
|
pass
|
|
ret = root_client.add_backend_list(backend_list)
|
|
assert ret
|
|
ret = root_client.drop_backend_list(backend_list)
|
|
assert ret
|
|
|
|
|
|
def test_superuser_denied():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_superuser_denied",
|
|
"describe": "superuser无权限: 1. ALTER CLUSTER, superuser有权限:1. CREATE SUPERUSER,2. DROP SUPERUSE",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""
|
|
superuser无权限:
|
|
1. ALTER CLUSTER
|
|
superuser有权限:
|
|
1. CREATE SUPERUSER
|
|
2. DROP SUPERUSE
|
|
"""
|
|
#CREATE SUPERUSER
|
|
superuser = "test_superuser_denied"
|
|
try:
|
|
root_client.drop_user(superuser)
|
|
except Exception as e:
|
|
pass
|
|
ret = super_client.create_user(superuser, is_superuser=True)
|
|
assert ret
|
|
#DROP SUPERUSER
|
|
ret = super_client.drop_user(superuser)
|
|
assert ret
|
|
#ALTER CLUSTER
|
|
try:
|
|
root_client.drop_backend_list(backend_list)
|
|
except:
|
|
pass
|
|
try:
|
|
super_client.add_backend_list(backend_list)
|
|
except:
|
|
pass
|
|
else:
|
|
assert False
|
|
try:
|
|
ret = root_client.add_backend_list(backend_list)
|
|
except:
|
|
pass
|
|
# assert ret
|
|
try:
|
|
super_client.drop_backend_list(backend_list)
|
|
except:
|
|
pass
|
|
else:
|
|
assert False
|
|
ret = root_client.drop_backend_list(backend_list)
|
|
assert ret
|
|
|
|
|
|
def test_user_denied():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_user_denied",
|
|
"describe": "普通用户无权限:CREATE USER, DROP USER, CREATE DATABASE, DROP DATABASE, SHOW PROC",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""
|
|
普通用户无权限:
|
|
1. CREATE USER
|
|
2. DROP USER
|
|
3. CREATE DATABASE
|
|
4. DROP DATABASE
|
|
5. SHOW PROC
|
|
"""
|
|
user = "test_user_denied"
|
|
#CREATE USER
|
|
try:
|
|
root_client.drop_user(user)
|
|
except:
|
|
pass
|
|
try:
|
|
user_client.create_user(user)
|
|
except:
|
|
pass
|
|
else:
|
|
assert False
|
|
ret = root_client.create_user(user)
|
|
assert ret
|
|
#DROP USER
|
|
try:
|
|
user_client.drop_user(user)
|
|
except:
|
|
pass
|
|
else:
|
|
assert False
|
|
ret = root_client.drop_user(user)
|
|
assert ret
|
|
database_name = "test_user_denied"
|
|
try:
|
|
root_client.drop_database(database_name)
|
|
except:
|
|
pass
|
|
#CREATE DATABASE
|
|
try:
|
|
user_client.create_database(database_name)
|
|
except:
|
|
pass
|
|
else:
|
|
assert False
|
|
ret = root_client.create_database(database_name)
|
|
assert ret
|
|
#DROP DATABASE
|
|
try:
|
|
user_client.drop_database(database_name)
|
|
except:
|
|
pass
|
|
else:
|
|
assert False
|
|
ret = root_client.drop_database(database_name)
|
|
assert ret
|
|
#SHOW PROC
|
|
try:
|
|
# user_client.get_database_list()
|
|
user_client.execute('show proc "/"')
|
|
except:
|
|
pass
|
|
else:
|
|
assert False
|
|
|
|
|
|
def test_user_no_grant():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_user_no_grant",
|
|
"describe": "普通用户对没有grant的数据库没有权限",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""
|
|
普通用户对没有grant的数据库没有权限
|
|
"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
init(database_name)
|
|
ret = user_client.use(database_name)
|
|
assert not ret
|
|
try:
|
|
user_client.drop_database(database_name)
|
|
except:
|
|
pass
|
|
else:
|
|
assert False
|
|
ret = root_client.drop_database(database_name)
|
|
assert ret
|
|
|
|
|
|
def test_read_only():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_read_only",
|
|
"describe": "只读用户没有写权限",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""
|
|
只读用户没有写权限
|
|
"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
user = "test_read_only"
|
|
try:
|
|
super_client.drop_user(user)
|
|
except:
|
|
pass
|
|
ret = super_client.create_user(user)
|
|
assert ret
|
|
client = palo_client.PaloClient(config.fe_host, config.fe_query_port, user=user, password='')
|
|
assert client.init()
|
|
init(database_name)
|
|
ret = super_client.grant(user, "READ_ONLY", database_name)
|
|
assert ret
|
|
database_list = client.execute("SHOW DATABASES")
|
|
assert (database_name, ) in database_list
|
|
try:
|
|
client.create_table(table_name, DATA.column_list, database_name=database_name)
|
|
except:
|
|
pass
|
|
else:
|
|
assert False
|
|
ret = super_client.grant(user, "READ_WRITE", database_name)
|
|
assert ret
|
|
ret = client.create_table(table_name, DATA.column_list, database_name=database_name)
|
|
assert ret
|
|
|
|
|
|
def init(database_name):
|
|
"""
|
|
建库
|
|
"""
|
|
root_client.clean(database_name)
|
|
ret = root_client.create_database(database_name)
|
|
assert ret
|
|
|
|
|
|
def test_roles():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_roles",
|
|
"describe": "1. 创建role,2. 给role赋权,3. 创建用户指定role,4. revoke role的权限,5. 删除role",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""
|
|
1. 创建role
|
|
2. 给role赋权
|
|
3. 创建用户指定role
|
|
4. revoke role的权限
|
|
5. 删除role
|
|
"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
init(database_name=database_name)
|
|
table1 = table_name + '_1'
|
|
table2 = table_name + '_2'
|
|
assert root_client.create_table(table1, DATA.column_list, database_name=database_name)
|
|
assert root_client.create_table(table2, DATA.column_list, database_name=database_name)
|
|
# create role
|
|
roles1 = 'role_for_test1'
|
|
roles2 = 'role_for_test2'
|
|
try:
|
|
root_client.drop_role(roles1)
|
|
root_client.drop_role(roles2)
|
|
except Exception as e:
|
|
pass
|
|
assert root_client.create_role(roles1)
|
|
assert root_client.create_role(roles2)
|
|
|
|
# grant role
|
|
assert root_client.grant(roles1, ['SELECT_PRIV'], database_name, is_role=True)
|
|
assert root_client.grant(roles2, ['SELECT_PRIV'], '%s.%s' % (database_name, table1), is_role=True)
|
|
|
|
# create user with role
|
|
user1 = 'test_role_user1'
|
|
user2 = 'test_role_user2'
|
|
try:
|
|
root_client.drop_user(user1)
|
|
root_client.drop_user(user2)
|
|
except Exception as e:
|
|
pass
|
|
assert root_client.create_user(user1, password=user1, default_role=roles1)
|
|
assert root_client.create_user(user2, password=user2, default_role=roles2)
|
|
test_client1 = palo_client.PaloClient(config.fe_host, config.fe_query_port, user=user1,
|
|
password=user1, database_name=database_name)
|
|
assert test_client1.init()
|
|
test_client2 = palo_client.PaloClient(config.fe_host, config.fe_query_port, user=user1,
|
|
password=user1, database_name=database_name)
|
|
assert test_client2.init()
|
|
# check priv
|
|
ret = test_client1.select_all(table1)
|
|
assert ret == ()
|
|
ret = test_client1.select_all(table2)
|
|
assert ret == ()
|
|
ret = test_client2.select_all(table1)
|
|
assert ret == ()
|
|
try:
|
|
test_client2.select_all(table2)
|
|
assert 0 == 1
|
|
except Exception as e:
|
|
pass
|
|
# revoke
|
|
ret = root_client.revoke(roles1, ['SELECT_PRIV'], database_name, is_role=True)
|
|
assert ret
|
|
# revoke check
|
|
try:
|
|
test_client1.connect()
|
|
ret = test_client1.use(database_name)
|
|
assert not ret
|
|
ret = test_client1.select_all(table2)
|
|
assert 0 == 1, 'can not select'
|
|
except Exception as e:
|
|
pass
|
|
# drop
|
|
root_client.drop_user(user1)
|
|
root_client.drop_user(user2)
|
|
root_client.drop_role(roles1)
|
|
root_client.drop_role(roles2)
|
|
root_client.clean(database_name)
|
|
|
|
|
|
def test_grant():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_grant",
|
|
"describe": "1. grant db,2. grant table,3. grant to user,4. grant to role,5. show grants",
|
|
"tag": "function,p1"
|
|
}
|
|
"""
|
|
"""
|
|
1. grant db
|
|
2. grant table
|
|
3. grant to user
|
|
4. grant to role
|
|
5. show grants
|
|
"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
init(database_name=database_name)
|
|
table1 = table_name + '_1'
|
|
table2 = table_name + '_2'
|
|
assert root_client.create_table(table1, DATA.column_list, database_name=database_name)
|
|
assert root_client.create_table(table2, DATA.column_list, database_name=database_name)
|
|
# create role and usesr; grant
|
|
test_role = 'grant_to_role'
|
|
test_user = 'grant_to_user'
|
|
test_user1 = 'job'
|
|
test_user2 = 'task'
|
|
try:
|
|
root_client.drop_role(test_role)
|
|
root_client.drop_user(test_user)
|
|
root_client.drop_user(test_user1)
|
|
root_client.drop_user(test_user2)
|
|
except Exception as e:
|
|
pass
|
|
assert root_client.create_role(test_role)
|
|
assert root_client.create_user(test_user)
|
|
assert root_client.grant(test_role, ['SELECT_PRIV', 'LOAD_PRIV', 'CREATE_PRIV'],
|
|
'%s.*' % database_name, is_role=True)
|
|
assert root_client.grant(test_user, ['SELECT_PRIV', 'LOAD_PRIV'], database_name)
|
|
# check user grant
|
|
ret = root_client.get_grant(test_user)
|
|
db_privs = palo_job.GrantInfo(ret[0]).get_database_privs()
|
|
tmp = '%s: Select_priv Load_priv' % (database_name)
|
|
assert db_privs.find(tmp) != -1, 'expect contains: %s, actural: %s' % (tmp, db_privs)
|
|
# CREATE USER ON ROLE, CHECK USER PRIV
|
|
assert root_client.create_user(test_user1, password=test_user, default_role=test_role)
|
|
ret = root_client.get_grant(test_user1)
|
|
db_privs = palo_job.GrantInfo(ret[0]).get_database_privs()
|
|
tmp = '%s: Select_priv Load_priv Create_priv' % (database_name)
|
|
assert db_privs.find(tmp) != -1
|
|
assert root_client.create_user(test_user2, password=test_user)
|
|
assert root_client.grant(test_user2, ['SELECT_PRIV'], database_name, table1)
|
|
ret = root_client.get_grant(test_user2)
|
|
table_privs = palo_job.GrantInfo(ret[0]).get_table_privs()
|
|
print(table_privs)
|
|
tmp = '%s.%s: Select_priv' % (database_name, table1)
|
|
assert table_privs.find(tmp) != -1
|
|
# clean
|
|
root_client.drop_role(test_role)
|
|
root_client.drop_user(test_user)
|
|
root_client.drop_user(test_user1)
|
|
root_client.drop_user(test_user2)
|
|
root_client.clean(database_name)
|
|
|
|
|
|
def test_revoke():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_revoke",
|
|
"describe": "1. revoke某个用户/role的table的权限, 2. revoke某个用户/role的db的权限, 3. show grant查看",
|
|
"tag": "function,p1"
|
|
}
|
|
"""
|
|
"""
|
|
1. revoke某个用户/role的table的权限
|
|
2. revoke某个用户/role的db的权限
|
|
3. show grant查看
|
|
"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
init(database_name=database_name)
|
|
table1 = table_name + '_1'
|
|
table2 = table_name + '_2'
|
|
assert root_client.create_table(table1, DATA.column_list, database_name=database_name)
|
|
assert root_client.create_table(table2, DATA.column_list, database_name=database_name)
|
|
# create user and grant
|
|
test_role = 'revoke_to_role'
|
|
test_user = 'revoke_to_user'
|
|
test_user1 = 'revoke_job'
|
|
test_user2 = 'revoke_task'
|
|
try:
|
|
root_client.drop_role(test_role)
|
|
root_client.drop_user(test_user)
|
|
root_client.drop_user(test_user1)
|
|
root_client.drop_user(test_user2)
|
|
except Exception as e:
|
|
pass
|
|
assert root_client.create_role(test_role)
|
|
assert root_client.create_user(test_user)
|
|
assert root_client.grant(test_role, ['SELECT_PRIV', 'LOAD_PRIV', 'CREATE_PRIV'],
|
|
'%s.*' % database_name, is_role=True)
|
|
assert root_client.grant(test_user, ['SELECT_PRIV', 'LOAD_PRIV'], database_name)
|
|
# CHECK USER PRIV
|
|
ret = root_client.get_grant(test_user)
|
|
db_privs = palo_job.GrantInfo(ret[0]).get_database_privs()
|
|
tmp = '%s: Select_priv Load_priv' % (database_name)
|
|
assert db_privs.find(tmp) != -1
|
|
# CREATE USER ON ROLE, CHECK USER PRIV
|
|
assert root_client.create_user(test_user1, password=test_user, default_role=test_role)
|
|
ret = root_client.get_grant(test_user1)
|
|
db_privs = palo_job.GrantInfo(ret[0]).get_database_privs()
|
|
tmp = '%s: Select_priv Load_priv Create_priv' % (database_name)
|
|
assert db_privs.find(tmp) != -1
|
|
# crate user, grant table priv and check
|
|
assert root_client.create_user(test_user2)
|
|
assert root_client.grant(test_user2, ['SELECT_PRIV', 'LOAD_PRIV'],
|
|
database_name, table1)
|
|
ret = root_client.get_grant(test_user2)
|
|
tb_privs = palo_job.GrantInfo(ret[0]).get_table_privs()
|
|
tmp = '%s.%s: Select_priv Load_priv' % (database_name, table1)
|
|
assert tb_privs.find(tmp) != -1
|
|
# revoke user priv
|
|
assert root_client.revoke(test_user, ['LOAD_PRIV'], database_name)
|
|
ret = root_client.get_grant(test_user)
|
|
db_privs = palo_job.GrantInfo(ret[0]).get_database_privs()
|
|
tmp = '%s: Select_priv' % (database_name)
|
|
assert db_privs.find(tmp) != -1
|
|
# revoke role priv
|
|
assert root_client.revoke(test_role, ['SELECT_PRIV', 'LOAD_PRIV'], database_name, is_role=True)
|
|
ret = root_client.get_grant(test_user1)
|
|
db_privs = palo_job.GrantInfo(ret[0]).get_database_privs()
|
|
tmp = '%s: Create_priv' % (database_name)
|
|
assert db_privs.find(tmp) != -1
|
|
# revoke user table priv
|
|
assert root_client.revoke(test_user2, ['SELECT_PRIV'], '%s.%s' % (database_name, table1))
|
|
ret = root_client.get_grant(test_user2)
|
|
tb_privs = palo_job.GrantInfo(ret[0]).get_table_privs()
|
|
tmp = '%s.%s: Load_priv' % (database_name, table1)
|
|
assert tb_privs.find(tmp) != -1
|
|
# clean
|
|
root_client.drop_role(test_role)
|
|
root_client.drop_user(test_user)
|
|
root_client.drop_user(test_user1)
|
|
root_client.drop_user(test_user2)
|
|
root_client.clean(database_name)
|
|
|
|
|
|
def test_load_priv():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_load_priv",
|
|
"describe": "导入权限,不能进行其他操作",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""导入权限,不能进行其他操作"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
user = 'load_priv_user'
|
|
init(database_name)
|
|
table1 = table_name + '1'
|
|
table2 = table_name + '2'
|
|
assert root_client.create_table(table1, schema.partition_column_list)
|
|
assert root_client.create_table(table2, schema.partition_column_list)
|
|
try:
|
|
root_client.drop_user(user)
|
|
except Exception as e:
|
|
pass
|
|
assert root_client.create_user(user)
|
|
assert root_client.grant(user, ['LOAD_PRIV'], database_name, table1)
|
|
test_client = palo_client.PaloClient(config.fe_host, config.fe_query_port, user=user, password='')
|
|
assert test_client.init()
|
|
test_client.use(database_name)
|
|
# load
|
|
local_file = './data/PARTITION/partition_type'
|
|
ret = test_client.stream_load(table1, local_file, database_name=database_name)
|
|
assert ret
|
|
# delete
|
|
ret = test_client.delete(table1, [('k1', '=', '-1')])
|
|
assert ret
|
|
# load other table
|
|
ret = test_client.stream_load(table2, local_file)
|
|
assert not ret
|
|
# select
|
|
try:
|
|
test_client.select_all(table1)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# schema change
|
|
try:
|
|
test_client.schema_change_add_column(table_name, [('add_v', 'int', 'replace', '1')])
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# create
|
|
try:
|
|
test_client.create_table(table_name, schema.partition_column_list)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# drop
|
|
try:
|
|
test_client.drop_table(table1)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# node
|
|
try:
|
|
test_client.add_backend_list(backend_list)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
root_client.drop_user(user)
|
|
root_client.clean(database_name)
|
|
|
|
|
|
def test_alter_priv():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_alter_priv",
|
|
"describe": "alter权限,执行其他操作",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""alter权限,执行其他操作"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
user = 'alter_priv_user'
|
|
init(database_name)
|
|
table1 = table_name + '1'
|
|
table2 = table_name + '2'
|
|
assert root_client.create_table(table1, schema.partition_column_list)
|
|
assert root_client.create_table(table2, schema.partition_column_list)
|
|
try:
|
|
root_client.drop_user(user)
|
|
except Exception as e:
|
|
pass
|
|
assert root_client.create_user(user)
|
|
assert root_client.grant(user, ['ALTER_PRIV'], database_name, table1)
|
|
test_client = palo_client.PaloClient(config.fe_host, config.fe_query_port, user=user, password='')
|
|
assert test_client.init()
|
|
test_client.use(database_name)
|
|
# load
|
|
local_file = './data/PARTITION/partition_type'
|
|
ret = test_client.stream_load(table1, local_file)
|
|
assert not ret
|
|
# delete
|
|
try:
|
|
# delete priv??
|
|
ret = test_client.delete(table1, [('k1', '=', '-1')])
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
0 == 1
|
|
# select
|
|
try:
|
|
test_client.select_all(table1)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# schema change
|
|
ret = test_client.schema_change_add_column(table1, [('add_v', 'int', 'replace', '1')],
|
|
database_name=database_name)
|
|
assert ret
|
|
# create
|
|
try:
|
|
test_client.create_table(table_name, schema.partition_column_list)
|
|
except Exception as e:
|
|
print(e)
|
|
else:
|
|
assert 0 == 1
|
|
# drop
|
|
try:
|
|
test_client.drop_table(table1)
|
|
except Exception as e:
|
|
print(e)
|
|
else:
|
|
assert 0 == 1
|
|
# node
|
|
try:
|
|
test_client.add_backend_list(backend_list)
|
|
except Exception as e:
|
|
print(e)
|
|
else:
|
|
assert 0 == 1
|
|
root_client.drop_user(user)
|
|
root_client.clean(database_name)
|
|
|
|
|
|
def test_create_priv():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_create_priv",
|
|
"describe": "create权限,执行其他操作",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""create权限,执行其他操作"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
user = 'create_priv_user'
|
|
init(database_name)
|
|
table1 = table_name + '1'
|
|
table2 = table_name + '2'
|
|
assert root_client.create_table(table1, schema.partition_column_list)
|
|
assert root_client.create_table(table2, schema.partition_column_list)
|
|
try:
|
|
root_client.drop_user(user)
|
|
except Exception as e:
|
|
pass
|
|
assert root_client.create_user(user)
|
|
assert root_client.grant(user, ['CREATE_PRIV'], database_name)
|
|
test_client = palo_client.PaloClient(config.fe_host, config.fe_query_port, user=user, password='')
|
|
assert test_client.init()
|
|
test_client.use(database_name)
|
|
# load
|
|
local_file = './data/PARTITION/partition_type'
|
|
ret = test_client.stream_load(table1, local_file)
|
|
assert not ret
|
|
# delete
|
|
try:
|
|
test_client.delete(table1, [('k1', '=', '-1')])
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# select
|
|
try:
|
|
test_client.select_all(table1)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# schema change
|
|
try:
|
|
test_client.schema_change_add_column(table_name, [('add_v', 'int', 'replace', '1')])
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# create
|
|
ret = test_client.create_table(table_name, schema.partition_column_list)
|
|
assert ret
|
|
try:
|
|
ret = test_client.create_database(database_name + '_1')
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# drop
|
|
try:
|
|
test_client.drop_table(table1)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# node
|
|
try:
|
|
test_client.add_backend_list(backend_list)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
root_client.drop_user(user)
|
|
root_client.clean(database_name)
|
|
|
|
|
|
def test_drop_priv():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_drop_priv",
|
|
"describe": "drop权限,执行其他操作",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""drop权限,执行其他操作"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
user = 'drop_priv_user'
|
|
init(database_name)
|
|
table1 = table_name + '1'
|
|
table2 = table_name + '2'
|
|
assert root_client.create_table(table1, schema.partition_column_list)
|
|
assert root_client.create_table(table2, schema.partition_column_list)
|
|
try:
|
|
root_client.drop_user(user)
|
|
except Exception as e:
|
|
pass
|
|
assert root_client.create_user(user)
|
|
assert root_client.grant(user, ['DROP_PRIV'], database_name)
|
|
test_client = palo_client.PaloClient(config.fe_host, config.fe_query_port, user=user, password='')
|
|
assert test_client.init()
|
|
test_client.use(database_name)
|
|
# load
|
|
local_file = './data/PARTITION/partition_type'
|
|
ret = test_client.stream_load(table1, local_file)
|
|
assert not ret
|
|
# delete
|
|
try:
|
|
test_client.delete(table1, [('k1', '=', '-1')])
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# select
|
|
try:
|
|
test_client.select_all(table1)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# schema change
|
|
try:
|
|
test_client.schema_change_add_column(table_name, [('add_v', 'int', 'replace', '1')])
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
# create
|
|
try:
|
|
test_client.create_table(table_name, schema.partition_column_list)
|
|
except Exception as e:
|
|
print(str(e))
|
|
else:
|
|
assert 0 == 1
|
|
try:
|
|
ret = test_client.create_database(database_name + '_1')
|
|
assert not ret
|
|
except Exception as e:
|
|
print(str(e))
|
|
# drop
|
|
ret = test_client.execute('DROP TABLE %s' % table1)
|
|
assert ret == ()
|
|
ret = test_client.drop_database(database_name)
|
|
assert ret
|
|
# node
|
|
try:
|
|
test_client.add_backend_list(backend_list)
|
|
except Exception as e:
|
|
print(str(e))
|
|
root_client.drop_user(user)
|
|
root_client.clean(database_name)
|
|
|
|
|
|
def test_node_priv():
|
|
"""
|
|
{
|
|
"title": "test_sys_privilege.test_node_priv",
|
|
"describe": "node 权限,执行其他操作",
|
|
"tag": "function,p1,fuzz"
|
|
}
|
|
"""
|
|
"""node 权限,执行其他操作"""
|
|
database_name, table_name, index_name = util.gen_name_list()
|
|
user = 'node_priv_user'
|
|
init(database_name)
|
|
assert root_client.create_table(table_name, schema.partition_column_list)
|
|
try:
|
|
root_client.drop_user(user)
|
|
except Exception as e:
|
|
pass
|
|
assert root_client.create_user(user)
|
|
try:
|
|
root_client.grant(user, ['NODE_PRIV'], database_name)
|
|
assert 0 == 1
|
|
except Exception as e:
|
|
pass
|
|
|
|
root_client.drop_user(user)
|
|
root_client.clean(database_name)
|
|
|
|
|
|
def teardown_module():
|
|
"""tear down"""
|
|
pass
|