security/nss/tests/common/init.sh

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/security/nss/tests/common/init.sh	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,652 @@
     1.4 +#! /bin/bash
     1.5 +#
     1.6 +# This Source Code Form is subject to the terms of the Mozilla Public
     1.7 +# License, v. 2.0. If a copy of the MPL was not distributed with this
     1.8 +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
     1.9 +
    1.10 +########################################################################
    1.11 +#
    1.12 +# mozilla/security/nss/tests/common/init.sh
    1.13 +#
    1.14 +# initialization for NSS QA, can be included multiple times
    1.15 +# from all.sh and the individual scripts
    1.16 +#
    1.17 +# variables, utilities and shellfunctions global to NSS QA
    1.18 +# needs to work on all Unix and Windows platforms
    1.19 +#
    1.20 +# included from 
    1.21 +# -------------
    1.22 +#   all.sh
    1.23 +#   ssl.sh
    1.24 +#   sdr.sh
    1.25 +#   cipher.sh
    1.26 +#   perf.sh
    1.27 +#   cert.sh
    1.28 +#   smime.sh
    1.29 +#   tools.sh
    1.30 +#   fips.sh
    1.31 +#
    1.32 +# special strings
    1.33 +# ---------------
    1.34 +#   FIXME ... known problems, search for this string
    1.35 +#   NOTE .... unexpected behavior
    1.36 +#
    1.37 +# NOTE:
    1.38 +# -----
    1.39 +#    Unlike the old QA this is based on files sourcing each other
    1.40 +#    This is done to save time, since a great portion of time is lost
    1.41 +#    in calling and sourcing the same things multiple times over the
    1.42 +#    network. Also, this way all scripts have all shell function  available
    1.43 +#    and a completely common environment
    1.44 +#
    1.45 +########################################################################
    1.46 +
    1.47 +NSS_STRICT_SHUTDOWN=1
    1.48 +export NSS_STRICT_SHUTDOWN
    1.49 +
    1.50 +# Init directories based on HOSTDIR variable
    1.51 +if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then
    1.52 +    init_directories()
    1.53 +    {
    1.54 +        TMP=${HOSTDIR}      #TMP=${TMP-/tmp}
    1.55 +        TEMP=${TMP}
    1.56 +        TMPDIR=${TMP}
    1.57 +
    1.58 +        CADIR=${HOSTDIR}/CA
    1.59 +        SERVERDIR=${HOSTDIR}/server
    1.60 +        CLIENTDIR=${HOSTDIR}/client
    1.61 +        ALICEDIR=${HOSTDIR}/alicedir
    1.62 +        BOBDIR=${HOSTDIR}/bobdir
    1.63 +        DAVEDIR=${HOSTDIR}/dave
    1.64 +        EVEDIR=${HOSTDIR}/eve
    1.65 +        FIPSDIR=${HOSTDIR}/fips
    1.66 +        DBPASSDIR=${HOSTDIR}/dbpass
    1.67 +        ECCURVES_DIR=${HOSTDIR}/eccurves
    1.68 +        DISTRUSTDIR=${HOSTDIR}/distrust
    1.69 +
    1.70 +        SERVER_CADIR=${HOSTDIR}/serverCA
    1.71 +        CLIENT_CADIR=${HOSTDIR}/clientCA
    1.72 +        EXT_SERVERDIR=${HOSTDIR}/ext_server
    1.73 +        EXT_CLIENTDIR=${HOSTDIR}/ext_client
    1.74 +
    1.75 +        IOPR_CADIR=${HOSTDIR}/CA_iopr
    1.76 +        IOPR_SSL_SERVERDIR=${HOSTDIR}/server_ssl_iopr
    1.77 +        IOPR_SSL_CLIENTDIR=${HOSTDIR}/client_ssl_iopr
    1.78 +        IOPR_OCSP_CLIENTDIR=${HOSTDIR}/client_ocsp_iopr
    1.79 +
    1.80 +        CERT_EXTENSIONS_DIR=${HOSTDIR}/cert_extensions
    1.81 +        STAPLINGDIR=${HOSTDIR}/stapling
    1.82 +
    1.83 +        PWFILE=${HOSTDIR}/tests.pw
    1.84 +        NOISE_FILE=${HOSTDIR}/tests_noise
    1.85 +        CORELIST_FILE=${HOSTDIR}/clist
    1.86 +
    1.87 +        FIPSPWFILE=${HOSTDIR}/tests.fipspw
    1.88 +        FIPSBADPWFILE=${HOSTDIR}/tests.fipsbadpw
    1.89 +        FIPSP12PWFILE=${HOSTDIR}/tests.fipsp12pw
    1.90 +
    1.91 +        echo "fIps140" > ${FIPSPWFILE}
    1.92 +        echo "fips104" > ${FIPSBADPWFILE}
    1.93 +        echo "pKcs12fips140" > ${FIPSP12PWFILE}
    1.94 +
    1.95 +        noise
    1.96 +
    1.97 +        P_SERVER_CADIR=${SERVER_CADIR}
    1.98 +        P_CLIENT_CADIR=${CLIENT_CADIR}
    1.99 +    
   1.100 +        if [ -n "${MULTIACCESS_DBM}" ]; then
   1.101 +            P_SERVER_CADIR="multiaccess:${D_SERVER_CA}"
   1.102 +            P_CLIENT_CADIR="multiaccess:${D_CLIENT_CA}"
   1.103 +        fi
   1.104 +
   1.105 +
   1.106 +        # a new log file, short - fast to search, mostly for tools to
   1.107 +        # see if their portion of the cert has succeeded, also for me -
   1.108 +        CERT_LOG_FILE=${HOSTDIR}/cert.log      #the output.log is so crowded...
   1.109 +
   1.110 +        TEMPFILES=foobar   # keep "${PWFILE} ${NOISE_FILE}" around
   1.111 +
   1.112 +        export HOSTDIR
   1.113 +    }
   1.114 +
   1.115 +# Generate noise file
   1.116 +    noise()
   1.117 +    {
   1.118 +        # NOTE: these keys are only suitable for testing, as this whole thing 
   1.119 +        # bypasses the entropy gathering. Don't use this method to generate 
   1.120 +        # keys and certs for product use or deployment.
   1.121 +        ps -efl > ${NOISE_FILE} 2>&1
   1.122 +        ps aux >> ${NOISE_FILE} 2>&1
   1.123 +        date >> ${NOISE_FILE} 2>&1
   1.124 +    }
   1.125 +
   1.126 +# Print selected environment variable (used for backup)
   1.127 +    env_backup()
   1.128 +    {
   1.129 +        echo "HOSTDIR=\"${HOSTDIR}\""
   1.130 +        echo "TABLE_ARGS="
   1.131 +        echo "NSS_TEST_DISABLE_CRL=${NSS_TEST_DISABLE_CRL}"
   1.132 +        echo "NSS_SSL_TESTS=\"${NSS_SSL_TESTS}\""
   1.133 +        echo "NSS_SSL_RUN=\"${NSS_SSL_RUN}\""
   1.134 +        echo "NSS_DEFAULT_DB_TYPE=${NSS_DEFAULT_DB_TYPE}"
   1.135 +        echo "export NSS_DEFAULT_DB_TYPE"
   1.136 +        echo "NSS_ENABLE_PKIX_VERIFY=${NSS_ENABLE_PKIX_VERIFY}"
   1.137 +        echo "export NSS_ENABLE_PKIX_VERIFY"
   1.138 +        echo "init_directories"
   1.139 +    }
   1.140 +
   1.141 +# Exit shellfunction to clean up at exit (error, regular or signal)
   1.142 +    Exit()
   1.143 +    {
   1.144 +        if [ -n "$1" ] ; then
   1.145 +            echo "$SCRIPTNAME: Exit: $* - FAILED"
   1.146 +            html_failed "$*"
   1.147 +        fi
   1.148 +        echo "</TABLE><BR>" >> ${RESULTS}
   1.149 +        if [ -n "${SERVERPID}" -a -f "${SERVERPID}" ]; then
   1.150 +            ${KILL} `cat ${SERVERPID}`
   1.151 +        fi
   1.152 +        cd ${QADIR}
   1.153 +        . common/cleanup.sh
   1.154 +        case $1 in
   1.155 +            [0-4][0-9]|[0-9])
   1.156 +                exit $1;
   1.157 +                ;;
   1.158 +            *)
   1.159 +                exit 1
   1.160 +                ;;
   1.161 +        esac
   1.162 +    }
   1.163 +
   1.164 +    detect_core()
   1.165 +    {
   1.166 +        [ ! -f $CORELIST_FILE ] && touch $CORELIST_FILE
   1.167 +        mv $CORELIST_FILE ${CORELIST_FILE}.old
   1.168 +        coreStr=`find $HOSTDIR -type f -name '*core*'`
   1.169 +        res=0
   1.170 +        if [ -n "$coreStr" ]; then
   1.171 +            sum $coreStr > $CORELIST_FILE
   1.172 +            res=`cat $CORELIST_FILE ${CORELIST_FILE}.old | sort | uniq -u | wc -l`
   1.173 +        fi
   1.174 +        return $res
   1.175 +    }
   1.176 +
   1.177 +#html functions to give the resultfiles a consistant look
   1.178 +    html() #########################    write the results.html file
   1.179 +    {      # 3 functions so we can put targets in the output.log easier
   1.180 +        echo $* >>${RESULTS}
   1.181 +    }
   1.182 +    html_passed()
   1.183 +    {
   1.184 +        html_detect_core "$@" || return
   1.185 +        MSG_ID=`cat ${MSG_ID_FILE}`
   1.186 +        MSG_ID=`expr ${MSG_ID} + 1`
   1.187 +        echo ${MSG_ID} > ${MSG_ID_FILE}
   1.188 +        html "<TR><TD>#${MSG_ID}: $1 ${HTML_PASSED}"
   1.189 +        echo "${SCRIPTNAME}: #${MSG_ID}: $* - PASSED"
   1.190 +    }
   1.191 +    html_failed()
   1.192 +    {
   1.193 +        html_detect_core "$@" || return
   1.194 +        MSG_ID=`cat ${MSG_ID_FILE}`
   1.195 +        MSG_ID=`expr ${MSG_ID} + 1`
   1.196 +        echo ${MSG_ID} > ${MSG_ID_FILE}
   1.197 +        html "<TR><TD>#${MSG_ID}: $1 ${HTML_FAILED}"
   1.198 +        echo "${SCRIPTNAME}: #${MSG_ID}: $* - FAILED"
   1.199 +    }
   1.200 +    html_unknown()
   1.201 +    {
   1.202 +        html_detect_core "$@" || return
   1.203 +        MSG_ID=`cat ${MSG_ID_FILE}`
   1.204 +        MSG_ID=`expr ${MSG_ID} + 1`
   1.205 +        echo ${MSG_ID} > ${MSG_ID_FILE}
   1.206 +        html "<TR><TD>#${MSG_ID}: $1 ${HTML_UNKNOWN}"
   1.207 +        echo "${SCRIPTNAME}: #${MSG_ID}: $* - UNKNOWN"
   1.208 +    }
   1.209 +    html_detect_core()
   1.210 +    {
   1.211 +        detect_core
   1.212 +        if [ $? -ne 0 ]; then
   1.213 +            MSG_ID=`cat ${MSG_ID_FILE}`
   1.214 +            MSG_ID=`expr ${MSG_ID} + 1`
   1.215 +            echo ${MSG_ID} > ${MSG_ID_FILE}
   1.216 +            html "<TR><TD>#${MSG_ID}: $* ${HTML_FAILED_CORE}"
   1.217 +            echo "${SCRIPTNAME}: #${MSG_ID}: $* - Core file is detected - FAILED"
   1.218 +            return 1
   1.219 +        fi
   1.220 +        return 0
   1.221 +    }
   1.222 +    html_head()
   1.223 +    {
   1.224 +	
   1.225 +        html "<TABLE BORDER=1 ${TABLE_ARGS}><TR><TH COLSPAN=3>$*</TH></TR>"
   1.226 +        html "<TR><TH width=500>Test Case</TH><TH width=50>Result</TH></TR>" 
   1.227 +        echo "$SCRIPTNAME: $* ==============================="
   1.228 +    }
   1.229 +    html_msg()
   1.230 +    {
   1.231 +        if [ "$1" -ne "$2" ] ; then
   1.232 +            html_failed "$3" "$4"
   1.233 +        else
   1.234 +            html_passed "$3" "$4"
   1.235 +        fi
   1.236 +    }
   1.237 +    HTML_FAILED='</TD><TD bgcolor=red>Failed</TD><TR>'
   1.238 +    HTML_FAILED_CORE='</TD><TD bgcolor=red>Failed Core</TD><TR>'
   1.239 +    HTML_PASSED='</TD><TD bgcolor=lightGreen>Passed</TD><TR>'
   1.240 +    HTML_UNKNOWN='</TD><TD>Unknown/TD><TR>'
   1.241 +    TABLE_ARGS=
   1.242 +
   1.243 +
   1.244 +#directory name init
   1.245 +    SCRIPTNAME=init.sh
   1.246 +
   1.247 +    mozilla_root=`(cd ../../..; pwd)`
   1.248 +    MOZILLA_ROOT=${MOZILLA_ROOT-$mozilla_root}
   1.249 +
   1.250 +    qadir=`(cd ..; pwd)`
   1.251 +    QADIR=${QADIR-$qadir}
   1.252 +
   1.253 +    common=${QADIR}/common
   1.254 +    COMMON=${TEST_COMMON-$common}
   1.255 +    export COMMON
   1.256 +
   1.257 +    DIST=${DIST-${MOZILLA_ROOT}/dist}
   1.258 +    TESTDIR=${TESTDIR-${MOZILLA_ROOT}/tests_results/security}
   1.259 +
   1.260 +    # Allow for override options from a config file
   1.261 +    if [ -n "${OBJDIR}" -a -f ${DIST}/${OBJDIR}/platform.cfg ]; then
   1.262 +	. ${DIST}/${OBJDIR}/platform.cfg
   1.263 +    fi
   1.264 +
   1.265 +    # only need make if we don't already have certain variables set
   1.266 +    if [ -z "${OBJDIR}" -o -z "${OS_ARCH}" -o -z "${DLL_PREFIX}" -o -z "${DLL_SUFFIX}" ]; then
   1.267 +        MAKE=gmake
   1.268 +        $MAKE -v >/dev/null 2>&1 || MAKE=make
   1.269 +        $MAKE -v >/dev/null 2>&1 || { echo "You are missing make."; exit 5; }
   1.270 +        MAKE="$MAKE --no-print-directory"
   1.271 +    fi
   1.272 +
   1.273 +    if [ "${OBJDIR}" = "" ]; then
   1.274 +        OBJDIR=`(cd $COMMON; $MAKE objdir_name)`
   1.275 +    fi
   1.276 +    if [ "${OS_ARCH}" = "" ]; then
   1.277 +        OS_ARCH=`(cd $COMMON; $MAKE os_arch)`
   1.278 +    fi
   1.279 +    if [ "${DLL_PREFIX}" = "" ]; then
   1.280 +        DLL_PREFIX=`(cd $COMMON; $MAKE dll_prefix)`
   1.281 +    fi
   1.282 +    if [ "${DLL_SUFFIX}" = "" ]; then
   1.283 +        DLL_SUFFIX=`(cd $COMMON; $MAKE dll_suffix)`
   1.284 +    fi
   1.285 +    OS_NAME=`uname -s | sed -e "s/-[0-9]*\.[0-9]*//" | sed -e "s/-WOW64//"`
   1.286 +
   1.287 +    BINDIR="${DIST}/${OBJDIR}/bin"
   1.288 +
   1.289 +    # Pathnames constructed from ${TESTDIR} are passed to NSS tools
   1.290 +    # such as certutil, which don't understand Cygwin pathnames.
   1.291 +    # So we need to convert ${TESTDIR} to a Windows pathname (with
   1.292 +    # regular slashes).
   1.293 +    if [ "${OS_ARCH}" = "WINNT" -a "$OS_NAME" = "CYGWIN_NT" ]; then
   1.294 +        TESTDIR=`cygpath -m ${TESTDIR}`
   1.295 +        QADIR=`cygpath -m ${QADIR}`
   1.296 +    fi
   1.297 +
   1.298 +    # Same problem with MSYS/Mingw, except we need to start over with pwd -W
   1.299 +    if [ "${OS_ARCH}" = "WINNT" -a "$OS_NAME" = "MINGW32_NT" ]; then
   1.300 +		mingw_mozilla_root=`(cd ../../..; pwd -W)`
   1.301 +		MINGW_MOZILLA_ROOT=${MINGW_MOZILLA_ROOT-$mingw_mozilla_root}
   1.302 +		TESTDIR=${MINGW_TESTDIR-${MINGW_MOZILLA_ROOT}/tests_results/security}
   1.303 +    fi
   1.304 +
   1.305 +    # Same problem with MSYS/Mingw, except we need to start over with pwd -W
   1.306 +    if [ "${OS_ARCH}" = "WINNT" -a "$OS_NAME" = "MINGW32_NT" ]; then
   1.307 +		mingw_mozilla_root=`(cd ../../..; pwd -W)`
   1.308 +		MINGW_MOZILLA_ROOT=${MINGW_MOZILLA_ROOT-$mingw_mozilla_root}
   1.309 +		TESTDIR=${MINGW_TESTDIR-${MINGW_MOZILLA_ROOT}/tests_results/security}
   1.310 +    fi
   1.311 +    echo testdir is $TESTDIR
   1.312 +
   1.313 +#in case of backward comp. tests the calling scripts set the
   1.314 +#PATH and LD_LIBRARY_PATH and do not want them to be changed
   1.315 +    if [ -z "${DON_T_SET_PATHS}" -o "${DON_T_SET_PATHS}" != "TRUE" ] ; then
   1.316 +        if [ "${OS_ARCH}" = "WINNT" -a "$OS_NAME"  != "CYGWIN_NT" -a "$OS_NAME" != "MINGW32_NT" ]; then
   1.317 +            PATH=.\;${DIST}/${OBJDIR}/bin\;${DIST}/${OBJDIR}/lib\;$PATH
   1.318 +            PATH=`perl ../path_uniq -d ';' "$PATH"`
   1.319 +        elif [ "${OS_ARCH}" = "Android" ]; then
   1.320 +	    # android doesn't have perl, skip the uniq step
   1.321 +            PATH=.:${DIST}/${OBJDIR}/bin:${DIST}/${OBJDIR}/lib:$PATH
   1.322 +	else 
   1.323 +            PATH=.:${DIST}/${OBJDIR}/bin:${DIST}/${OBJDIR}/lib:/bin:/usr/bin:$PATH
   1.324 +            # added /bin and /usr/bin in the beginning so a local perl will 
   1.325 +            # be used
   1.326 +            PATH=`perl ../path_uniq -d ':' "$PATH"`
   1.327 +        fi
   1.328 +
   1.329 +        LD_LIBRARY_PATH=${DIST}/${OBJDIR}/lib:$LD_LIBRARY_PATH
   1.330 +        SHLIB_PATH=${DIST}/${OBJDIR}/lib:$SHLIB_PATH
   1.331 +        LIBPATH=${DIST}/${OBJDIR}/lib:$LIBPATH
   1.332 +        DYLD_LIBRARY_PATH=${DIST}/${OBJDIR}/lib:$DYLD_LIBRARY_PATH
   1.333 +    fi
   1.334 +
   1.335 +    if [ ! -d "${TESTDIR}" ]; then
   1.336 +        echo "$SCRIPTNAME init: Creating ${TESTDIR}"
   1.337 +        mkdir -p ${TESTDIR}
   1.338 +    fi
   1.339 +
   1.340 +#HOST and DOMSUF are needed for the server cert
   1.341 +
   1.342 +    DOMAINNAME=`which domainname`
   1.343 +    if [ -z "${DOMSUF}" -a $? -eq 0 -a -n "${DOMAINNAME}" ]; then
   1.344 +        DOMSUF=`domainname`
   1.345 +    fi
   1.346 +
   1.347 +    case $HOST in
   1.348 +        *\.*)
   1.349 +            if [ -z "${DOMSUF}" ]; then
   1.350 +                DOMSUF=`echo $HOST | sed -e "s/^[^.]*\.//"`
   1.351 +            fi
   1.352 +            HOST=`echo $HOST | sed -e "s/\..*//"`
   1.353 +            ;;
   1.354 +        ?*)
   1.355 +            ;;
   1.356 +        *)
   1.357 +            HOST=`uname -n`
   1.358 +            case $HOST in
   1.359 +                *\.*)
   1.360 +                    if [ -z "${DOMSUF}" ]; then
   1.361 +                        DOMSUF=`echo $HOST | sed -e "s/^[^.]*\.//"`
   1.362 +                    fi
   1.363 +                    HOST=`echo $HOST | sed -e "s/\..*//"`
   1.364 +                    ;;
   1.365 +                ?*)
   1.366 +                    ;;
   1.367 +                *)
   1.368 +                    echo "$SCRIPTNAME: Fatal HOST environment variable is not defined."
   1.369 +                    exit 1 #does not need to be Exit, very early in script
   1.370 +                    ;;
   1.371 +            esac
   1.372 +            ;;
   1.373 +    esac
   1.374 +
   1.375 +    if [ -z "${DOMSUF}" -a "${OS_ARCH}" != "Android" ]; then
   1.376 +        echo "$SCRIPTNAME: Fatal DOMSUF env. variable is not defined."
   1.377 +        exit 1 #does not need to be Exit, very early in script
   1.378 +    fi
   1.379 +
   1.380 +#HOSTADDR was a workaround for the dist. stress test, and is probably 
   1.381 +#not needed anymore (purpose: be able to use IP address for the server 
   1.382 +#cert instead of PC name which was not in the DNS because of dyn IP address
   1.383 +    if [ -z "$USE_IP" -o "$USE_IP" != "TRUE" ] ; then
   1.384 +	if [ -z "${DOMSUF}" ]; then
   1.385 +            HOSTADDR=${HOST}
   1.386 +	else
   1.387 +            HOSTADDR=${HOST}.${DOMSUF}
   1.388 +	fi
   1.389 +    else
   1.390 +        HOSTADDR=${IP_ADDRESS}
   1.391 +    fi
   1.392 +
   1.393 +#if running remote side of the distributed stress test we need to use 
   1.394 +#the files that the server side gives us...
   1.395 +    if [ -n "$DO_REM_ST" -a "$DO_REM_ST" = "TRUE" ] ; then
   1.396 +        for w in `ls -rtd ${TESTDIR}/${HOST}.[0-9]* 2>/dev/null |
   1.397 +            sed -e "s/.*${HOST}.//"` ; do
   1.398 +                version=$w
   1.399 +        done
   1.400 +        HOSTDIR=${TESTDIR}/${HOST}.$version
   1.401 +        echo "$SCRIPTNAME init: HOSTDIR $HOSTDIR"
   1.402 +        echo $HOSTDIR
   1.403 +        if [ ! -d $HOSTDIR ] ; then
   1.404 +            echo "$SCRIPTNAME: Fatal: Remote side of dist. stress test "
   1.405 +            echo "       - server HOSTDIR $HOSTDIR does not exist"
   1.406 +            exit 1 #does not need to be Exit, very early in script
   1.407 +        fi
   1.408 +    fi
   1.409 +
   1.410 +#find the HOSTDIR, where the results are supposed to go
   1.411 +    if [ -n "${HOSTDIR}" ]; then
   1.412 +        version=`echo $HOSTDIR | sed  -e "s/.*${HOST}.//"` 
   1.413 +    else
   1.414 +        if [ -f "${TESTDIR}/${HOST}" ]; then
   1.415 +            version=`cat ${TESTDIR}/${HOST}`
   1.416 +        else
   1.417 +            version=1
   1.418 +        fi
   1.419 +#file has a tendency to disappear, messing up the rest of QA - 
   1.420 +#workaround to find the next higher number if version file is not there
   1.421 +        if [ -z "${version}" ]; then    # for some strange reason this file
   1.422 +                                        # gets truncated at times... Windos
   1.423 +            for w in `ls -d ${TESTDIR}/${HOST}.[0-9]* 2>/dev/null |
   1.424 +                sort -t '.' -n | sed -e "s/.*${HOST}.//"` ; do
   1.425 +                version=`expr $w + 1`
   1.426 +            done
   1.427 +            if [ -z "${version}" ]; then
   1.428 +                version=1
   1.429 +            fi
   1.430 +        fi
   1.431 +        expr $version + 1 > ${TESTDIR}/${HOST}
   1.432 +
   1.433 +        HOSTDIR=${TESTDIR}/${HOST}'.'$version
   1.434 +
   1.435 +        mkdir -p ${HOSTDIR}
   1.436 +    fi
   1.437 +
   1.438 +#result and log file and filename init,
   1.439 +    if [ -z "${LOGFILE}" ]; then
   1.440 +        LOGFILE=${HOSTDIR}/output.log
   1.441 +    fi
   1.442 +    if [ ! -f "${LOGFILE}" ]; then
   1.443 +        touch ${LOGFILE}
   1.444 +    fi
   1.445 +    if [ -z "${RESULTS}" ]; then
   1.446 +        RESULTS=${HOSTDIR}/results.html
   1.447 +    fi
   1.448 +    if [ ! -f "${RESULTS}" ]; then
   1.449 +        cp ${COMMON}/results_header.html ${RESULTS}
   1.450 +        html "<H4>Platform: ${OBJDIR}<BR>" 
   1.451 +        html "Test Run: ${HOST}.$version</H4>" 
   1.452 +        html "${BC_ACTION}"
   1.453 +        html "<HR><BR>" 
   1.454 +        html "<HTML><BODY>" 
   1.455 +
   1.456 +        echo "********************************************" | tee -a ${LOGFILE}
   1.457 +        echo "   Platform: ${OBJDIR}"                       | tee -a ${LOGFILE}
   1.458 +        echo "   Results: ${HOST}.$version"                 | tee -a ${LOGFILE}
   1.459 +        echo "********************************************" | tee -a ${LOGFILE}
   1.460 +	echo "$BC_ACTION"                                   | tee -a ${LOGFILE}
   1.461 +#if running remote side of the distributed stress test 
   1.462 +# let the user know who it is...
   1.463 +    elif [ -n "$DO_REM_ST" -a "$DO_REM_ST" = "TRUE" ] ; then
   1.464 +        echo "********************************************" | tee -a ${LOGFILE}
   1.465 +        echo "   Platform: ${OBJDIR}"                       | tee -a ${LOGFILE}
   1.466 +        echo "   Results: ${HOST}.$version"                 | tee -a ${LOGFILE}
   1.467 +        echo "   remote side of distributed stress test "   | tee -a ${LOGFILE}
   1.468 +        echo "   `uname -n -s`"                             | tee -a ${LOGFILE}
   1.469 +        echo "********************************************" | tee -a ${LOGFILE}
   1.470 +    fi
   1.471 +
   1.472 +    echo "$SCRIPTNAME init: Testing PATH $PATH against LIB $LD_LIBRARY_PATH" |\
   1.473 +        tee -a ${LOGFILE}
   1.474 +
   1.475 +    KILL="kill"
   1.476 +
   1.477 +    if [ `uname -s` = "SunOS" ]; then
   1.478 +        PS="/usr/5bin/ps"
   1.479 +    else
   1.480 +        PS="ps"
   1.481 +    fi
   1.482 +#found 3 rsh's so far that do not work as expected - cygnus mks6 
   1.483 +#(restricted sh) and mks 7 - if it is not in c:/winnt/system32 it
   1.484 +#needs to be set in the environ.ksh
   1.485 +    if [ -z "$RSH" ]; then
   1.486 +        if [ "${OS_ARCH}" = "WINNT" -a "$OS_NAME"  = "CYGWIN_NT" ]; then
   1.487 +            RSH=/cygdrive/c/winnt/system32/rsh
   1.488 +        elif [ "${OS_ARCH}" = "WINNT" ]; then
   1.489 +            RSH=c:/winnt/system32/rsh
   1.490 +        else
   1.491 +            RSH=rsh
   1.492 +        fi
   1.493 +    fi
   1.494 +   
   1.495 +
   1.496 +#more filename and directoryname init
   1.497 +    CURDIR=`pwd`
   1.498 +
   1.499 +    CU_ACTION='Unknown certutil action'
   1.500 +
   1.501 +    # would like to preserve some tmp files, also easier to see if there 
   1.502 +    # are "leftovers" - another possibility ${HOSTDIR}/tmp
   1.503 +
   1.504 +    init_directories
   1.505 +
   1.506 +    FIPSCERTNICK="FIPS_PUB_140_Test_Certificate"
   1.507 +
   1.508 +    # domains to handle ipc based access to databases
   1.509 +    D_CA="TestCA.$version"
   1.510 +    D_ALICE="Alice.$version"
   1.511 +    D_BOB="Bob.$version"
   1.512 +    D_DAVE="Dave.$version"
   1.513 +    D_EVE="Eve.$version"
   1.514 +    D_SERVER_CA="ServerCA.$version"
   1.515 +    D_CLIENT_CA="ClientCA.$version"
   1.516 +    D_SERVER="Server.$version"
   1.517 +    D_CLIENT="Client.$version"
   1.518 +    D_FIPS="FIPS.$version"
   1.519 +    D_DBPASS="DBPASS.$version"
   1.520 +    D_ECCURVES="ECCURVES.$version"
   1.521 +    D_EXT_SERVER="ExtendedServer.$version"
   1.522 +    D_EXT_CLIENT="ExtendedClient.$version"
   1.523 +    D_CERT_EXTENSTIONS="CertExtensions.$version"
   1.524 +    D_DISTRUST="Distrust.$version"
   1.525 +
   1.526 +    # we need relative pathnames of these files abd directories, since our 
   1.527 +    # tools can't handle the unix style absolut pathnames on cygnus
   1.528 +
   1.529 +    R_CADIR=../CA
   1.530 +    R_SERVERDIR=../server
   1.531 +    R_CLIENTDIR=../client
   1.532 +    R_IOPR_CADIR=../CA_iopr
   1.533 +    R_IOPR_SSL_SERVERDIR=../server_ssl_iopr
   1.534 +    R_IOPR_SSL_CLIENTDIR=../client_ssl_iopr
   1.535 +    R_IOPR_OCSP_CLIENTDIR=../client_ocsp_iopr
   1.536 +    R_ALICEDIR=../alicedir
   1.537 +    R_BOBDIR=../bobdir
   1.538 +    R_DAVEDIR=../dave
   1.539 +    R_EVEDIR=../eve
   1.540 +    R_EXT_SERVERDIR=../ext_server
   1.541 +    R_EXT_CLIENTDIR=../ext_client
   1.542 +    R_CERT_EXT=../cert_extensions
   1.543 +    R_STAPLINGDIR=../stapling
   1.544 +
   1.545 +    #
   1.546 +    # profiles are either paths or domains depending on the setting of
   1.547 +    # MULTIACCESS_DBM
   1.548 +    #
   1.549 +    P_R_CADIR=${R_CADIR}
   1.550 +    P_R_ALICEDIR=${R_ALICEDIR}
   1.551 +    P_R_BOBDIR=${R_BOBDIR}
   1.552 +    P_R_DAVEDIR=${R_DAVEDIR}
   1.553 +    P_R_EVEDIR=${R_EVEDIR}
   1.554 +    P_R_SERVERDIR=${R_SERVERDIR}
   1.555 +    P_R_CLIENTDIR=${R_CLIENTDIR}
   1.556 +    P_R_EXT_SERVERDIR=${R_EXT_SERVERDIR}
   1.557 +    P_R_EXT_CLIENTDIR=${R_EXT_CLIENTDIR}
   1.558 +    if [ -n "${MULTIACCESS_DBM}" ]; then
   1.559 +	P_R_CADIR="multiaccess:${D_CA}"
   1.560 +	P_R_ALICEDIR="multiaccess:${D_ALICE}"
   1.561 +	P_R_BOBDIR="multiaccess:${D_BOB}"
   1.562 +	P_R_DAVEDIR="multiaccess:${D_DAVE}"
   1.563 +	P_R_EVEDIR="multiaccess:${D_EVE}"
   1.564 +	P_R_SERVERDIR="multiaccess:${D_SERVER}"
   1.565 +	P_R_CLIENTDIR="multiaccess:${D_CLIENT}"
   1.566 +	P_R_EXT_SERVERDIR="multiaccess:${D_EXT_SERVER}"
   1.567 +	P_R_EXT_CLIENTDIR="multiaccess:${D_EXT_CLIENT}"
   1.568 +    fi
   1.569 +
   1.570 +    R_PWFILE=../tests.pw
   1.571 +    R_NOISE_FILE=../tests_noise
   1.572 +
   1.573 +    R_FIPSPWFILE=../tests.fipspw
   1.574 +    R_FIPSBADPWFILE=../tests.fipsbadpw
   1.575 +    R_FIPSP12PWFILE=../tests.fipsp12pw
   1.576 +
   1.577 +    trap "Exit $0 Signal_caught" 2 3
   1.578 +
   1.579 +    export PATH LD_LIBRARY_PATH SHLIB_PATH LIBPATH DYLD_LIBRARY_PATH
   1.580 +    export DOMSUF HOSTADDR
   1.581 +    export KILL PS
   1.582 +    export MOZILLA_ROOT DIST TESTDIR OBJDIR QADIR
   1.583 +    export LOGFILE SCRIPTNAME
   1.584 +
   1.585 +#used for the distributed stress test, the server generates certificates 
   1.586 +#from GLOB_MIN_CERT to GLOB_MAX_CERT 
   1.587 +# NOTE - this variable actually gets initialized by directly by the 
   1.588 +# ssl_dist_stress.shs sl_ds_init() before init is called - need to change 
   1.589 +# in  both places. speaking of data encapsulatioN...
   1.590 +
   1.591 +    if [ -z "$GLOB_MIN_CERT" ] ; then
   1.592 +        GLOB_MIN_CERT=0
   1.593 +    fi
   1.594 +    if [ -z "$GLOB_MAX_CERT" ] ; then
   1.595 +        GLOB_MAX_CERT=200
   1.596 +    fi
   1.597 +    if [ -z "$MIN_CERT" ] ; then
   1.598 +        MIN_CERT=$GLOB_MIN_CERT
   1.599 +    fi
   1.600 +    if [ -z "$MAX_CERT" ] ; then
   1.601 +        MAX_CERT=$GLOB_MAX_CERT
   1.602 +    fi
   1.603 +
   1.604 +    #################################################
   1.605 +    # CRL SSL testing constatnts
   1.606 +    #
   1.607 +
   1.608 +
   1.609 +    CRL_GRP_1_BEGIN=40
   1.610 +    CRL_GRP_1_RANGE=3
   1.611 +    UNREVOKED_CERT_GRP_1=41
   1.612 +
   1.613 +    CRL_GRP_2_BEGIN=43
   1.614 +    CRL_GRP_2_RANGE=6
   1.615 +    UNREVOKED_CERT_GRP_2=46
   1.616 +
   1.617 +    CRL_GRP_3_BEGIN=49
   1.618 +    CRL_GRP_3_RANGE=4
   1.619 +    UNREVOKED_CERT_GRP_3=51
   1.620 +
   1.621 +    TOTAL_CRL_RANGE=`expr ${CRL_GRP_1_RANGE} + ${CRL_GRP_2_RANGE} + \
   1.622 +                     ${CRL_GRP_3_RANGE}`
   1.623 +
   1.624 +    TOTAL_GRP_NUM=3
   1.625 +    
   1.626 +    RELOAD_CRL=1
   1.627 +
   1.628 +    NSS_DEFAULT_DB_TYPE="dbm"
   1.629 +    export NSS_DEFAULT_DB_TYPE
   1.630 +
   1.631 +    MSG_ID_FILE="${HOSTDIR}/id"
   1.632 +    MSG_ID=0
   1.633 +    echo ${MSG_ID} > ${MSG_ID_FILE}
   1.634 +
   1.635 +    #################################################
   1.636 +    # Interoperability testing constatnts
   1.637 +    #
   1.638 +    # if suite is setup for testing, IOPR_HOSTADDR_LIST should have
   1.639 +    # at least one host name(FQDN)
   1.640 +    # Example   IOPR_HOSTADDR_LIST="goa1.SFBay.Sun.COM"
   1.641 +
   1.642 +    if [ -z "`echo ${IOPR_HOSTADDR_LIST} | grep '[A-Za-z]'`" ]; then
   1.643 +        IOPR=0
   1.644 +    else
   1.645 +        IOPR=1
   1.646 +    fi
   1.647 +    #################################################
   1.648 +
   1.649 +    if [ "${OS_ARCH}" != "WINNT" -a "${OS_ARCH}" != "Android" ]; then
   1.650 +        ulimit -c unlimited
   1.651 +    fi 
   1.652 +
   1.653 +    SCRIPTNAME=$0
   1.654 +    INIT_SOURCED=TRUE   #whatever one does - NEVER export this one please
   1.655 +fi

mercurial