****************** 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!"