polardbxengine/mysql-test/suite/xengine_stress/rqg/concurrency/concurWriteI124/test/concurWriteI124.sh

104 lines
4.4 KiB
Bash
Executable File

#!/bin/bash
#
# Usage: concurWriteI124.sh testBuild testDB numSessions
#
# --------------------------------------------------------------- #
# initialize test parameters
# --------------------------------------------------------------- #
function initTest() {
tableRowCnt=`cat $MYRHOME/concurrency/concurWriteI124/data/testSetup.txt|grep tableRowCnt|awk '{print $2}'`
incrVal=`cat $MYRHOME/concurrency/concurWriteI124/data/testSetup.txt|grep incrVal|awk '{print $2}'`
numStmtsPerScript=`cat $MYRHOME/concurrency/concurWriteI124/data/testSetup.txt|grep numStmtsPerScript|awk '{print $2}'`
order1RowCnt=`cat $MYRHOME/concurrency/concurWriteI124/data/testSetup.txt|grep order1RowCnt|awk '{print $2}'`
}
# --------------------------------------------------------------- #
# Prepare table
# --------------------------------------------------------------- #
function prepareTable() {
# echo Creating lineitem table and loading $tableRowCnt rows of data......
$MYRCLIENT $testDB -vvv -f < $MYRHOME/databases/tpch/sql/createLineitemMyrocks.sql > createTable.log 2>&1
head -n $tableRowCnt $MYRHOME/data/source/tpch/1g/lineitem.tbl > /tmp/lineitem.tbl
$MYRCLIENT $testDB -vvv -f < $MYRHOME/concurrency/concurWriteI124/sql/loadData.sql > loadoadData.log 2>&1
}
# --------------------------------------------------------------- #
# Function to execute a test
# --------------------------------------------------------------- #
function execTest() {
testName=$1
#
$MYRCLIENT $testDB < $MYRHOME/concurrency/concurWriteI124/sql/getTableStats.sql > $testName.Stats1.txt 2>&1
$MYRHOME/common/sh/testExecConcur.sh $testDB $testName.sql $numSessions
# Capture test result
$MYRCLIENT $testDB < $MYRHOME/concurrency/concurWriteI124/sql/getTableStats.sql > $testName.Stats2.txt 2>&1
# $MYRHOME/concurrency/concurWriteI124/sh/analyzeResults.sh $testName $rowCnt $valFactor $numSessions
}
# --------------------------------------------------------------- #
# Function to verify test results
# --------------------------------------------------------------- #
function verifyResults {
testName=$1
#
queryCnt=`cat $testName.sql|wc -l`
totalQueryCnt=`expr $queryCnt \\* $numSessions`
#
successCnt=`grep -i aff $testName.sql.*.log |wc -l`
timeoutCnt=`grep -i timeout $testName.sql.*.err|wc -l`
processedCnt=`expr $successCnt + $timeoutCnt`
#
colIdx=`cat $MYRHOME/concurrency/concurWriteI124/data/testSetup.txt|grep $testName|awk '{print $2}'`
affectRowCnt=`cat $MYRHOME/concurrency/concurWriteI124/data/testSetup.txt|grep $testName|awk '{print $3}'`
processedOverWrite=`cat $MYRHOME/concurrency/concurWriteI124/data/testSetup.txt|grep $testName|awk '{print $4}'`
if [ "$processedOverWrite" != "" ]; then
successCnt=$processedOverWrite
fi
initVals=`tail -n 1 $testName.Stats1.txt|awk -v i=$colIdx '{print $i}'`
actVals=`tail -n 1 $testName.Stats2.txt|awk -v i=$colIdx '{print $i}'`
actVals=`expr $actVals - $initVals`
expVals=`expr $affectRowCnt \\* $successCnt \\* $incrVal`
# echo affectedCnt=$affectRowCnt successCnt=$successCnt incrVal=$incrVal
#
# echo actvals=$actVals expVals=$expVals
if [ "$actVals" = "$expVals" ] ; then
status=Passed
else
status=Failed
fi
echo testName=$testName Status=$status rowCnt=$tableRowCnt queryCnt=$queryCnt sessionCnt=$numSessions totalQueryCnt=$totalQueryCnt successCnt=$successCnt timeoutCnt=$timeoutCnt actVals=$actVals expVals=$expVals >> testStatus.txt
}
# --------------------------------------------------------------- #
# main
# --------------------------------------------------------------- #
if [ "$#" -ne 3 ]; then
echo Missing one or more parameters
echo Usage: $0 testBuild testDB numSessions
exit
fi
#
testBuild=$1
testDB=$2
numSessions=$3
#
MYRBUILD=$testBuild
source $MYRHOME/common/env/myrclient.sh
$MYRHOME/myrocks/sh/resetEnvSingle.sh $MYRBUILD > resetEnvSingle.log 2>&1
#
rm -rf *.log *.sql *.txt
initTest
# Generate DML SQL scripts
$MYRHOME/concurrency/concurWriteI124/sh/genDMLScripts.sh $numStmtsPerScript
#
# reset database
cat $MYRHOME/concurrency/concurWriteI124/data/sqlStatements.txt|grep -v "#" |
while read testName statement ; do
prepareTable
execTest $testName
verifyResults $testName
done
# drop test table
$MYRCLIENT $testDB -vvv -f < $MYRHOME/concurrency/concurWriteI124/sql/dropTable.sql > dropTable.log 2>&1
#
errCnt=`cat testStatus.txt |grep -i Failed |wc -l`
exit $errCnt
#
# End of script