1 | #!/bin/bash |
---|
2 | |
---|
3 | |
---|
4 | cd $( dirname $0 ) |
---|
5 | |
---|
6 | ##-------------------------------------------------------------------------------- |
---|
7 | ## Set flags & defaults |
---|
8 | ##-------------------------------------------------------------------------------- |
---|
9 | |
---|
10 | TRUST_MAIN_DIR=$PWD |
---|
11 | |
---|
12 | TRUST_FLAG_DEBUG='false' ; TRUST_FLAG_HELP='false' ; TRUST_FLAG_PROD='false' |
---|
13 | |
---|
14 | rev=$( svn info | awk '(NR == 9) {print $NF}' ) |
---|
15 | |
---|
16 | |
---|
17 | ##-------------------------------------------------------------------------------- |
---|
18 | ## Get arguments from command line |
---|
19 | ##-------------------------------------------------------------------------------- |
---|
20 | |
---|
21 | while getopts a:b:de:f:j:hm:n:r:t:pu:v:w: arg; do |
---|
22 | |
---|
23 | case $arg in |
---|
24 | a) TRUST_IO_FORC_TAR=$OPTARG;; b) TRUST_SVN_BRANCH=$OPTARG;; |
---|
25 | d) TRUST_FLAG_DEBUG='true' ;; e) TRUST_TEST_MAILING=$OPTARG;; |
---|
26 | f) TRUST_IO_FORC_PATH=$OPTARG;; j) TRUST_COMPILE_NPROC=$OPTARG;; |
---|
27 | h) TRUST_FLAG_HELP='true' ;; m) TRUST_MAIN_HPCC=$OPTARG;; |
---|
28 | n) TRUST_CFG_NEW=$OPTARG;; r) TRUST_CFG_REF=$OPTARG;; |
---|
29 | t) TRUST_JOB_TIMEOUT=$OPTARG;; p) TRUST_FLAG_PROD='true' ;; |
---|
30 | u) TRUST_MAIN_USER=$OPTARG;; v) TRUST_SVN_REV=$OPTARG;; |
---|
31 | w) TRUST_DIR_WORK=$OPTARG;; |
---|
32 | :) echo 'Arg. needed for '$OPTARG && TRUST_FLAG_HELP='true' ;; |
---|
33 | *) TRUST_FLAG_HELP='true' ;; |
---|
34 | esac |
---|
35 | |
---|
36 | done |
---|
37 | |
---|
38 | |
---|
39 | ##-------------------------------------------------------------------------------- |
---|
40 | ## Initialization (user & HPC environment) |
---|
41 | ##-------------------------------------------------------------------------------- |
---|
42 | |
---|
43 | if [[ ! -e cfg/${TRUST_MAIN_USER}.cfg || ! -e cfg/${TRUST_MAIN_HPCC}.cfg \ |
---|
44 | || ${TRUST_FLAG_HELP} == 'true' ]]; then |
---|
45 | cat ./inc/trusting_help.txt |
---|
46 | |
---|
47 | if [ ${TRUST_FLAG_HELP} == 'false' ]; then |
---|
48 | printf "\n\n\033[0;33m" |
---|
49 | printf "At least one configuration (arch or user) file is missing or misspelled:" |
---|
50 | printf "\t'%s'.cfg\t'%s'.cfg" ${TRUST_MAIN_USER} ${TRUST_MAIN_HPCC} |
---|
51 | printf "\033[0m" |
---|
52 | fi |
---|
53 | |
---|
54 | printf "\n\nContent of 'config' folder:" |
---|
55 | find config -name *.cfg | cut -d/ -f2 \ |
---|
56 | | xargs -n 4 printf "%-25s\t%-25s\t%-25s\n" |
---|
57 | exit 1 |
---|
58 | else |
---|
59 | ## Verbose output on debug mode |
---|
60 | [ ${TRUST_FLAG_DEBUG} == 'true' ] && set -vx |
---|
61 | |
---|
62 | . ./inc/trusting.env |
---|
63 | . ./inc/trusting_func.sh |
---|
64 | |
---|
65 | fi |
---|
66 | |
---|
67 | |
---|
68 | ##-------------------------------------------------------------------------------- |
---|
69 | ## Trusting workflow |
---|
70 | ##-------------------------------------------------------------------------------- |
---|
71 | |
---|
72 | ## Display summary of test |
---|
73 | ##------------------------ |
---|
74 | |
---|
75 | echo |
---|
76 | if [ -t 0 ]; then cat ./inc/banner.txt; else cat ./inc/banner.html; fi |
---|
77 | echo |
---|
78 | echo '****************************************************************************************************' |
---|
79 | echo '* *' |
---|
80 | echo '* NEMO Trusting (Continuous Integration Tool) *' |
---|
81 | echo "* ver.$rev *" |
---|
82 | echo '* *' |
---|
83 | echo '****************************************************************************************************' |
---|
84 | echo |
---|
85 | printf "\t§ (Super)Computer\t\t%s\n" ${TRUST_MAIN_HPCC} |
---|
86 | printf "\t§ User installation\t\t%s\n\n" ${TRUST_MAIN_USER} |
---|
87 | echo |
---|
88 | printf "\t§ Testing configuration\t\t%s based on %s\n" \ |
---|
89 | ${TRUST_CFG_NEW} ${TRUST_CFG_REF} |
---|
90 | printf "\t§ SVN working copy\t\t%s/%s\n" \ |
---|
91 | ${TRUST_DIR_WORK} ${TRUST_SVN_BRANCH} |
---|
92 | if [ ${TRUST_TEST_BENCHMARK} ]; then |
---|
93 | printf "\t§ Benchmark folder\t\t%s\n" ${TRUST_TEST_BENCHMARK} |
---|
94 | fi |
---|
95 | |
---|
96 | |
---|
97 | ## Testing directory |
---|
98 | ##------------------ |
---|
99 | |
---|
100 | print_step 'Timestamped testing directory' |
---|
101 | init |
---|
102 | |
---|
103 | |
---|
104 | ## Local working copy |
---|
105 | ##------------------- |
---|
106 | |
---|
107 | print_step 'SVN action on NEMO directories' |
---|
108 | echo "${TRUST_SVN_ACTION} on ${TRUST_SVN_NEMOGCM}:" |
---|
109 | get_nemo_rev |
---|
110 | |
---|
111 | |
---|
112 | ## Environment |
---|
113 | ##------------ |
---|
114 | |
---|
115 | print_step 'Get testing environment' |
---|
116 | get_soft_rel |
---|
117 | |
---|
118 | |
---|
119 | ## Compilation(s) |
---|
120 | ##--------------- |
---|
121 | |
---|
122 | print_step 'Compile XIOS' |
---|
123 | compile_xios |
---|
124 | |
---|
125 | print_step "Compile ${TRUST_CFG_REF} configuration" |
---|
126 | compile_nemo |
---|
127 | |
---|
128 | |
---|
129 | ## Inputs |
---|
130 | ##------- |
---|
131 | |
---|
132 | print_step 'Set job (copying or extracting inputs)' |
---|
133 | get_inputs |
---|
134 | |
---|
135 | print_step 'Compare inputs' |
---|
136 | diff_inputs |
---|
137 | |
---|
138 | |
---|
139 | ## Job |
---|
140 | ##---- |
---|
141 | |
---|
142 | print_step 'Submit job' |
---|
143 | job_submit |
---|
144 | |
---|
145 | print_step 'Pending job' |
---|
146 | job_pending |
---|
147 | |
---|
148 | print_step 'Job finished' |
---|
149 | |
---|
150 | print_step 'Test job state' |
---|
151 | job_state |
---|
152 | |
---|
153 | print_step 'Get job performances' |
---|
154 | job_perfs |
---|
155 | |
---|
156 | |
---|
157 | ## Outputs |
---|
158 | ##-------- |
---|
159 | |
---|
160 | print_step 'Compare outputs' |
---|
161 | diff_results |
---|
162 | |
---|
163 | print_step 'Compare restarts' |
---|
164 | diff_restarts |
---|
165 | |
---|
166 | |
---|
167 | ## End, at least nothing major has changed ;-) |
---|
168 | ##-------------------------------------------- |
---|
169 | |
---|
170 | get_out 0 |
---|