设为首页 收藏本站
查看: 1187|回复: 0

shell实现hive自动化测试

[复制链接]

尚未签到

发表于 2018-8-28 07:44:10 | 显示全部楼层 |阅读模式
#!/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 folder
  
for 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
  

  

  
done
  

  
echo `date` >>/home/test/log/result.txt
  
echo "$pass passed" >>/home/test/log/result.txt
  
echo "$fail failed">>/home/test/log/result.txt
  
echo "$block blocked">>/home/test/log/result.txt
  
#rename log.txt with current time
  
cat /home/test/log/result.txt >> /home/test/log/$log
  
rm -f /home/test/log/result.txt



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-557473-1-1.html 上篇帖子: shell脚本删除分区 下篇帖子: shell 下的运算表达
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表