#!/bin/sh
set +x
G_MML_FILE_PATH="/opt/huawei/snas/script/inspect_mml"
source $G_MML_FILE_PATH/CheckItems
CurInspectNum="244"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="${G_TMP_INSPECT_PATH}tmpResult${CurInspectFun}"
LOG_FILE="/var/log/inspect.log"

>${RESULTFILE}

isPass=0
resultInfo=""

function LOG
{
   local time=$(date)
   echo [${time}][$$][${CurInspectFun}]$@ >> ${LOG_FILE}
}

#检查后台删除积压
function CheckDelTasksTooMuch()
{
    local ret=0
    local tmpId=""
    local dataResult=""
    local ctnrResult=""
    local metaResult=""
    local tmpdir="/tmp/tmpDirCheckDelTask"
    local subdir_list_file="${tmpdir}"/subdir_list_file
    local delTasksTooMuck=0
    [ -d ${tmpdir} ] && rm -rf ${tmpdir}
    mkdir -p ${tmpdir}
    nas="${tmpdir}/nas.sh"
    echo "#!/bin/bash" > $nas
    echo "\$*" >> $nas
    echo " " >> $nas
    chmod +x $nas

    >${subdir_list_file}
    timeout 10 $nas find /mnt/fs/system/remove_track/data/normal -maxdepth 1 -type d >${subdir_list_file}
    ret=$?
    if [ ${ret} -ne 0 ];then
        echo "[ERR]INFO: execute command:($nas find /mnt/fs/system/remove_track/data/normal -maxdepth 1 -type d | wc -l) takes more than 10 seconds!" >>${RESULTFILE} 2>&1
        isPass=1
        dataSubdirNum="--"
    else
        dataSubdirNum=$( cat ${subdir_list_file} | wc -l )
        LOG "/mnt/fs/system/remove_track/data/normal subDirNum=${dataSubdirNum}."
        if [ ${dataSubdirNum} -ge 25 ];then
            delTasksTooMuck=1
        fi
    fi

    # /mnt/fs/system/remove_track/ctnr/normal 子目录数>=24，则认为后台删除积压，巡检建议优化，并在巡检里显示当前子目录数
    >${subdir_list_file}
    timeout 10 $nas find /mnt/fs/system/remove_track/ctnr/normal -maxdepth 1 -type d >${subdir_list_file}
    ret=$?
    if [ ${ret} -ne 0 ];then
        echo "[ERR]INFO: execute command:($nas find /mnt/fs/system/remove_track/ctnr/normal -maxdepth 1 -type d | wc -l) takes more than 10 seconds!" >>${RESULTFILE} 2>&1
        isPass=1
        ctnrSubdirNum="--"
    else
        ctnrSubdirNum=$( cat ${subdir_list_file} | wc -l )
        LOG "/mnt/fs/system/remove_track/ctnr/normal subDirNum=${ctnrSubdirNum}."
        if [ ${ctnrSubdirNum} -ge 25 ];then
            delTasksTooMuck=1
        fi
    fi

    # /mnt/fs/system/remove_track/meta/normal 子目录数>=24，则认为后台删除积压，巡检建议优化，并在巡检里显示当前子目录数
    >${subdir_list_file}
    timeout 10 $nas find /mnt/fs/system/remove_track/meta/normal -maxdepth 1 -type d >${subdir_list_file}
    ret=$?
    if [ ${ret} -ne 0 ];then
        echo "[ERR]INFO: execute command:($nas find /mnt/fs/system/remove_track/meta/normal -maxdepth 1 -type d | wc -l) takes more than 10 seconds!" >>${RESULTFILE} 2>&1
        isPass=1
        metaSubdirNum="--"
    else
        metaSubdirNum=$( cat ${subdir_list_file} | wc -l )
        LOG "/mnt/fs/system/remove_track/meta/normal subDirNum=${metaSubdirNum}."
        if [ ${metaSubdirNum} -ge 25 ];then
            delTasksTooMuck=1
        fi
    fi

    rm -rf ${tmpdir}
    if [ "X${delTasksTooMuck}" = "X1" ];then
        isPass=1
        echo "[ERR]INFO:sub dirs num info /data/normal($dataSubdirNum); /ctnr/normal($ctnrSubdirNum); /meta/normal($metaSubdirNum), please speed up deletion in the background!" >>${RESULTFILE} 2>&1
    fi

}

#全节点检查删除任务开关
function CheckRecycleSwitch
{
    #MmlBatch 988 "mds cfg show" | grep recycle_switch  为0表示关闭，1打开
    recycle_switch_CfgVal=$(/usr/local/bin/MmlBatch 988 "mds cfg show" | grep recycle_switch |awk -F"|" '{print $6}' | sed 's/^ *//g'| sed 's/ *$//g')
    if [ "X${recycle_switch_CfgVal}" = "X1" ];then
        recycle_switch="ON"
    else
        isPass=1
        recycle_switch="OFF"
    fi
    resultInfo="recycle_switch:${recycle_switch}"
}

# 检查remove_track收集
function CheckRemovetrackCollection() {
    local strCmdOut=$( /usr/local/bin/MmlBatch 4004 "mon snaptrackmap 0" )
    iRet=$?
    if [ $iRet -ne 0 ]; then
        echo "[ERR]INFO:Failed to execute command(MmlBatch 4004 'mon snaptrackmap 0')." >>${RESULTFILE} 2>&1
        LOG [$FUNCNAME][$LINENO] "Failed to execute command(MmlBatch 4004 'mon snaptrackmap 0')."
        resultInfo="$resultInfo||rmbg track epoch:---||rmbg track Overepoch:---"
        isPass=1
        return
    fi

    rmbgTrackEpoch=$( echo "${strCmdOut}" | grep "Rmbg track epoch" | head -n1 | awk '{print $5}' | sed 's/[^0-9]//g' )
    rmbgTrackOverepoch=$( echo "${strCmdOut}" | grep "Rmbg track Overepoch" | head -n1 | awk '{print $5}' | sed 's/[^0-9]//g' )
    if [ "X${rmbgTrackEpoch}" == "X" -o "X${rmbgTrackOverepoch}" == "X" ];then
       echo "[ERR]INFO:Failed to get rmbgTrackEpoch or rmbgTrackOverepoch info." >>${RESULTFILE} 2>&1
       LOG [$FUNCNAME][$LINENO] "Failed to get rmbgTrackEpoch or rmbgTrackOverepoch info."
       resultInfo="$resultInfo||rmbg track epoch:---||rmbg track Overepoch:---"
       isPass=1
       return
    fi

    epochDelta=`expr ${rmbgTrackEpoch} - ${rmbgTrackOverepoch}`
    if [ ${epochDelta} -ge 20 -a ${epochDelta} -lt 180 ];then
        isPass=$(check_pass $isPass 4)
        echo "[ERR]INFO:DiffRmbgTrackEpoch(${epochDelta}) is greater than or equal to 20, and less than 180." >>${RESULTFILE} 2>&1
        LOG [$FUNCNAME][$LINENO] "DiffRmbgTrackEpoch(${epochDelta}) is greater than or equal to 20, and less than 180."
    fi

    if [ ${epochDelta} -ge 180 ];then
        isPass=1
        echo "[ERR]INFO:DiffRmbgTrackEpoch(${epochDelta}) is greater than 180." >>${RESULTFILE} 2>&1
        LOG [$FUNCNAME][$LINENO] "DiffRmbgTrackEpoch(${epochDelta}) is greater than 180."
    fi

    resultInfo="$resultInfo||rmbg track epoch:${rmbgTrackEpoch}||rmbg track Overepoch:${rmbgTrackOverepoch}"

}

#单节点检查rmbg_data的State和DispatchType, remove_track, 积压
function CheckDelTask
{
    local productVersion=$(grep ProductVersion /opt/huawei/deploy/package/version |awk -F= '{print $2}')
    local State="---"
    local DispatchType="---"
    if [ "$productVersion" != "V300R006C00SPC200" ];then
        LOCAL_BACK_IP=$(GetLocalIp)
        #V3R6C20-7.X 在bjmmanager节点执行MmlBatch 4100 "manager get job"查看rmbg_data的State和DispatchType
        local isBjmManager=$(cat /proc/monc_jmmap | grep "active manager ip" | grep -w "${LOCAL_BACK_IP}")
        if [ "X${isBjmManager}" != "X" ];then
            #State
            local rmbg_data_State=$(/usr/local/bin/MmlBatch 4100 "manager get job" | grep '9223372036854775827' | awk -F '[()]' '{printf $10}')
            if [ "X${rmbg_data_State}" = "X1" ];then
                State="Running"
            else
                isPass=1
                State="Not Running"
                echo "[ERR]INFO:job state is not runing" >>${RESULTFILE} 2>&1
            fi
            #DispatchType
            local rmbg_data_DispatchType=$(/usr/local/bin/MmlBatch 4100 "manager get job" | grep '9223372036854775827' | awk -F '[()]' '{printf $8}')
            DispatchType=${rmbg_data_DispatchType}
            if [ "X${rmbg_data_DispatchType}" != "X1" -a "X${rmbg_data_DispatchType}" != "X2" ];then
                isPass=1
                echo "[ERR]INFO:job dispath type is ${DispatchType}, please reconfigure the rmbg JobDispath Type" >>${RESULTFILE} 2>&1
            fi
        fi
        resultInfo="$resultInfo||State:${State}||DispatchType:${DispatchType}"

        # 在monserver上检查remove_track收集
        local isMonServer=$( cat /proc/monc_leader | grep "Mon leader" | grep -w "${LOCAL_BACK_IP}" )
        if [ "X${isMonServer}" != "X" ];then
            CheckRemovetrackCollection
        else 
            resultInfo="$resultInfo||rmbg track epoch:---||rmbg track Overepoch:---"
        fi

        #bjmserver节点上检查删除积压情况
        local isBJMServer=$( cat /proc/monc_jsmap | grep "active server ip" | grep -w "${LOCAL_BACK_IP}" )
        if [ "X${isBJMServer}" != "X" ];then
            CheckDelTasksTooMuch
        fi
    fi
}

CheckRecycleSwitch
CheckDelTask

echo $resultInfo >>${RESULTFILE} 2>&1
echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE} 2>&1
exit 0
