shell实现hive自动化测试
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,本程序主要实现hive权限测试。系统中有管理员用户single和测试用户test。在路径/home/test/下,将用例的预置条件写在input文件夹内,每个用例对应一个input文件,命名为x-y~
千家信息网最后更新 2025年01月31日shell实现hive自动化测试
本程序主要实现hive权限测试。系统中有管理员用户single和测试用户test。在路径/home/test/下,将用例的预置条件写在input文件夹内,每个用例对应一个input文件,命名为x-y~z.q(其中xyz都是数字);将用例需要执行的语句放在case文件夹内,命名为case_x.q;将预期结果写入expect文件夹,命名为expect_x;执行结果输出到output文件夹中,命名为x-y~z.q
执行过程:kinit single用户,beeline -u -f登录并执行input文件中对test用户对应角色回收和赋予权限的语句;kinit test用户,beeline -u -f去执行case文件夹中的测试语句并保存执行结果到output文件夹中;根据expect中是否有文件及该测试为正向或逆向测试,和output内容作比较,得出该测试pass还是fail的结果,统计测试结果。
该程序能够实现hive的权限自动化测试,但每个用例对应一个input文件、一个case文件、一个expect文件、一个output文件,太过繁杂,不好用。下一篇出python优化版本。
#!/bin/bash#by cvv54 #rename existed log.txt# if [ -f "/home/test/log/log.txt" ] ;then # mv /home/test/log/log.txt /home/test/log/`date "+%Y-%m-%d~%H-%M-%S"`# fi #To create log file date>>/home/test/log/`date "+%Y-%m-%d~%H-%M-%S"` log=`ls /home/test/log/ -rt |tail -1` pass=0; fail=0; block=0; #To traversal files in input folderfor i in /home/test/input/*.q do #To login system with user single to grant proper privileges to user test #$i here is name of input file,it looks like this: /path/to/file/x-y~z.q #(x:case number;y:item number;z:can be 1 or 2,means Positive testing or Negative Testing;end with .q:sql file) kdestroy kinit -kt /etc/security/keytabs/single.keytab single beeline -u "jdbc:hive2://gateway.xxx.xxx:10000/;principal=single" -f $i &>>/home/test/log/$log#${var%%-*}#该命令的作用是去掉变量var从右边算起的最后一个'-'字符及其右边的内容,返回从右边算起的最后一个'/'(不含该字符)的左边的内容。#${var##*/}#该命令的作用是去掉变量var从左边算起的最后一个'/'字符及其左边的内容,返回从左边算起的最后一个'/'(不含该字符)的右边的内容。 #To drop path,only filename left j=${i##*/} #only for debug echo "j=$j" #To get last number in filename to distinguish Positive testing from Negative Testing k=${i##*~} #only for debug echo "k=$k" #get case number m=${j%%-*} #only for debug echo "m=$m" #To login system with user test to execute query statement #filename in folder case looks like this: case_x.q(x is varable) #filename in folder output will be named like output_x-y~z.q(it is not a sql file...) kdestroy kinit -kt /etc/security/keytabs/test.keytab test beeline -u "jdbc:hive2://gateway.xxx.xxx:10000/;principal=single" -f /home/test/case/case_$m.q &>>/home/test/output/output_$j #To check results #filename in folder expect looks like this: expect_x(x is varable) if [ $k = "1.q" ];then if [ -f "/home/test/expect/expect_$m" ];then eval $(/bin/grep ok /home/test/expect/expect_$m) eval $(/bin/grep nok /home/test/expect/expect_$m) if [ -n "`grep -w $ok /home/test/output/output_$j`"];then echo "$i pass">>/home/test/log/result.txt ((pass++)) elif [ -n "`grep -w $nok /home/test/output/output_$j`"];then echo "$i failed">>/home/test/log/result.txt ((fail++)) else echo "$i block">>/home/test/log/result.txt ((block++)) fi elif [ -n "`grep -w "seconds" /home/test/output/output_$j`" ];then echo "$i pass">>/home/test/log/result.txt ((pass++)) elif [ -n "`grep -w "FAILED: SemanticException No valid privileges" /home/test/output/output_$j`" ];then echo "$i failed">>/home/test/log/result.txt ((fail++)) else echo "$i block">>/home/test/log/result.txt ((block++)) fi else if [ -f "/home/test/expect/expect_$m" ];then eval $(/bin/grep ok /home/test/expect/expect_$m) eval $(/bin/grep nok /home/test/expect/expect_$m) if [ -n "`grep -w $nok /home/test/output/output_$j`" ];then echo "$i pass">>/home/test/log/result.txt ((pass++)) elif [ -n "`grep -w $ok /home/test/output/output_$j`" ];then echo "$i failed">>/home/test/log/result.txt ((fail++)) else echo "$i block">>/home/test/log/result.txt ((block++)) fi elif [ -n "`grep -w "seconds" /home/test/output/output_$j`" ];then echo "$i failed">>/home/test/log/result.txt ((fail++)) elif [ -n "`grep -w "FAILED: SemanticException No valid privileges" /home/test/output/output_$j`" ];then echo "$i pass">>/home/test/log/result.txt ((pass++)) else echo "$i block">>/home/test/log/result.txt ((block++)) fi fi doneecho `date` >>/home/test/log/result.txtecho "$pass passed" >>/home/test/log/result.txtecho "$fail failed">>/home/test/log/result.txtecho "$block blocked">>/home/test/log/result.txt#rename log.txt with current timecat /home/test/log/result.txt >> /home/test/log/$logrm -f /home/test/log/result.txt
文件
测试
文件夹
内容
用户
结果
右边
字符
权限
语句
作用
变量
命令
程序
自动化
繁杂
不好
数字
条件
版本
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
免费关系型数据库
arcgis 建立数据库
山西网络安全周2019
python能爬数据库吗0
联通孝感服务器升级
mmo分布式服务器地图怎么处理
在家装服务器的好处
学校网络安全专项会议
软件开发 发票 税率
网络安全单位有哪些
网络安全介绍 百度文库
政治考点中科技与互联网
公司用什么软件开发平台
asp导入重复数据库
爱恋网络技术有限公司
数据库如何拆分几个表
软件里面的数据库
忘记服务器时出现问题
测试人员为什么要学数据库
云服务器可以装win10系统吗
软件开发图标下载
泰安定制软件开发解决方案
数据库的管理方向
无线网络技术种类
服务器带外管理口作用
网络安全思修报告
雨城区网络安全讲座
sql配置服务器失败
软件开发js是什么课程
局域网网络安全的实现