File: perform_test_fcm2

package info (click to toggle)
fcm 2021.05.01-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 7,788 kB
  • sloc: perl: 26,014; sh: 10,510; javascript: 4,043; f90: 774; python: 294; ansic: 29; makefile: 14; cpp: 5
file content (204 lines) | stat: -rwxr-xr-x 6,586 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
#!/bin/ksh
set -u

echo "$(date): Running $TEST ..."

cfg_name=$TEST
if [[ -a $MY_BIN/test_config/$TEST ]]; then
 . $MY_BIN/test_config/$TEST
fi

export THIS_RUN_DIR=$RUN_DIR/$TEST
rm -rf $THIS_RUN_DIR
mkdir $THIS_RUN_DIR
cd $THIS_RUN_DIR
mirror=${mirror:-false}
if [[ $mirror == remote ]]; then
  export THIS_RUN_DIR_HPC=$RUN_DIR_HPC/$TEST
fi

NPROC=${NPROC:-1}
let count=1
for this_cfg in $cfg_name
do
  make=$(eval "echo \${make_$count:-}")
  run=$(eval "echo \${run_$count:-}")
  export command_file=$RUN_DIR/$TEST.build.commands.$count
  touch $command_file
  if [[ $DEBUG == true ]]; then
    echo "Running make ($count) ..."
  fi
  fcm make -j $NPROC -f $REPOS_URL/trunk/cfg/$this_cfg.cfg >../$TEST.make.stdout.$count 2>../$TEST.make.stderr.$count
  RC=$?
  if [[ $make == fail ]]; then
    if [[ $RC == 0 ]]; then
      echo "FAILED: $TEST ($count) make did not fail"
      exit 1
    fi
  elif [[ $make == fail_known ]]; then
    if [[ $RC == 0 ]]; then
      echo "FAILED: $TEST ($count) make did not fail as expected (known problem fixed?)"
      exit 1
    else
      if [[ $DEBUG == true ]]; then
        echo "Known problem: $TEST ($count) make failed"
      fi
      break
    fi
  elif [[ $make == succeed_known ]]; then
    if [[ $RC == 0 ]]; then
      if [[ $DEBUG == true ]]; then
        echo "Known problem: $TEST ($count) make did not fail"
      fi
      break
    else
      echo "FAILED: $TEST ($count) make did not succeed as expected (known problem fixed?)"
      exit 1
    fi
  else
    if [[ $RC != 0 ]]; then
      echo "FAILED: $TEST ($count) make failed"
      exit 1
    else
      if [[ $mirror == remote ]]; then
        echo "$TEST" >> $BATCH_DIRS
        break
      elif [[ $mirror == local ]]; then
        cd ${THIS_RUN_DIR}_mirror
        RC=$?
        if [[ $RC != 0 ]]; then
          echo "FAILED: $TEST ($count) cd to mirror failed"
          exit 1
        fi
        if [[ $DEBUG == true ]]; then
          echo "Running make after mirror ($count) ..."
        fi
        fcm make -j $NPROC >../$TEST.make2.stdout.$count 2>../$TEST.make2.stderr.$count
        RC=$?
        if [[ $RC != 0 ]]; then
          echo "FAILED: $TEST ($count) make after mirror failed"
          exit 1
        fi
      fi
      if [[ $run != no ]]; then
        exe_name=hello.sh
        build_dir=$PWD/build/bin
        if [[ ! -a $build_dir ]]; then
          echo "FAILED: $TEST ($count) build directory does not exist"
          exit 1
        else
          PATH=$build_dir:$PATH
          if [[ $DEBUG == true ]]; then
            echo "Running executable ($count) ..."
          fi
          $exe_name >../$TEST.exe.stdout.$count 2>../$TEST.exe.stderr.$count
          RC=$?
          if [[ $run == fail ]]; then
            if [[ $RC == 0 ]]; then
              echo "FAILED: $TEST ($count) run did not fail"
              exit 1
            fi
          elif [[ $run == fail_known ]]; then
            if [[ $RC == 0 ]]; then
              echo "FAILED: $TEST ($count) run did not fail as expected (known problem fixed?)"
              exit 1
            else
              if [[ $DEBUG == true ]]; then
                echo "Known problem: $TEST ($count) run failed"
              fi
              break
            fi
          elif [[ $run == succeed_known ]]; then
            if [[ $RC == 0 ]]; then
              if [[ $DEBUG == true ]]; then
                echo "Known problem: $TEST ($count) run did not fail"
              fi
              break
            else
              echo "FAILED: $TEST ($count) run did not succeed as expected (known problem fixed?)"
              exit 1
            fi
          else
            if [[ $RC != 0 ]]; then
              echo "FAILED: $TEST ($count) run failed"
              exit 1
            else
              build_dir=$PWD/build2/bin
              if [[ -a $build_dir ]]; then
                PATH=$build_dir:$PATH
                if [[ $DEBUG == true ]]; then
                  echo "Running executable from build2 ($count) ..."
                fi
                $exe_name >../$TEST.exe2.stdout.$count 2>../$TEST.exe2.stderr.$count
                RC=$?
                if [[ $RC != 0 ]]; then
                  echo "FAILED: $TEST ($count) build2 run failed"
                  exit 1
                fi
              fi
            fi
          fi
        fi
      fi
    fi
  fi
  let count=count+1
done

rm -rf $BASE_DIR/work

if [[ $TYPE == control ]]; then
  touch $THIS_RUN_DIR/.tests.complete
  compare_fcm1=${compare_fcm1:-true}
  if [[ $compare_fcm1 == true ]]; then
    cd $RUN_DIR
    # Test that fcm2 triggers the same build commands as the equivalent from fcm1
    if [[ -f $TEST.build.commands.1 ]]; then
      for FILE in $(ls -1 $TEST.build.commands.*)
      do
        FCM1_FILE=fcm1_${FILE#fcm2_}
        if [[ -f $FCM1_FILE ]]; then
          if [[ $DEBUG == true ]]; then
            echo "Comparing $FILE with $FCM1_FILE ..."
          fi
          cat $FCM1_FILE | grep -v wrap_ar | sed 's#wrap_ld#wrap_fc#' | sed 's# -c # #' | sed 's#__fcm__##' | sed 's#\.F#\.f#' | \
             sed 's#/fcm1_[^ ]*/##g' | sed 's#-Iinc #-Iinclude #g' | sed 's# -Llib -Llib# -Llib#' | \
             sed 's# -Llib -lmkmdblseq##' | sort > $TEST.fcm1.build.commands
          cat $FILE | grep -v wrap_ar  | sed 's# -c # #' | sed 's#-oo/#-o #' | sed 's#-obin/#-o #' | sed 's# o/# #g' | \
             sed 's#\.F#\.f#' | sed 's#/fcm2_[^ ]*/##g' | sed 's#\.\./\.\.##g' | sed 's#wrap_fc2 \(.*\.exe\)#wrap_fc \1#' | \
             sort > $TEST.fcm2.build.commands
          diff $TEST.fcm1.build.commands $TEST.fcm2.build.commands > $TEST.diff
          if [[ $? != 0 ]]; then
            echo "FAILED: $FILE - build commands differ from FCM1 case"
            exit 1
          else
            rm $TEST.fcm1.build.commands $TEST.fcm2.build.commands $TEST.diff
          fi
        fi
      done
    fi
    # Test that fcm2 run results match equivalent from fcm1
    if [[ -f $TEST.exe.stdout.1 ]]; then
      for FILE in $(ls -1 $TEST.exe.stdout.*)
      do
        FCM1_FILE=fcm1_${FILE#fcm2_}
        if [[ -f $FCM1_FILE ]]; then
          if [[ $DEBUG == true ]]; then
            echo "Comparing $FILE with $FCM1_FILE ..."
          fi
          diff -q $FCM1_FILE $FILE
          if [[ $? != 0 ]]; then
            echo "FAILED: $FILE - contents differ from FCM1 case"
            exit 1
          fi
        fi
      done
    fi
    if [[ $COMPARE_TIMES == true ]]; then
      $MY_BIN/compare_times_fcm1-2 $TEST
    fi
  fi
else
  cd $BASE_DIR
  $MY_BIN/compare_results_fcm2 $TEST
fi