104 lines
4.4 KiB
Bash
Executable File
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
|