1ffeaf689SAlexander Kabaev#!/usr/bin/env bash 2ffeaf689SAlexander Kabaev 3ffeaf689SAlexander Kabaev# Script to do performance testing. 4ffeaf689SAlexander Kabaev 5ffeaf689SAlexander Kabaev# Invocation 6ffeaf689SAlexander Kabaev# check_performance SRC_DIR BUILD_DIR 7ffeaf689SAlexander Kabaev 8ffeaf689SAlexander Kabaev# 1: variables 9ffeaf689SAlexander Kabaev# 10ffeaf689SAlexander KabaevSRC_DIR=$1 11ffeaf689SAlexander KabaevBUILD_DIR=$2 12ffeaf689SAlexander Kabaev 13ffeaf689SAlexander Kabaev# Now that we've successfully translated the numerical option into 14ffeaf689SAlexander Kabaev# a symbolic one, we can safely ignore it. 15ffeaf689SAlexander Kabaevshift 16ffeaf689SAlexander Kabaev 17ffeaf689SAlexander Kabaev# This has been true all along. Found out about it the hard way... 18ffeaf689SAlexander Kabaevcase $BASH_VERSION in 19ffeaf689SAlexander Kabaev 1*) 20ffeaf689SAlexander Kabaev echo 'You need bash 2.x to run check_performance. Exiting.'; 21ffeaf689SAlexander Kabaev exit 1 ;; 22ffeaf689SAlexander Kabaev *) ;; 23ffeaf689SAlexander Kabaevesac 24ffeaf689SAlexander Kabaev 25ffeaf689SAlexander Kabaevflags_script=$BUILD_DIR/scripts/testsuite_flags 26*f8a1b7d9SAlexander KabaevINCLUDES=`$flags_script --build-includes` 27*f8a1b7d9SAlexander KabaevPCH_FLAGS=`$flags_script --cxxpchflags` 28ffeaf689SAlexander KabaevFLAGS=`$flags_script --cxxflags` 29ffeaf689SAlexander KabaevTHREAD_FLAG='-pthread' 30ffeaf689SAlexander KabaevCOMPILER=`$flags_script --build-cxx` 31ffeaf689SAlexander KabaevSH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../../gcc \ 32ffeaf689SAlexander Kabaev -Wl,--rpath -Wl,$BUILD_DIR/src/.libs" 33ffeaf689SAlexander KabaevST_FLAG="-static" 34ffeaf689SAlexander KabaevLINK=$SH_FLAG 35*f8a1b7d9SAlexander KabaevCXX="$COMPILER $INCLUDES $PCH_FLAGS $FLAGS $LINK" 36*f8a1b7d9SAlexander KabaevLIBS="./libtestc++.a" 37ffeaf689SAlexander KabaevTESTS_FILE="testsuite_files_performance" 38ffeaf689SAlexander Kabaev 39ffeaf689SAlexander Kabaevfor NAME in `cat $TESTS_FILE` 40ffeaf689SAlexander Kabaevdo 41ffeaf689SAlexander Kabaev RUN=true 42*f8a1b7d9SAlexander Kabaev TESTNAME=$SRC_DIR/testsuite/$NAME 43*f8a1b7d9SAlexander Kabaev FILE_NAME="`basename $NAME`" 44*f8a1b7d9SAlexander Kabaev FILE_NAME="`echo $FILE_NAME | sed 's/.cc//g'`" 45*f8a1b7d9SAlexander Kabaev 46*f8a1b7d9SAlexander Kabaev # TEST_S == single thread 47*f8a1b7d9SAlexander Kabaev # TEST_B == do both single and multi-thread 48*f8a1b7d9SAlexander Kabaev # TEST_T == multi-thread 49*f8a1b7d9SAlexander Kabaev for CYCLE in `sed -n 's,.*\(TEST_[SB][0-9]*\)$,\1,p' $TESTNAME` 50ffeaf689SAlexander Kabaev do 51ffeaf689SAlexander Kabaev RUN=false 52ffeaf689SAlexander Kabaev echo $NAME $CYCLE 53*f8a1b7d9SAlexander Kabaev EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`" 54*f8a1b7d9SAlexander Kabaev $CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME 55*f8a1b7d9SAlexander Kabaev if [ -f $EXE_NAME ]; then 56ffeaf689SAlexander Kabaev ./$EXE_NAME 57*f8a1b7d9SAlexander Kabaev else 58*f8a1b7d9SAlexander Kabaev echo "compile error:" 59*f8a1b7d9SAlexander Kabaev echo "$CXX -DNOTHREAD -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME" 60*f8a1b7d9SAlexander Kabaev fi 61ffeaf689SAlexander Kabaev done 62*f8a1b7d9SAlexander Kabaev 63*f8a1b7d9SAlexander Kabaev for CYCLE in `sed -n 's,.*\(TEST_[TB][0-9]*\)$,\1,p' $TESTNAME` 64ffeaf689SAlexander Kabaev do 65ffeaf689SAlexander Kabaev RUN=false 66*f8a1b7d9SAlexander Kabaev echo $NAME $CYCLE thread 67*f8a1b7d9SAlexander Kabaev EXE_NAME="`echo $FILE_NAME-$CYCLE.exe`" 68*f8a1b7d9SAlexander Kabaev $CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME 69*f8a1b7d9SAlexander Kabaev if [ -f $EXE_NAME ]; then 70ffeaf689SAlexander Kabaev ./$EXE_NAME 71*f8a1b7d9SAlexander Kabaev else 72*f8a1b7d9SAlexander Kabaev echo "compile error:" 73*f8a1b7d9SAlexander Kabaev echo "$CXX $THREAD_FLAG -D$CYCLE $TESTNAME $LIBS -o $EXE_NAME" 74*f8a1b7d9SAlexander Kabaev fi 75ffeaf689SAlexander Kabaev done 76*f8a1b7d9SAlexander Kabaev 77ffeaf689SAlexander Kabaev if $RUN; then 78ffeaf689SAlexander Kabaev echo $NAME 79*f8a1b7d9SAlexander Kabaev EXE_NAME="`echo $FILE_NAME.exe`" 80*f8a1b7d9SAlexander Kabaev $CXX $TESTNAME $LIBS -o $EXE_NAME 81*f8a1b7d9SAlexander Kabaev if [ -f $EXE_NAME ]; then 82*f8a1b7d9SAlexander Kabaev ./$EXE_NAME >& tmp.$FILE_NAME 83*f8a1b7d9SAlexander Kabaev else 84*f8a1b7d9SAlexander Kabaev echo "compile error:" 85*f8a1b7d9SAlexander Kabaev echo "$CXX $TESTNAME $LIBS -o $EXE_NAME" 86*f8a1b7d9SAlexander Kabaev fi 87*f8a1b7d9SAlexander Kabaev if [ -s tmp.$FILE_NAME ]; then 88*f8a1b7d9SAlexander Kabaev mv tmp.$FILE_NAME $FILE_NAME.xml 89*f8a1b7d9SAlexander Kabaev fi 90ffeaf689SAlexander Kabaev fi 91ffeaf689SAlexander Kabaevdone 92ffeaf689SAlexander Kabaev 93ffeaf689SAlexander Kabaevexit 0 94