[10672] | 1 | #!/bin/ksh |
---|
| 2 | set -u |
---|
| 3 | |
---|
| 4 | echo "$(date): Running $TEST ..." |
---|
| 5 | |
---|
| 6 | cfg_name=$TEST |
---|
| 7 | if [[ -a $MY_BIN/test_config/$TEST ]]; then |
---|
| 8 | . $MY_BIN/test_config/$TEST |
---|
| 9 | fi |
---|
| 10 | |
---|
| 11 | export THIS_RUN_DIR=$RUN_DIR/$TEST |
---|
| 12 | rm -rf $THIS_RUN_DIR |
---|
| 13 | mkdir $THIS_RUN_DIR |
---|
| 14 | cd $THIS_RUN_DIR |
---|
| 15 | mirror=${mirror:-false} |
---|
| 16 | if [[ $mirror == remote ]]; then |
---|
| 17 | export THIS_RUN_DIR_HPC=$RUN_DIR_HPC/$TEST |
---|
| 18 | fi |
---|
| 19 | |
---|
| 20 | NPROC=${NPROC:-1} |
---|
| 21 | let count=1 |
---|
| 22 | for this_cfg in $cfg_name |
---|
| 23 | do |
---|
| 24 | make=$(eval "echo \${make_$count:-}") |
---|
| 25 | run=$(eval "echo \${run_$count:-}") |
---|
| 26 | export command_file=$RUN_DIR/$TEST.build.commands.$count |
---|
| 27 | touch $command_file |
---|
| 28 | if [[ $DEBUG == true ]]; then |
---|
| 29 | echo "Running make ($count) ..." |
---|
| 30 | fi |
---|
| 31 | fcm make -j $NPROC -f $REPOS_URL/trunk/cfg/$this_cfg.cfg >../$TEST.make.stdout.$count 2>../$TEST.make.stderr.$count |
---|
| 32 | RC=$? |
---|
| 33 | if [[ $make == fail ]]; then |
---|
| 34 | if [[ $RC == 0 ]]; then |
---|
| 35 | echo "FAILED: $TEST ($count) make did not fail" |
---|
| 36 | exit 1 |
---|
| 37 | fi |
---|
| 38 | elif [[ $make == fail_known ]]; then |
---|
| 39 | if [[ $RC == 0 ]]; then |
---|
| 40 | echo "FAILED: $TEST ($count) make did not fail as expected (known problem fixed?)" |
---|
| 41 | exit 1 |
---|
| 42 | else |
---|
| 43 | if [[ $DEBUG == true ]]; then |
---|
| 44 | echo "Known problem: $TEST ($count) make failed" |
---|
| 45 | fi |
---|
| 46 | break |
---|
| 47 | fi |
---|
| 48 | elif [[ $make == succeed_known ]]; then |
---|
| 49 | if [[ $RC == 0 ]]; then |
---|
| 50 | if [[ $DEBUG == true ]]; then |
---|
| 51 | echo "Known problem: $TEST ($count) make did not fail" |
---|
| 52 | fi |
---|
| 53 | break |
---|
| 54 | else |
---|
| 55 | echo "FAILED: $TEST ($count) make did not succeed as expected (known problem fixed?)" |
---|
| 56 | exit 1 |
---|
| 57 | fi |
---|
| 58 | else |
---|
| 59 | if [[ $RC != 0 ]]; then |
---|
| 60 | echo "FAILED: $TEST ($count) make failed" |
---|
| 61 | exit 1 |
---|
| 62 | else |
---|
| 63 | if [[ $mirror == remote ]]; then |
---|
| 64 | echo "$TEST" >> $BATCH_DIRS |
---|
| 65 | break |
---|
| 66 | elif [[ $mirror == local ]]; then |
---|
| 67 | cd ${THIS_RUN_DIR}_mirror |
---|
| 68 | RC=$? |
---|
| 69 | if [[ $RC != 0 ]]; then |
---|
| 70 | echo "FAILED: $TEST ($count) cd to mirror failed" |
---|
| 71 | exit 1 |
---|
| 72 | fi |
---|
| 73 | if [[ $DEBUG == true ]]; then |
---|
| 74 | echo "Running make after mirror ($count) ..." |
---|
| 75 | fi |
---|
| 76 | fcm make -j $NPROC >../$TEST.make2.stdout.$count 2>../$TEST.make2.stderr.$count |
---|
| 77 | RC=$? |
---|
| 78 | if [[ $RC != 0 ]]; then |
---|
| 79 | echo "FAILED: $TEST ($count) make after mirror failed" |
---|
| 80 | exit 1 |
---|
| 81 | fi |
---|
| 82 | fi |
---|
| 83 | if [[ $run != no ]]; then |
---|
| 84 | exe_name=hello.sh |
---|
| 85 | build_dir=$PWD/build/bin |
---|
| 86 | if [[ ! -a $build_dir ]]; then |
---|
| 87 | echo "FAILED: $TEST ($count) build directory does not exist" |
---|
| 88 | exit 1 |
---|
| 89 | else |
---|
| 90 | PATH=$build_dir:$PATH |
---|
| 91 | if [[ $DEBUG == true ]]; then |
---|
| 92 | echo "Running executable ($count) ..." |
---|
| 93 | fi |
---|
| 94 | $exe_name >../$TEST.exe.stdout.$count 2>../$TEST.exe.stderr.$count |
---|
| 95 | RC=$? |
---|
| 96 | if [[ $run == fail ]]; then |
---|
| 97 | if [[ $RC == 0 ]]; then |
---|
| 98 | echo "FAILED: $TEST ($count) run did not fail" |
---|
| 99 | exit 1 |
---|
| 100 | fi |
---|
| 101 | elif [[ $run == fail_known ]]; then |
---|
| 102 | if [[ $RC == 0 ]]; then |
---|
| 103 | echo "FAILED: $TEST ($count) run did not fail as expected (known problem fixed?)" |
---|
| 104 | exit 1 |
---|
| 105 | else |
---|
| 106 | if [[ $DEBUG == true ]]; then |
---|
| 107 | echo "Known problem: $TEST ($count) run failed" |
---|
| 108 | fi |
---|
| 109 | break |
---|
| 110 | fi |
---|
| 111 | elif [[ $run == succeed_known ]]; then |
---|
| 112 | if [[ $RC == 0 ]]; then |
---|
| 113 | if [[ $DEBUG == true ]]; then |
---|
| 114 | echo "Known problem: $TEST ($count) run did not fail" |
---|
| 115 | fi |
---|
| 116 | break |
---|
| 117 | else |
---|
| 118 | echo "FAILED: $TEST ($count) run did not succeed as expected (known problem fixed?)" |
---|
| 119 | exit 1 |
---|
| 120 | fi |
---|
| 121 | else |
---|
| 122 | if [[ $RC != 0 ]]; then |
---|
| 123 | echo "FAILED: $TEST ($count) run failed" |
---|
| 124 | exit 1 |
---|
| 125 | else |
---|
| 126 | build_dir=$PWD/build2/bin |
---|
| 127 | if [[ -a $build_dir ]]; then |
---|
| 128 | PATH=$build_dir:$PATH |
---|
| 129 | if [[ $DEBUG == true ]]; then |
---|
| 130 | echo "Running executable from build2 ($count) ..." |
---|
| 131 | fi |
---|
| 132 | $exe_name >../$TEST.exe2.stdout.$count 2>../$TEST.exe2.stderr.$count |
---|
| 133 | RC=$? |
---|
| 134 | if [[ $RC != 0 ]]; then |
---|
| 135 | echo "FAILED: $TEST ($count) build2 run failed" |
---|
| 136 | exit 1 |
---|
| 137 | fi |
---|
| 138 | fi |
---|
| 139 | fi |
---|
| 140 | fi |
---|
| 141 | fi |
---|
| 142 | fi |
---|
| 143 | fi |
---|
| 144 | fi |
---|
| 145 | let count=count+1 |
---|
| 146 | done |
---|
| 147 | |
---|
| 148 | rm -rf $BASE_DIR/work |
---|
| 149 | |
---|
| 150 | if [[ $TYPE == control ]]; then |
---|
| 151 | touch $THIS_RUN_DIR/.tests.complete |
---|
| 152 | compare_fcm1=${compare_fcm1:-true} |
---|
| 153 | if [[ $compare_fcm1 == true ]]; then |
---|
| 154 | cd $RUN_DIR |
---|
| 155 | # Test that fcm2 triggers the same build commands as the equivalent from fcm1 |
---|
| 156 | if [[ -f $TEST.build.commands.1 ]]; then |
---|
| 157 | for FILE in $(ls -1 $TEST.build.commands.*) |
---|
| 158 | do |
---|
| 159 | FCM1_FILE=fcm1_${FILE#fcm2_} |
---|
| 160 | if [[ -f $FCM1_FILE ]]; then |
---|
| 161 | if [[ $DEBUG == true ]]; then |
---|
| 162 | echo "Comparing $FILE with $FCM1_FILE ..." |
---|
| 163 | fi |
---|
| 164 | cat $FCM1_FILE | grep -v wrap_ar | sed 's#wrap_ld#wrap_fc#' | sed 's# -c # #' | sed 's#__fcm__##' | sed 's#\.F#\.f#' | \ |
---|
| 165 | sed 's#/fcm1_[^ ]*/##g' | sed 's#-Iinc #-Iinclude #g' | sed 's# -Llib -Llib# -Llib#' | \ |
---|
| 166 | sed 's# -Llib -lmkmdblseq##' | sort > $TEST.fcm1.build.commands |
---|
| 167 | cat $FILE | grep -v wrap_ar | sed 's# -c # #' | sed 's#-oo/#-o #' | sed 's#-obin/#-o #' | sed 's# o/# #g' | \ |
---|
| 168 | sed 's#\.F#\.f#' | sed 's#/fcm2_[^ ]*/##g' | sed 's#\.\./\.\.##g' | sed 's#wrap_fc2 \(.*\.exe\)#wrap_fc \1#' | \ |
---|
| 169 | sort > $TEST.fcm2.build.commands |
---|
| 170 | diff $TEST.fcm1.build.commands $TEST.fcm2.build.commands > $TEST.diff |
---|
| 171 | if [[ $? != 0 ]]; then |
---|
| 172 | echo "FAILED: $FILE - build commands differ from FCM1 case" |
---|
| 173 | exit 1 |
---|
| 174 | else |
---|
| 175 | rm $TEST.fcm1.build.commands $TEST.fcm2.build.commands $TEST.diff |
---|
| 176 | fi |
---|
| 177 | fi |
---|
| 178 | done |
---|
| 179 | fi |
---|
| 180 | # Test that fcm2 run results match equivalent from fcm1 |
---|
| 181 | if [[ -f $TEST.exe.stdout.1 ]]; then |
---|
| 182 | for FILE in $(ls -1 $TEST.exe.stdout.*) |
---|
| 183 | do |
---|
| 184 | FCM1_FILE=fcm1_${FILE#fcm2_} |
---|
| 185 | if [[ -f $FCM1_FILE ]]; then |
---|
| 186 | if [[ $DEBUG == true ]]; then |
---|
| 187 | echo "Comparing $FILE with $FCM1_FILE ..." |
---|
| 188 | fi |
---|
| 189 | diff -q $FCM1_FILE $FILE |
---|
| 190 | if [[ $? != 0 ]]; then |
---|
| 191 | echo "FAILED: $FILE - contents differ from FCM1 case" |
---|
| 192 | exit 1 |
---|
| 193 | fi |
---|
| 194 | fi |
---|
| 195 | done |
---|
| 196 | fi |
---|
| 197 | if [[ $COMPARE_TIMES == true ]]; then |
---|
| 198 | $MY_BIN/compare_times_fcm1-2 $TEST |
---|
| 199 | fi |
---|
| 200 | fi |
---|
| 201 | else |
---|
| 202 | cd $BASE_DIR |
---|
| 203 | $MY_BIN/compare_results_fcm2 $TEST |
---|
| 204 | fi |
---|