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