RandomFETA [NSN-AC]

******************   Wrapper:  ******************

 

#!/bin/sh

# --------------- RANDOM FETA WRAPPER ---------------

# Generate data with random value as you want!

# Just a wrapper for random_feta.sh to log all standard output and error output

# Author: yu.shuai@nsn.com

# Version: 1.1 @2010-05-17

 

# Parameter list

# 1.NEType (MSC|HLR|CDS|SSR)

# 2.FromDate (yyyy-mm-dd)

# 3.Duration  (days)

# 4.Dimension number

# 5.Rows per day(same dimension)

# 6.FETA work dir (e.g. /home/omc/m146/FETA/xmlnss_feta/pmcoreadtest)

# 7.Original FETA Template file

# 8.Running mode.

#   Y: normal mode, generate xml files and run FETA

#   N: debug mode, just generate xml files but not run FETA

 

logBatchNo=`date '+%m%d-%H%M%S'`

log_file="random_feta_"$logBatchNo".log"

 

./split_xml.sh $7 |tee $log_file 2>&1

 

for fetaFile in `ls -l $7.L*| awk '{print $9}'`

do

  dimDeep=`echo $fetaFile|awk -F . '{print $3}'|sed s/L//g`

  if [ $dimDeep -lt 4 ]; then

    ./rd_dm_feta.sh $1 $2 $3 $dimDeep $5 $6 $fetaFile $8 $logBatchNo |tee -a $log_file 2>&1

  else

    ./random_feta.sh $1 $2 $3 $4 $5 $6 $fetaFile $8 $logBatchNo |tee -a $log_file 2>&1  

  fi

done

 

 

 

 

******************  random_feta.sh ******************  

 

 

#!/bin/sh

# --------------- RANDOM FETA TOOL ---------------

# Generate data with random value as you want!

# Author: yu.shuai@nsn.com

# Version: 1.1 @2010-05-17

 

# Parameter list

# 1.NEType (MSC|HLR|CDS|SSR)

# 2.FromDate (yyyy-mm-dd) 

# 3.Duration  (days)

# 4.Dimension number 

# 5.Rows per day(same dimension)

# 6.FETA work dir (e.g. /home/omc/m146/FETA/xmlnss_feta/pmcoreadtest)

# 7.Input File (FETA template XML file)

# 8.Running mode. 

#   Y: normal mode, generate xml files and run FETA

#   N: debug mode, just generate xml files but not run FETA

 

WORK_DIR=`dirname $0`

WORK_DIR=`cd $WORK_DIR && pwd`

RESULT_DIR=$WORK_DIR"/result"

test ! -d $RESULT_DIR && mkdir -p $RESULT_DIR

 

NEtype=$1

fromDate=$2

duration=$3

dimKind=$4

rowsPday=$5

fetaDir=$6

inputFile=$7

runMode=$8

 

startTime=`date '+%Y-%m-%d_%H:%M:%S'`

if [ $# -gt 8 ];then

  logLabel=$9

else

  logLabel=`date '+%m%d_%H%M%S'`

fi

 

#LOG_FILE=$WORK_DIR"/random_feta_"$startTime".log"

#test ! -f $LOG_FILE && touch $LOG_FILE

 

#copy all screen output to $LOG_FILE file

# Thus all output can be found also from log file

#tee -a $LOG_FILE >/dev/tty |&

#exec 1>&p

# Redirect errout to stdout

#exec 2>&1

 

echo ""

echo "--------------- RANDOM FETA TOOL Runtime log ---------------"

echo "Begin at "$startTime

echo ""

echo "Parameter list:"

echo "NEtype    = "$NEtype

echo "fromDate  = "$fromDate

echo "duration  = "$duration

echo "dimKind   = "$dimKind

echo "rowsPday  = "$rowsPday

echo "FETA_HOME = "$fetaDir

echo "inputFile = "$inputFile

echo "runMode   = "$runMode

echo ""

#echo "dimRows : recNum/dimKind "$dimRows

#echo "rowsPday: dimRows/duration "$rowsPday

 

if [ $runMode = "y" ];then

  test ! -d $fetaDir && echo "FETA work dir "$fetaDir" does not exist. Abort! " && exit

fi

 

sfile=$WORK_DIR/$inputFile

tfile=$WORK_DIR/tmp.xml

 

origTimeStr=`grep "startTime=" $sfile | head -n 1|awk -F /' '{print $2}'|awk -F . '{print $1}'`

#echo $origTimeStr

origDate=`echo $origTimeStr|awk -F T '{print $1}'`

#time=`echo $origTimeStr|awk -F T '{print $2}'`

 

for (( dim = 1; dim <= $dimKind; dim++ )) do

  rfile=$RESULT_DIR/$inputFile"."$logLabel".dim"$dim

#  echo $rfile

  cp $sfile $rfile

  cp $sfile $tfile

        for x in `grep "DN:" $tfile`

        do

          sourceStr=$x

          tempStr=$x

        #  echo sourceString : $sourceStr

          cn=`echo $tempStr|grep -o '/-VALUE'|wc -l`

 

          while [ $cn -gt 0 ]

          do

                rnum=`expr $RANDOM % 10`

                ((rnum= $rnum + 900 )) 

                tempStr=`echo $tempStr|sed s/-VALUE/-${rnum}/`

                cn=`expr $cn - 1`

          done

 

        #  echo tempString   : $tempStr

          sed s#${sourceStr}#${tempStr}# $rfile > $tfile

          cp $tfile $rfile

 

        done

#        rm -rf $tfile

#        echo ">> DN template "$dim" done!"

for (( dur = 0; dur < $duration; dur++ )) do  

  ranDate=`date -d "$fromDate +$dur days" "+%Y-%m-%d"`

  for (( rpd = 1; rpd <= $rowsPday; rpd++ )) do

    rfile2=$rfile".day"$ranDate".row"$rpd   

    cp $rfile $rfile2

#    echo $rfile2

    rhour=`expr $RANDOM % 23`

    if [ $rhour -lt 10 ]; then

      rhour="0"$rhour

    fi

 

    rmin=`expr $RANDOM % 59`

    if [ $rmin -lt 10 ]; then

      rmin="0"$rmin

    fi

 

    rsec=`expr $RANDOM % 57`

    if [ $rsec -lt 10 ]; then

      rsec="0"$rsec

    fi 

 

    ranTimeStr=$ranDate"T"$rhour":"$rmin":"$rsec

 

    sed s#${origTimeStr}#${ranTimeStr}# $rfile2 > $tfile

    cp $tfile $rfile2

 

    if [ $runMode = "y" ];then

      cp $rfile2 $fetaDir"/work/template/"$NEtype".template"

      perl $fetaDir/bin/VerifyPMCoreBasedAD.pl -c $fetaDir/conf/PMCoreADConfFile.cf -m 3 -l "randomFETA"$logLabel && echo -e '/n'`date '+%Y-%m-%d_%H:%M:%S'`' : One Template done!/n'

    fi  

  done

done

done

 

echo "Random FETA finished at "`date '+%Y-%m-%d_%H:%M:%S'`

 

 

 

 

 

******************  rd_dm_feta.sh  ******************  

#!/bin/sh

# --------------- RANDOM FETA TOOL ---------------

# Generate data with random value as you want!

# Author: yu.shuai@nsn.com

# Version: 1.1 @2010-05-17

 

# Parameter list

# 1.NEType (MSC|HLR|CDS|SSR)

# 2.FromDate (yyyy-mm-dd) 

# 3.Duration  (days)

# 4.Dimension number 

# 5.Rows per day(same dimension)

# 6.FETA work dir (e.g. /home/omc/m146/FETA/xmlnss_feta/pmcoreadtest)

# 7.Input File (FETA template XML file)

# 8.Running mode. 

#   y: normal mode, generate xml files and run FETA

#   n: debug mode, just generate xml files but not run FETA

# 9.Log Lable (batch No.)

 

WORK_DIR=`dirname $0`

WORK_DIR=`cd $WORK_DIR && pwd`

RESULT_DIR=$WORK_DIR"/result"

test ! -d $RESULT_DIR && mkdir -p $RESULT_DIR

 

NEtype=$1

fromDate=$2

duration=$3

dimNo=$4

rowsPday=$5

fetaDir=$6

inputFile=$7

runMode=$8

logLabel=$9

 

startTime=`date '+%Y-%m-%d_%H:%M:%S'`

#logLabel=`date '+%m%d_%H%M%S'`

 

echo ""

echo "--------------- RANDOM FETA TOOL Runtime log ---------------"

echo "Begin at "$startTime

echo ""

echo "Parameter list:"

echo "NEtype    = "$NEtype

echo "fromDate  = "$fromDate

echo "duration  = "$duration

echo "dimNo     = "$dimNo

echo "rowsPday  = "$rowsPday

echo "FETA_HOME = "$fetaDir

echo "inputFile = "$inputFile

echo "runMode   = "$runMode

echo "logLabel  = "$logLabel

 

if [ $runMode = "y" ];then

  test ! -d $fetaDir && echo "FETA work dir "$fetaDir" does not exist. Abort! " && exit

fi

((dimDupNo= 2 ** $dimNo ))

sfile=$WORK_DIR/$inputFile

tfile=$WORK_DIR/tmp.xml

 

origTimeStr=`grep "startTime=" $sfile | head -n 1|awk -F /' '{print $2}'|awk -F . '{print $1}'`

#echo $origTimeStr

origDate=`echo $origTimeStr|awk -F T '{print $1}'`

#time=`echo $origTimeStr|awk -F T '{print $2}'`

 

for (( dim = 0; dim < $dimDupNo; dim++ )) do

  crtBinNo=`echo "obase=2; ibase=10; ${dim}" | bc`

  crtBinNo=`printf "%0${dimNo}g/n" $crtBinNo`  

  crtBinStr=`echo $crtBinNo|sed -e 's//(./)//1,/g'| sed -e 's//(./)$//g'`

  rfile=$RESULT_DIR/$inputFile"."$logLabel".dim"$crtBinNo

#  echo $rfile

  cp $sfile $rfile

  cp $sfile $tfile

  for x in `grep "DN:" $tfile`

  do

    sourceStr=$x

    tempStr=$x

    for (( dp = 1; dp <= $dimNo; dp++ )) do

      rnum=`echo $crtBinStr|awk -F , '{print $'"$dp"'}'`  

      tempStr=`echo $tempStr|sed s/-VALUE/-${rnum}/`

    done

    # Just replace the first matched string

    sed s#${sourceStr}#${tempStr}# $rfile > $tfile

    cp $tfile $rfile

  done

 

#        rm -rf $tfile

  echo ">> DN template "$crtBinNo" done!"

 

  for (( dur = 0; dur < $duration; dur++ )) do  

    ranDate=`date -d "$fromDate +$dur days" "+%Y-%m-%d"`

    for (( rpd = 1; rpd <= $rowsPday; rpd++ )) do

      rfile2=$rfile".day"$ranDate".row"$rpd   

      cp $rfile $rfile2

      rhour=`expr $RANDOM % 23`

      if [ $rhour -lt 10 ]; then

        rhour="0"$rhour

      fi

 

      rmin=`expr $RANDOM % 59`

      if [ $rmin -lt 10 ]; then

        rmin="0"$rmin

      fi

 

      rsec=`expr $RANDOM % 57`

      if [ $rsec -lt 10 ]; then

        rsec="0"$rsec

      fi 

 

      ranTimeStr=$ranDate"T"$rhour":"$rmin":"$rsec

 

      sed s#${origTimeStr}#${ranTimeStr}# $rfile2 > $tfile

      cp $tfile $rfile2

 

      echo "File $rfile2 generated!"

      if [ $runMode = "y" ];then

        cp $rfile2 $fetaDir"/work/template/"$NEtype".template"

        perl $fetaDir/bin/VerifyPMCoreBasedAD.pl -c $fetaDir/conf/PMCoreADConfFile.cf -m 3 -l "randomFETA"$logLabel && echo -e '/n'`date '+%Y-%m-%d_%H:%M:%S'`' : One Template done!/n'

      fi  

    done

  done

done

 

echo "Random FETA finished at "`date '+%Y-%m-%d_%H:%M:%S'`

 

 

 

 

****************** split_xml.sh ******************

 

#!/bin/sh

 

WORK_DIR=`dirname $0`

WORK_DIR=`cd $WORK_DIR && pwd`

#totalline=`sed -n '$=' $1`

sfile=$1

startTime=`date '+%Y-%m-%d_%H:%M:%S'`

 

cn=0

beginPos=1

prevSegPos=0

 

echo "--------------- Analyse original template ---------------"

echo "Begin at "$startTime

echo ""

 

segPos=`grep -n "</OMeS>" $sfile |head -n 1|tail -1|awk -F : '{print $1}'`

seq=1

dnSeq=1

rm -rf $sfile".L*"

while [ $prevSegPos -lt $segPos ] 

do

  prevSegPos=$segPos

  dnLine=`grep -n "localMoid=" $sfile |head -n $dnSeq|tail -1`

  dnPos=`echo $dnLine|awk -F : '{print $1}'`

  if [ $dnPos -lt $segPos ]; then

    #dn exists

    cn=`echo $dnLine|grep -o '/-VALUE'|wc -l`

    dnSeq=`expr $dnSeq + 1`

  else

    # no dn

    cn=0

  fi

  newFile=$sfile".L"$cn

  echo "Segment : "$beginPos" ~ "$segPos"  - "$cn

  sed -n "${beginPos},${segPos}p" $sfile >> $newFile

 

  beginPos=`expr $segPos + 1`

  seq=`expr $seq + 1`

  segPos=`grep -n "</OMeS>" $sfile |head -n $seq|tail -1|awk -F : '{print $1}'`

#  prevSegPos=$segPos

done

echo "finished!"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值