New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
perform_test_fcm2 in vendors/test – NEMO

source: vendors/test/perform_test_fcm2 @ 10669

Last change on this file since 10669 was 10669, checked in by nicolasmartin, 5 years ago

Import latest FCM release from Github into the repository for testing

File size: 6.4 KB
Line 
1#!/bin/ksh
2set -u
3
4echo "$(date): Running $TEST ..."
5
6cfg_name=$TEST
7if [[ -a $MY_BIN/test_config/$TEST ]]; then
8 . $MY_BIN/test_config/$TEST
9fi
10
11export THIS_RUN_DIR=$RUN_DIR/$TEST
12rm -rf $THIS_RUN_DIR
13mkdir $THIS_RUN_DIR
14cd $THIS_RUN_DIR
15mirror=${mirror:-false}
16if [[ $mirror == remote ]]; then
17  export THIS_RUN_DIR_HPC=$RUN_DIR_HPC/$TEST
18fi
19
20NPROC=${NPROC:-1}
21let count=1
22for this_cfg in $cfg_name
23do
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
146done
147
148rm -rf $BASE_DIR/work
149
150if [[ $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
201else
202  cd $BASE_DIR
203  $MY_BIN/compare_results_fcm2 $TEST
204fi
Note: See TracBrowser for help on using the repository browser.