Imported Upstream version 3.16.3
[platform/upstream/nss.git] / tests / nssqa
1 #! /bin/sh
2
3 ########################################################################
4 #
5 # /u/sonmi/bin/nssqa - /u/svbld/bin/init/nss/nssqa
6 #
7 # this script is supposed to automatically run QA for NSS on all required
8 # Unix and Windows (NT and 2000) platforms
9 #
10 # parameters
11 # ----------
12 #   nssversion  (supported: 30b, 31, tip)
13 #   builddate   (default - today)
14 #
15 # options
16 # -------
17 #   -y answer all questions with y - use at your own risk...ignores warnings
18 #   -s silent (only usefull with -y)
19 #   -h, -? - you guessed right - displays this text
20 #   -d debug
21 #   -f <filename> - write the (error)output to filename
22 #   -cron equivalient to -y -s -d -f $RESULTDIR/$HOST.nssqa
23
24 # 12/1/00
25 # took out the (unused) local directory for releasebuild QA on NT
26 # cleaned up 32 - 64 bit issues
27 # took hardcoded machinenames out
28 ########################################################################
29
30 O_OPTIONS=ON            # accept options (see above for listing)
31 WIN_WAIT_FOREVER=ON     # first we wait forever for a TESTDIR to appear, than 
32                         # we wait forever for the build to finish...
33
34 TBX_EXIT=50             # in case we are running on a tinderbox build, any 
35                         # early exit needs to return an error
36 . `dirname $0`/header   # utilities, shellfunctions etc, global to NSS QA
37
38 if [ -z "$O_TBX" -o "$O_TBX" != "ON" ] ; then
39     is_running ${TMP}/nssqa 
40                         # checks if the file exists, if yes Exits, if not 
41                         # creates to implement a primitive locking mechanism
42 fi
43
44 KILL_SELFSERV=OFF       # cleanup will also kill the leftover selfserv processes
45
46 ################################ check_distdir #########################
47 # local shell function to check if the DIST directory exists, if not there 
48 # is no use to continue the test
49 ########################################################################
50 check_distdir()
51 {
52     set_objdir
53
54     if [ ! -d "$LOCALDIST_BIN" ]
55     then
56         Debug "Dist $DIST"
57         Warning "$LOCALDIST_BIN (the dist binaries dir) does not exist"
58         return 1
59     fi
60
61     if [ ! -d "$LOCALDIST" -a ! -h "$LOCALDIST" ]
62     then
63         Debug "Dist $DIST"
64         Warning "$LOCALDIST (the dist directory) does not exist"
65         return 1
66     fi
67
68     Debug "LOCALDIST_BIN $LOCALDIST_BIN"
69     Debug "Dist $DIST"
70     return 0
71 }
72
73 ################################ run_all ###############################
74 # local shell function to start the all.sh after asking user and redirect 
75 # the output apropriately
76 ########################################################################
77 run_all()        
78 {
79     check_distdir || return 1
80     #kill_by_name selfserv
81     ask "Testing $OBJDIR continue with all.sh" "y" "n" || Exit
82
83     Debug "running all.sh in `pwd`"
84     if [ $O_SILENT = ON ]
85     then
86         if [ $O_DEBUG = ON -a $O_FILE = ON ]
87         then
88             all.sh >>$FILENAME 2>>$FILENAME
89         else
90             all.sh >/dev/null 2>/dev/null
91         fi
92     else
93         all.sh
94     fi
95     Debug "Done with all.sh "
96     line
97 }
98
99 all_sh()
100 {
101     echo
102 }
103
104
105 ########################### wait_for_build #############################
106 # local shell function to wait until the build is finished
107 ########################################################################
108 wait_for_build()
109 {
110   if [ $O_WIN = "ON" ]
111   then
112       WaitForever ${OSDIR}/SVbuild.InProgress.1 0 
113                      #Wait for the build to finish Windows a lot longer
114       OS_TARGET=WINNT;export OS_TARGET;Debug "OS_TARGET set to $OS_TARGET"
115       QA_OS_NAME=`cd ${TESTSCRIPTDIR}/common; gmake objdir_name | \
116           sed -e "s/WINNT4.0.*/Windows-NT-4.0/" -e "s/WINNT5.0.*/Windows-2000/"`
117       Echo "WINDOWS-OS-LINE: $QA_OS_NAME"
118   else
119       Wait ${OSDIR}/SVbuild.InProgress.1 0     
120                      #Wait for the build to finish... Unix a few hours
121       qa_stat_get_sysinfo
122       Echo "UNIX-OS-LINE: $QA_OS"
123   fi
124   find_nt_masterbuild
125 }
126
127
128 ########################### map_os #############################
129 # local shell function: From the operatingsystem figure out the name of 
130 #     the build ; needed to detemine if the build finished, passed and for
131 #     the directory names
132 ########################################################################
133 map_os32()
134 {
135     case `uname -s` in
136         SunOS)
137             S_REL=`uname -r | sed -e "s/^[^\.]*\.//g"`
138             if [ `uname -p` = "i386" ] ; then
139                 MAPPED_OS=Solaris8_x86
140             elif [ "$S_REL" -lt 8 ] ; then
141                 MAPPED_OS=Solaris2.6
142             else
143                 MAPPED_OS=Solaris8_forte6
144             fi
145             ;;
146         OSF1)
147             MAPPED_OS=OSF1V4.0
148             ;;
149         Darwin)
150             MAPPED_OS=Darwin6.5
151             ;;  
152         AIX)
153             MAPPED_OS=AIX4.3
154             ;;
155         Linux)
156             RH_MR=`cat /etc/redhat-release | sed \
157                 -e "s/Red Hat Linux release //" -e "s/ .*//g" \
158                 -e "s/\..*//g"`
159             
160             if [ "$RH_MR" = "6" ] ; then
161                 MAPPED_OS=Linux2.2
162             else
163                 MAPPED_OS=Linux2.4
164                 LD_ASSUME_KERNEL="2.2.5"
165                 export LD_ASSUME_KERNEL
166             fi
167             ;;
168         HP-UX)
169             MAPPED_OS=HPUX11.00
170             ;;
171         *)
172             if [ "$os_name" = "Windows" ]
173             then
174                 MAPPED_OS=NT4.0
175             else
176                 Exit "Sorry, operating system `uname -s` is not supported yet"
177             fi
178             ;;
179     esac
180     set_osdir
181     Debug "Mapped OS to $MAPPED_OS"
182 }
183
184 ############################# nssqa_main ###############################
185 # local shell function main controlling function of the nss qa
186 ########################################################################
187 nssqa_main()
188 {
189   Debug "In function nssqa_main"
190
191   if [ $O_WIN = "OFF" -a "$O_TBX" = "OFF" -a $O_LOCAL = "OFF" ] ; then
192       if [ ! -h ${NTDIST}/WINNT5.0_DBG.OBJ -o \
193               ! -h ${UXDIST}/SunOS5.8_OPT.OBJ -o \
194               ! -h ${UXDIST}/OSF1V5.0_DBG.OBJ ] ; then
195           # determine if all needed symbolic links are present, in case
196           # we build on one platform and QA on another
197           # create the symbolic links
198           #mksymlinks $* ||
199           `dirname $0`/mksymlinks  $NSSVER $BUILDDATE ||
200               Warning "Can't make the neccessary symbolic links"
201       fi
202   fi
203
204   if [ -d $TESTSCRIPTDIR ]    #the directory mozilla/security/nss/tests, 
205   then            # where all.sh lives
206       cd $TESTSCRIPTDIR
207   else
208       Exit "cant cd to $TESTSCRIPTDIR Exiting"
209   fi
210
211   Debug "Testing from `pwd`"
212   line
213   Debug "HOST: $HOST, DOMSUF: $DOMSUF"
214
215   if [  "$O_TBX" = "OFF" ] ; then
216       map_os32 # From the operatingsystem figure out the name of the build 
217       Debug Testing build for $MAPPED_OS in $OSDIR
218       wait_for_build
219   fi
220   run_all
221   BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT"
222   run_all
223   
224   # now for the 64 bit build!
225   map_os64 # From the operatingsystem figure out the name of the build 
226   if [ -n "$IS_64" ] ; then #Wait for the 64 bit build to finish...
227       Debug "This is a $IS_64 platform"
228       USE_64=1;export USE_64;Debug "Use_64 set to $USE_64"
229       unset BUILD_OPT;export BUILD_OPT;Debug "BUILD_OPT $BUILD_OPT"
230
231       run_all
232       BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT"
233       run_all
234   elif [ "$O_WIN" = "ON" ] ; then
235       OS_TARGET=WIN95;export OS_TARGET
236       Debug "OS_TARGET set to $OS_TARGET"
237       #Echo "WINDOWS-OS-LINE: $os_name $os_full $OS_TARGET"
238       unset BUILD_OPT;export BUILD_OPT;Debug "BUILD_OPT $BUILD_OPT"
239       #if [ "$TEST_LEVEL" = "0" ] ; then
240           #QA_OS_NAME=`cd ${TESTSCRIPTDIR}/common; gmake objdir_name | \
241               #sed -e "s/WINNT4.0.*/Windows-NT-4.0/" -e \
242                      #"s/WINNT5.0.*/Windows-2000/"`
243           #Echo "WINDOWS-OS-LINE: $QA_OS_NAME $OS_TARGET"
244       #fi
245       run_all
246       BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT"
247       run_all
248   else
249       Debug "This is a 32 bit platform"
250   fi
251 }
252   
253 TEST_LEVEL=0
254
255 while [ $TEST_LEVEL -lt 2 ] ; do 
256     export TEST_LEVEL
257     unset BUILD_OPT;export BUILD_OPT;Debug "BUILD_OPT $BUILD_OPT"
258     unset USE_64;export USE_64;Debug "USE_64 $USE_64"
259     bc $TEST_LEVEL
260     Debug "About to start nssqa_main"
261     if [ $O_FILE = ON -a "$O_WIN" != "ON" ] ; then
262         nssqa_main 2>>$FILENAME
263     else
264         nssqa_main
265     fi
266     if [  "$O_TBX" = "ON" ] ; then      # do not do backward compatibility 
267          TEST_LEVEL=3                   # testing on tinderbox
268     else
269          TEST_LEVEL=`expr $TEST_LEVEL + 1 `
270     fi
271 done
272
273 if [  "$O_TBX" = "ON" -o "$O_LOCAL" = "ON" ] ; then
274 #FIXME - maybe it should be copied back to the networkdrive later (-ln)
275     if [ -n "${TMPFILES}" ] ; then #caused problems on tinderbox machines
276         Debug "rm -f ${TMPFILES}"
277         rm -f $TMPFILES 2>/dev/null
278     fi
279     Debug "running qa_stat"
280     . `dirname $0`/qa_stat
281 fi
282
283   
284 qa_stat_get_sysinfo
285
286 Exit "nssqa completed. Done `uname -n` $QA_OS_STRING"