#!/bin/bash
set +x
LOG_FILE="/var/log/inspect.log"
G_MML_FILE_PATH="/opt/huawei/snas/script/inspect_mml"
source $G_MML_FILE_PATH/CheckItems
source $G_MML_FILE_PATH/CommonFunc.sh
CurInspectNum="235"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="/tmp/tmpResult${CurInspectFun}"
RPC_REFER_PROC_FILE="/proc/sys/internalrpc/rpc_req_leak"
RPC_REFER_CNT_KEY="The leaked requests are found"
RPC_REFER_CNT_MAX=20
LOCAL_BACK_IP=""
isPass=0
>${RESULTFILE}

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


function checkRPCRefCnt()
{
    local status=""
    local iRet=0
    local numCnt=0
    local Result=""

    LOCAL_BACK_IP=`GetLocalIp`
    if [ "${LOCAL_BACK_IP}X" == "X" ];then
        echo "[ERR]Node:$(hostname) ||INFO:Can't get backend IP." >> ${RESULTFILE} 2>&1
        LOG "[ERR]Node:$(hostname) ||INFO:Can't get backend IP."
        isPass=1
        return
    fi

    set_ifs
    status=$(cat $RPC_REFER_PROC_FILE)
    echo "${status}" | grep -q "$RPC_REFER_CNT_KEY"
    iRet=$?
    if [ $iRet -eq 0 ]; then
        LOG "[$FUNCNAME] $LOCAL_BACK_IP Failed to execute(checkRPC_ReferCnt) command.iRet($iRet)"
        numCnt=$(echo "${status}"  | grep -E '[0-9]' | awk 'END {print NR}')
        if [ $numCnt -lt $RPC_REFER_CNT_MAX ]; then
            isPass=4
        else
            isPass=1
        fi
        Result="Node:$LOCAL_BACK_IP||INFO:The reference count of RPC is $numCnt"
        echo "[ERR]$Result" >> ${RESULTFILE} 2>&1
    else
        Result="Node:$LOCAL_BACK_IP||INFO:The reference count of RPC is zero"
        echo "$Result" >>${RESULTFILE} 2>&1
    fi

    restore_ifs
    
}

checkRPCRefCnt
echo "${CurInspectFun}_Pass $isPass" >>${RESULTFILE} 2>&1

