tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

run_niscc.sh (39624B)


      1 #!/bin/bash
      2 #
      3 # This Source Code Form is subject to the terms of the Mozilla Public
      4 # License, v. 2.0. If a copy of the MPL was not distributed with this
      5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      6 
      7 #
      8 # PRIOR TO RUNNING THIS SCRIPT
      9 # you should adjust MAIL_COMMAND and QA_LIST
     10 #
     11 # External dependencies:
     12 # - install the NISCC test files, e.g. at /niscc (readonly OK)
     13 # - libfaketimeMT because the test certificates have expired
     14 # - build environment for building NSS
     15 # - gdb to analyze core files
     16 # - a command line mail tool (e.g. mailx)
     17 # - openssl to combine input PEM files into pkcs#12
     18 # - curl for obtaining version information from the web
     19 #
     20 
     21 ################################################################################
     22 # Print script usage
     23 ################################################################################
     24 usage()
     25 {
     26    cat << EOF
     27 Usage: $0 [options]
     28 
     29 Test NSS library against NISCC SMIME and TLS testcases.
     30 
     31 Options:
     32 -h, --help           print this help message and exit
     33 -v, --verbose        enable extra verbose output
     34     --niscc-home DIR use NISCC testcases from directory DIR (default /niscc)
     35     --host HOST      use host HOST (default '127.0.0.1')
     36     --threads X      set thread number to X (max. 10, default 10)
     37     --out DIR        set DIR as output directory (default '/out')
     38     --mail ADDRESS   send mail with test result to ADDRESS
     39     --nss DIR        set NSS directory to DIR (default '~/niscc-hg/nss')
     40     --nss-hack DIR   set hacked NSS directory to DIR (default '~/niscc-hg/nss_hack')
     41     --log-store      store all the logs (only summary by default)
     42     --no-build-test  don't pull and build tested NSS
     43     --no-build-hack  don't pull and build hacked NSS
     44     --test-system    test system installed NSS
     45     --date DATE      use DATE in log archive name and outgoing email
     46     --libfaketime path.so  use faketime library with LD_PRELOAD=path.so
     47     --smallset       test only a very small subset
     48 
     49 All options are optional.
     50 All options (and possibly more) can be also set through environment variables.
     51 Commandline options have higher priority than environment variables.
     52 For more information please refer to the source code of this script.
     53 
     54 For a successfull run the script NEEDS the core file pattern to be 'core.*',
     55 e.g. 'core.%t'. You can check the current pattern in
     56 '/proc/sys/kernel/core_pattern'. Otherwise the test will be unable to detect
     57 any failures and will pass every time.
     58 
     59 It is recommended to use hacked and tested binaries in a location, where their
     60 absolute path is max. 80 characters. If their path is longer and a core file is
     61 generated, its properties may be incomplete.
     62 
     63 Return value of the script indicates how many failures it experienced.
     64 
     65 EOF
     66    exit $1
     67 }
     68 
     69 ################################################################################
     70 # Process command-line arguments
     71 ################################################################################
     72 process_args()
     73 {
     74    HELP="false"
     75    args=`getopt -u -l "niscc-home:,host:,threads:,out:,verbose,mail:,nss:,nss-hack:,log-store,no-build-test,no-build-hack,help,test-system,date:,libfaketime:,smallset" -- "hv" $*`
     76    [ "$?" != "0" ] && usage 1
     77    set -- $args
     78    for i; do
     79        case "$i" in
     80            -v|--verbose)
     81                shift
     82                VERBOSE="-v"
     83                ;;
     84            --niscc-home)
     85                shift
     86                NISCC_HOME="$1"
     87                shift
     88                ;;
     89            --host)
     90                shift
     91                HOST="$1"
     92                shift
     93                ;;
     94            --threads)
     95                shift
     96                THREADS="$1"
     97                shift
     98                ;;
     99            --out)
    100                shift
    101                TEST_OUTPUT="$1"
    102                shift
    103                ;;
    104            --mail)
    105                shift
    106                USE_MAIL="true"
    107                QA_LIST="$1"
    108                shift
    109                ;;
    110            --nss)
    111                shift
    112                LOCALDIST="$1"
    113                shift
    114                ;;
    115            --nss-hack)
    116                shift
    117                NSS_HACK="$1"
    118                shift
    119                ;;
    120            --log-store)
    121                shift
    122                LOG_STORE="true"
    123                ;;
    124            --no-build-test)
    125                shift
    126                NO_BUILD_TEST="true"
    127                ;;
    128            --no-build-hack)
    129                shift
    130                NO_BUILD_HACK="true"
    131                ;;
    132            -h|--help)
    133                shift
    134                HELP="true"
    135                ;;
    136            --test-system)
    137                shift
    138                TEST_SYSTEM="true"
    139                ;;
    140            --date)
    141                shift
    142                DATE="$1"
    143                shift
    144                ;;
    145            --libfaketime)
    146                shift
    147                FAKETIMELIB="$1"
    148                shift
    149                ;;
    150            --smallset)
    151                shift
    152                SMALLSET="true"
    153                ;;
    154            --)
    155                ;;
    156            *)
    157                ;;
    158        esac
    159    done
    160    [ $HELP = "true" ] && usage 0
    161 }
    162 
    163 ################################################################################
    164 # Create and set needed and useful environment variables
    165 ################################################################################
    166 create_environment()
    167 {
    168    # Base location of NISCC testcases
    169    export NISCC_HOME=${NISCC_HOME:-/niscc}
    170 
    171    # Base location of NSS
    172    export HG=${HG:-"$HOME/niscc-hg"}
    173 
    174    # NSS being tested
    175    export LOCALDIST=${LOCALDIST:-"${HG}/nss"}
    176 
    177    # Hacked NSS - built with "NISCC_TEST=1"
    178    export NSS_HACK=${NSS_HACK:-"${HG}/nss_hack"}
    179 
    180    # Hostname of the testmachine
    181    export HOST=${HOST:-127.0.0.1}
    182 
    183    # Whether to store logfiles
    184    export LOG_STORE=${LOG_STORE:-"false"}
    185 
    186    # Whether to mail the summary
    187    export USE_MAIL=${USE_MAIL:-"false"}
    188 
    189    # How to mail summary
    190    export MAIL_COMMAND=${MAIL_COMMAND:-"mailx -S smtp=smtp://your.smtp.server:25 -r your+niscc@email.address"}
    191 
    192    # List of mail addresses where to send summary
    193    export QA_LIST=${QA_LIST:-"result@recipient.address"}
    194 
    195    # Whether to use 64b build
    196    export USE_64=${USE_64:-1}
    197 
    198    # Directory where to write all the output data (around 650MiB for each run)
    199    export TEST_OUTPUT=${TEST_OUTPUT:-"$HOME/out"}
    200 
    201    # How many threads to use in selfserv and strsclnt (max. 10)
    202    export THREADS=${THREADS:-10}
    203 
    204    # If true, do not build tthe tested version of NSS
    205    export NO_BUILD_TEST=${NO_BUILD_TEST:-"false"}
    206 
    207    # If true, do not build the special NSS version for NISCC
    208    export NO_BUILD_HACK=${NO_BUILD_HACK:-"false"}
    209 
    210    # If true, do not rebuild client and server directories
    211    export NO_SETUP=${NO_SETUP:-"false"}
    212 
    213    # Location of NISCC SSL/TLS testcases
    214    export TEST=${TEST:-"${NISCC_HOME}/NISCC_SSL_testcases"}
    215 
    216    # If true, then be extra verbose
    217    export VERBOSE=${VERBOSE:-""}
    218 
    219    # If true, test the system installed NSS
    220    export TEST_SYSTEM=${TEST_SYSTEM:-"false"}
    221    [ "$TEST_SYSTEM" = "true" ] && export NO_BUILD_TEST="true"
    222 
    223    [ ! -z "$VERBOSE" ] && set -xv
    224 
    225    # Real date for naming of archives (system date must be 2002-11-18 .. 2007-11-18 due to certificate validity
    226    DATE=${DATE:-`date`}
    227    export DATE=`date -d "$DATE" +%Y%m%d`
    228 
    229    FAKETIMELIB=${FAKETIMELIB:-""}
    230    export DATE=`date -d "$DATE" +%Y%m%d`
    231 
    232    # Whether to test only a very small subset
    233    export SMALLSET=${SMALLSET:-"false"}
    234 
    235    # Create output dir if it doesn't exist
    236    mkdir -p ${TEST_OUTPUT}
    237 }
    238 
    239 ################################################################################
    240 # Do a HG pull of NSS
    241 ################################################################################
    242 hg_pull()
    243 {
    244    # Tested NSS - by default using HG default tip
    245    if [ "$NO_BUILD_TEST" = "false" ]; then
    246        echo "cloning NSS sources to be tested from HG"
    247        [ ! -d "$LOCALDIST" ] && mkdir -p "$LOCALDIST"
    248        cd "$LOCALDIST"
    249        [ ! -d "$LOCALDIST/nspr" ] && hg clone --noupdate https://hg.mozilla.org/projects/nspr
    250        cd nspr; hg pull; hg update -C -r default; cd ..
    251        [ ! -d "$LOCALDIST/nss" ] && hg clone --noupdate https://hg.mozilla.org/projects/nss
    252        cd nss; hg pull; hg update -C -r default; cd ..
    253        #find . -exec touch {} \;
    254    fi
    255 
    256    # Hacked NSS - by default using some RTM version.
    257    # Do not use HEAD for hacked NSS - it needs to be stable and bug-free
    258    if [ "$NO_BUILD_HACK" = "false" ]; then
    259        echo "cloning NSS sources for a hacked build from HG"
    260        [ ! -d "$NSS_HACK" ] && mkdir -p "$NSS_HACK"
    261        cd "$NSS_HACK"
    262        NSPR_TAG=`curl --silent http://hg.mozilla.org/releases/mozilla-aurora/raw-file/default/nsprpub/TAG-INFO | head -1 | sed --regexp-extended 's/[[:space:]]//g' | awk '{print $1}'`
    263        NSS_TAG=`curl --silent http://hg.mozilla.org/releases/mozilla-aurora/raw-file/default/security/nss/TAG-INFO | head -1 | sed --regexp-extended 's/[[:space:]]//g' | awk '{print $1}'`
    264        [ ! -d "$NSS_HACK/nspr" ] && hg clone --noupdate https://hg.mozilla.org/projects/nspr
    265        cd nspr; hg pull; hg update -C -r "$NSPR_TAG"; cd ..
    266        [ ! -d "$NSS_HACK/nss" ] && hg clone --noupdate https://hg.mozilla.org/projects/nss
    267        cd nss; hg pull; hg update -C -r "$NSS_TAG"; cd ..
    268        #find . -exec touch {} \;
    269    fi
    270 }
    271 
    272 ################################################################################
    273 # Build NSS after setting make variable NISCC_TEST
    274 ################################################################################
    275 build_NSS()
    276 {
    277    # Tested NSS
    278    if [ "$NO_BUILD_TEST" = "false" ]; then
    279        echo "building NSS to be tested"
    280        cd "$LOCALDIST"
    281        unset NISCC_TEST
    282        cd nss
    283        gmake nss_clean_all &>> $TEST_OUTPUT/nisccBuildLog
    284        gmake nss_build_all &>> $TEST_OUTPUT/nisccBuildLog
    285    fi
    286 
    287    # Hacked NSS
    288    if [ "$NO_BUILD_HACK" = "false" ]; then
    289        echo "building hacked NSS"
    290        cd "$NSS_HACK"
    291        export NISCC_TEST=1
    292        cd nss
    293        gmake nss_clean_all &>> $TEST_OUTPUT/nisccBuildLogHack
    294        gmake nss_build_all &>> $TEST_OUTPUT/nisccBuildLogHack
    295    fi
    296 
    297    unset NISCC_TEST
    298 }
    299 
    300 ################################################################################
    301 # Set build dir, bin and lib directories
    302 ################################################################################
    303 init()
    304 {
    305    # Enable useful core files to be generated in case of crash
    306    ulimit -c unlimited
    307 
    308    # Pattern of core files, they should be created in current directory
    309    echo "core_pattern $(cat /proc/sys/kernel/core_pattern)" > "$TEST_OUTPUT/nisccLog00"
    310 
    311    # gmake is needed in the path for this suite to run
    312    echo "PATH $PATH" >> "$TEST_OUTPUT/nisccLog00"
    313 
    314    # Find out hacked NSS version
    315    DISTTYPE=`cd "$NSS_HACK/nss/tests/common"; gmake objdir_name`
    316    echo "NSS_HACK DISTTYPE $DISTTYPE" >> "$TEST_OUTPUT/nisccLog00"
    317    export HACKBIN="$NSS_HACK/dist/$DISTTYPE/bin"
    318    export HACKLIB="$NSS_HACK/dist/$DISTTYPE/lib"
    319 
    320    if [ "$TEST_SYSTEM" = "false" ]; then
    321        # Find out nss version
    322        DISTTYPE=`cd "$LOCALDIST/nss/tests/common"; gmake objdir_name`
    323        echo "NSS DISTTYPE $DISTTYPE" >> "$TEST_OUTPUT/nisccLog00"
    324        export TESTBIN="$LOCALDIST/dist/$DISTTYPE/bin"
    325        export TESTLIB="$LOCALDIST/dist/$DISTTYPE/lib"
    326        export TESTTOOLS="$TESTBIN"
    327    else
    328        # Using system installed NSS
    329        echo "USING SYSTEM NSS" >> "$TEST_OUTPUT/nisccLog00"
    330        export TESTBIN="/usr/bin"
    331        if [ `uname -m` = "x86_64" ]; then
    332            export TESTLIB="/usr/lib64"
    333            export TESTTOOLS="/usr/lib64/nss/unsupported-tools"
    334        else
    335            export TESTLIB="/usr/lib"
    336            export TESTTOOLS="/usr/lib/nss/unsupported-tools"
    337        fi
    338    fi
    339 
    340    # Verify NISCC_TEST was set in the proper library
    341    if strings "$HACKLIB/libssl3.so" | grep NISCC_TEST > /dev/null 2>&1; then
    342        echo "$HACKLIB/libssl3.so contains NISCC_TEST" >> "$TEST_OUTPUT/nisccLog00"
    343    else
    344        echo "$HACKLIB/libssl3.so does NOT contain NISCC_TEST" >> "$TEST_OUTPUT/nisccLog00"
    345    fi
    346 
    347    if strings "$TESTLIB/libssl3.so" | grep NISCC_TEST > /dev/null 2>&1; then
    348        echo "$TESTLIB/libssl3.so contains NISCC_TEST" >> "$TEST_OUTPUT/nisccLog00"
    349    else
    350        echo "$TESTLIB/libssl3.so does NOT contain NISCC_TEST" >> "$TEST_OUTPUT/nisccLog00"
    351    fi
    352 }
    353 
    354 ################################################################################
    355 # Setup simple client and server directory
    356 ################################################################################
    357 ssl_setup_dirs_simple()
    358 {
    359    [ "$NO_SETUP" = "true" ] && return
    360 
    361    echo "Setting up working directories for SSL simple tests"
    362 
    363    CLIENT="$TEST_OUTPUT/niscc_ssl/simple_client"
    364    SERVER="$TEST_OUTPUT/niscc_ssl/simple_server"
    365 
    366    # Generate .p12 files
    367    openssl pkcs12 -export -inkey "$TEST/client_key.pem" -in "$TEST/client_crt.pem" -out "$TEST_OUTPUT/client_crt.p12" -passout pass:testtest1 -name "client_crt"
    368    openssl pkcs12 -export -inkey "$TEST/server_key.pem" -in "$TEST/server_crt.pem" -out "$TEST_OUTPUT/server_crt.p12" -passout pass:testtest1 -name "server_crt"
    369 
    370    # Setup simple client directory
    371    rm -rf "$CLIENT"
    372    mkdir -p "$CLIENT"
    373    echo test > "$CLIENT/password-is-test.txt"
    374    export LD_LIBRARY_PATH="$TESTLIB"
    375    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    376    "${TESTBIN}/certutil" -N -d "$CLIENT" -f "$CLIENT/password-is-test.txt" >> "$TEST_OUTPUT/nisccLog00" 2>&1
    377    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    378    "${TESTBIN}/certutil" -A -d "$CLIENT" -n rootca -i "$TEST/rootca.crt" -t "C,C," >> "$TEST_OUTPUT/nisccLog00" 2>&1
    379    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    380    "${TESTBIN}/pk12util" -i "$TEST_OUTPUT/client_crt.p12" -d "$CLIENT" -k "$CLIENT/password-is-test.txt" -W testtest1 >> "$TEST_OUTPUT/nisccLog00" 2>&1
    381    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    382    "${TESTBIN}/certutil" -L -d "$CLIENT" >> "$TEST_OUTPUT/nisccLog00" 2>&1
    383 
    384    # File containg message used for terminating the server
    385    echo "GET /stop HTTP/1.0" > "$CLIENT/stop.txt"
    386    echo ""                  >> "$CLIENT/stop.txt"
    387 
    388    # Setup simple server directory
    389    rm -rf "$SERVER"
    390    mkdir -p "$SERVER"
    391    echo test > "$SERVER/password-is-test.txt"
    392    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    393    "${TESTBIN}/certutil" -N -d "$SERVER" -f "$SERVER/password-is-test.txt" >> "$TEST_OUTPUT/nisccLog00" 2>&1
    394    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    395    "${TESTBIN}/certutil" -A -d "$SERVER" -n rootca -i "$TEST/rootca.crt" -t "TC,C," >> "$TEST_OUTPUT/nisccLog00" 2>&1
    396    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    397    "${TESTBIN}/pk12util" -i "$TEST_OUTPUT/server_crt.p12" -d "$SERVER" -k "$SERVER/password-is-test.txt" -W testtest1 >> "$TEST_OUTPUT/nisccLog00" 2>&1
    398    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    399    "${TESTBIN}/certutil" -L -d "$SERVER" >> "$TEST_OUTPUT/nisccLog00" 2>&1
    400 
    401    unset LD_LIBRARY_PATH
    402 }
    403 
    404 ################################################################################
    405 # Setup resigned client and server directory
    406 ################################################################################
    407 ssl_setup_dirs_resigned()
    408 {
    409    [ "$NO_SETUP" = "true" ] && return
    410 
    411    echo "Setting up working directories for SSL resigned tests"
    412 
    413    CLIENT="$TEST_OUTPUT/niscc_ssl/resigned_client"
    414    SERVER="$TEST_OUTPUT/niscc_ssl/resigned_server"
    415 
    416    # Setup resigned client directory
    417    rm -rf "$CLIENT"
    418    mkdir -p "$CLIENT"
    419    echo test > "$CLIENT/password-is-test.txt"
    420    export LD_LIBRARY_PATH="$TESTLIB"
    421    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    422    "${TESTBIN}/certutil" -N -d "$CLIENT" -f "$CLIENT/password-is-test.txt" >> "$TEST_OUTPUT/nisccLog00" 2>&1
    423    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    424    "${TESTBIN}/certutil" -A -d "$CLIENT" -n rootca -i "$TEST/rootca.crt" -t "C,C," >> "$TEST_OUTPUT/nisccLog00" 2>&1
    425    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    426    "${TESTBIN}/pk12util" -i "$TEST_OUTPUT/client_crt.p12" -d "$CLIENT" -k "$CLIENT/password-is-test.txt" -W testtest1 >> "$TEST_OUTPUT/nisccLog00" 2>&1
    427    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    428    "${TESTBIN}/certutil" -L -d "$CLIENT" >> "$TEST_OUTPUT/nisccLog00" 2>&1
    429 
    430    echo "GET /stop HTTP/1.0" > "$CLIENT/stop.txt"
    431    echo ""                  >> "$CLIENT/stop.txt"
    432 
    433    # Setup resigned server directory
    434    rm -rf "$SERVER"
    435    mkdir -p "$SERVER"
    436    echo test > "$SERVER/password-is-test.txt"
    437    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    438    "${TESTBIN}/certutil" -N -d "$SERVER" -f "$SERVER/password-is-test.txt" >> "$TEST_OUTPUT/nisccLog00" 2>&1
    439    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    440    "${TESTBIN}/certutil" -A -d "$SERVER" -n rootca -i "$TEST/rootca.crt" -t "TC,C," >> "$TEST_OUTPUT/nisccLog00" 2>&1
    441    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    442    "${TESTBIN}/pk12util" -i "$TEST_OUTPUT/server_crt.p12" -d "$SERVER" -k "$SERVER/password-is-test.txt" -W testtest1 >> "$TEST_OUTPUT/nisccLog00" 2>&1
    443    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    444    "${TESTBIN}/certutil" -L -d "$SERVER" >> "$TEST_OUTPUT/nisccLog00" 2>&1
    445 
    446    unset LD_LIBRARY_PATH
    447 }
    448 
    449 ################################################################################
    450 # NISCC SMIME tests
    451 ################################################################################
    452 niscc_smime()
    453 {
    454    cd "$TEST_OUTPUT"
    455    DATA="$NISCC_HOME/NISCC_SMIME_testcases"
    456 
    457    [ ! -d niscc_smime ] && mkdir -p niscc_smime
    458 
    459    export SMIME_CERT_DB_DIR=envDB
    460    export NSS_STRICT_SHUTDOWN=1
    461    export NSS_DISABLE_ARENA_FREE_LIST=1
    462    export LD_LIBRARY_PATH="$TESTLIB"
    463 
    464    # Generate .p12 files
    465    openssl pkcs12 -export -inkey "$DATA/Client.key" -in "$DATA/Client.crt" -out Client.p12 -passout pass:testtest1 &>/dev/null
    466    openssl pkcs12 -export -inkey "$DATA/CA.key" -in "$DATA/CA.crt" -out CA.p12 -passout pass:testtest1 &>/dev/null
    467 
    468    # Generate envDB if needed
    469    if [ ! -d "$SMIME_CERT_DB_DIR" ]; then
    470        mkdir -p "$SMIME_CERT_DB_DIR"
    471        echo testtest1 > password-is-testtest1.txt
    472        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    473        "${TESTBIN}/certutil" -N -d "./$SMIME_CERT_DB_DIR" -f password-is-testtest1.txt > /dev/null 2>&1
    474        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    475        "${TESTBIN}/certutil" -A -d "$SMIME_CERT_DB_DIR" -f password-is-testtest1.txt -i "$DATA/CA.crt" -n CA -t "TC,C,"
    476        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    477        "${TESTBIN}/certutil" -A -d "$SMIME_CERT_DB_DIR" -f password-is-testtest1.txt -i "$DATA/Client.crt" -n Client -t "TC,C,"
    478        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    479        "${TESTBIN}/pk12util" -i ./CA.p12 -d "$SMIME_CERT_DB_DIR" -k password-is-testtest1.txt -W testtest1
    480        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    481        "${TESTBIN}/pk12util" -i ./Client.p12 -d "$SMIME_CERT_DB_DIR" -k password-is-testtest1.txt -W testtest1
    482    fi
    483 
    484    # if p7m-ed-m-files.txt does not exist, then generate it.
    485    [ -f "$DATA/p7m-ed-m-files.txt" ] && sed "s|^|$DATA/|" "$DATA/p7m-ed-m-files.txt" > p7m-ed-m-files.txt
    486    export P7M_ED_M_FILES=p7m-ed-m-files.txt
    487    if [ "$SMALLSET" = "true" ]; then
    488        [ ! -f "$P7M_ED_M_FILES" ] && find "$DATA"/p7m-ed-m-0* -type f -print | head -10 >> "$P7M_ED_M_FILES"
    489    else
    490        [ ! -f "$P7M_ED_M_FILES" ] && find "$DATA"/p7m-ed-m-0* -type f -print >> "$P7M_ED_M_FILES"
    491    fi
    492 
    493    # Test "p7m-ed-m*" testcases
    494    echo "Testing SMIME enveloped data testcases"
    495    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    496    "${TESTBIN}/cmsutil" $VERBOSE -D -d "$SMIME_CERT_DB_DIR" -p testtest1 -b -i "$P7M_ED_M_FILES" > niscc_smime/p7m-ed-m-results.txt 2>&1
    497 
    498    export SMIME_CERT_DB_DIR=sigDB
    499    # Generate sigDB if needed
    500    if [ ! -d "$SMIME_CERT_DB_DIR" ]; then
    501        mkdir -p "$SMIME_CERT_DB_DIR"
    502        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    503        "${TESTBIN}/certutil" -N -d "$SMIME_CERT_DB_DIR" -f password-is-testtest1.txt
    504        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    505        "${TESTBIN}/certutil" -A -d "$SMIME_CERT_DB_DIR" -i "$DATA/CA.crt" -n CA -t "TC,C,"
    506        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    507        "${TESTBIN}/certutil" -A -d "$SMIME_CERT_DB_DIR" -i "$DATA/Client.crt" -n Client -t "TC,C,"
    508    fi
    509 
    510    # if p7m-sd-dt-files.txt does not exist, then generate it.
    511    [ -f "$DATA/p7m-sd-dt-files.txt" ] && sed "s|^|$DATA/|" "$DATA/p7m-sd-dt-files.txt" > p7m-sd-dt-files.txt
    512    export P7M_SD_DT_FILES=p7m-sd-dt-files.txt
    513    if [ "$SMALLSET" = "true" ]; then
    514        [ ! -f "$P7M_SD_DT_FILES" ] && find "$DATA"/p7m-sd-dt-[cm]-* -type f -print | head -10 >> "$P7M_SD_DT_FILES"
    515    else
    516        [ ! -f "$P7M_SD_DT_FILES" ] && find "$DATA"/p7m-sd-dt-[cm]-* -type f -print >> "$P7M_SD_DT_FILES"
    517    fi
    518 
    519    [ ! -f detached.txt ] && touch detached.txt
    520 
    521    # Test "p7m-sd-dt*" testcases
    522    echo "Testing SMIME detached signed data testcases"
    523    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    524    "${TESTBIN}/cmsutil" $VERBOSE -D -d "$SMIME_CERT_DB_DIR" -c detached.txt -b -i "$P7M_SD_DT_FILES" > niscc_smime/p7m-sd-dt-results.txt 2>&1
    525 
    526    # if p7m-sd-op-files.txt does not exist, then generate it.
    527    [ -f "$DATA/p7m-sd-op-files.txt" ] && sed "s|^|$DATA/|" "$DATA/p7m-sd-op-files.txt" > p7m-sd-op-files.txt
    528    export P7M_SD_OP_FILES=p7m-sd-op-files.txt
    529    if [ "$SMALLSET" = "true" ]; then
    530        [ ! -f "$P7M_SD_OP_FILES" ] && find "$DATA"/p7m-sd-op-[cm]-* -type f -print | head -10 >> "$P7M_SD_OP_FILES"
    531    else
    532        [ ! -f "$P7M_SD_OP_FILES" ] && find "$DATA"/p7m-sd-op-[cm]-* -type f -print >> "$P7M_SD_OP_FILES"
    533    fi
    534 
    535    # Test "p7m-sd-op*" testcases
    536    echo "Testing SMIME opaque signed data testcases"
    537    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    538    "${TESTBIN}/cmsutil" $VERBOSE -D -d "$SMIME_CERT_DB_DIR" -b -i "$P7M_SD_OP_FILES" > niscc_smime/p7m-sd-op-results.txt 2>&1
    539 
    540    unset LD_LIBRARY_PATH
    541 }
    542 
    543 ################################################################################
    544 # Set env variables for NISCC SSL tests
    545 ################################################################################
    546 niscc_ssl_init()
    547 {
    548    export NSS_STRICT_SHUTDOWN=1
    549    export NSS_DISABLE_ARENA_FREE_LIST=1
    550    cd "$TEST_OUTPUT"
    551 }
    552 
    553 force_crash()
    554 {
    555    echo "int main(int argc, char *argv[]) { int *i; i = (int*)(void*)1; *i = 1; }" > "$TEST_OUTPUT/crashme.c"
    556    gcc -g -o "$TEST_OUTPUT/crashme" "$TEST_OUTPUT/crashme.c"
    557    "$TEST_OUTPUT/crashme"
    558 }
    559 
    560 ################################################################################
    561 # Do simple client auth tests
    562 # Use an altered client against the server
    563 ################################################################################
    564 ssl_simple_client_auth()
    565 {
    566    echo "Testing SSL simple client auth testcases"
    567    export CLIENT="$TEST_OUTPUT/niscc_ssl/simple_client"
    568    export SERVER="$TEST_OUTPUT/niscc_ssl/simple_server"
    569    export PORT=8443
    570    export START_AT=1
    571    if [ "$SMALLSET" = "true" ]; then
    572        export STOP_AT=10
    573    else
    574        export STOP_AT=106160
    575    fi
    576    unset NISCC_TEST
    577    export LD_LIBRARY_PATH="$TESTLIB"
    578    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    579    "${TESTTOOLS}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -rr -t $THREADS -w test > "$TEST_OUTPUT/nisccLog01" 2>&1 &
    580 
    581    export NISCC_TEST="$TEST/simple_client"
    582    export LD_LIBRARY_PATH="$HACKLIB"
    583 
    584    for START in `seq $START_AT $THREADS $STOP_AT`; do
    585        START_AT=$START \
    586        STOP_AT=$(($START+$THREADS)) \
    587        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    588        "${HACKBIN}/strsclnt" $VERBOSE -d "$CLIENT" -n client_crt -p $PORT -t $THREADS -c $THREADS -o -N -w test $HOST >> "$TEST_OUTPUT/nisccLog02" 2>&1
    589    done
    590 
    591    unset NISCC_TEST
    592    echo "starting tstclnt to shutdown simple client selfserv process"
    593    for i in `seq 5`; do
    594        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    595        "${HACKBIN}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog02" 2>&1
    596    done
    597 
    598    unset LD_LIBRARY_PATH
    599 
    600    sleep 1
    601 }
    602 
    603 ################################################################################
    604 # Do simple server auth tests
    605 # Use an altered server against the client
    606 ################################################################################
    607 ssl_simple_server_auth()
    608 {
    609    echo "Testing SSL simple server auth testcases"
    610    export CLIENT="$TEST_OUTPUT/niscc_ssl/simple_client"
    611    export SERVER="$TEST_OUTPUT/niscc_ssl/simple_server"
    612    export PORT=8444
    613    export START_AT=00000001
    614    if [ "$SMALLSET" = "true" ]; then
    615        export STOP_AT=00000010
    616    else
    617        export STOP_AT=00106167
    618    fi
    619    export LD_LIBRARY_PATH="$HACKLIB"
    620    export NISCC_TEST="$TEST/simple_server"
    621    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    622    "${HACKBIN}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -t $THREADS -w test > "$TEST_OUTPUT/nisccLog03" 2>&1 &
    623 
    624    unset NISCC_TEST
    625    export LD_LIBRARY_PATH="$TESTLIB"
    626    for START in `seq $START_AT $THREADS $STOP_AT`; do
    627        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    628        "${TESTTOOLS}/strsclnt" $VERBOSE -d "$CLIENT" -p $PORT -t $THREADS -c $THREADS -o -N $HOST >> "$TEST_OUTPUT/nisccLog04" 2>&1
    629    done
    630 
    631    echo "starting tstclnt to shutdown simple server selfserv process"
    632    for i in `seq 5`; do
    633        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    634        "${TESTTOOLS}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog04" 2>&1
    635    done
    636 
    637    unset LD_LIBRARY_PATH
    638 
    639    sleep 1
    640 }
    641 
    642 ################################################################################
    643 # Do simple rootCA tests
    644 # Use an altered server against the client
    645 ################################################################################
    646 ssl_simple_rootca()
    647 {
    648    echo "Testing SSL simple rootCA testcases"
    649    export CLIENT="$TEST_OUTPUT/niscc_ssl/simple_client"
    650    export SERVER="$TEST_OUTPUT/niscc_ssl/simple_server"
    651    export PORT=8445
    652    export START_AT=1
    653    if [ "$SMALLSET" = "true" ]; then
    654        export STOP_AT=10
    655    else
    656        export STOP_AT=106190
    657    fi
    658    export LD_LIBRARY_PATH="$HACKLIB"
    659    export NISCC_TEST="$TEST/simple_rootca"
    660    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    661    "${HACKBIN}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -t $THREADS -w test > "$TEST_OUTPUT/nisccLog05" 2>&1 &
    662 
    663    unset NISCC_TEST
    664    export LD_LIBRARY_PATH="$TESTLIB"
    665    for START in `seq $START_AT $THREADS $STOP_AT`; do
    666        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    667        "${TESTTOOLS}/strsclnt" $VERBOSE -d "$CLIENT" -p $PORT -t $THREADS -c $THREADS -o -N $HOST >> "$TEST_OUTPUT/nisccLog06" 2>&1
    668    done
    669 
    670    echo "starting tstclnt to shutdown simple rootca selfserv process"
    671    for i in `seq 5`; do
    672        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    673        "${TESTTOOLS}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog06" 2>&1
    674    done
    675 
    676    unset LD_LIBRARY_PATH
    677 
    678    sleep 1
    679 }
    680 
    681 ################################################################################
    682 # Do resigned client auth tests
    683 # Use an altered client against the server
    684 ################################################################################
    685 ssl_resigned_client_auth()
    686 {
    687    echo "Testing SSL resigned client auth testcases"
    688    export CLIENT="$TEST_OUTPUT/niscc_ssl/resigned_client"
    689    export SERVER="$TEST_OUTPUT/niscc_ssl/resigned_server"
    690    export PORT=8446
    691    export START_AT=0
    692    if [ "$SMALLSET" = "true" ]; then
    693        export STOP_AT=9
    694    else
    695        export STOP_AT=99981
    696    fi
    697    unset NISCC_TEST
    698    export LD_LIBRARY_PATH="$TESTLIB"
    699    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    700    "${TESTTOOLS}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -rr -t $THREADS -w test > "$TEST_OUTPUT/nisccLog07" 2>&1 &
    701 
    702    export NISCC_TEST="$TEST/resigned_client"
    703    export LD_LIBRARY_PATH="$HACKLIB"
    704 
    705    for START in `seq $START_AT $THREADS $STOP_AT`; do
    706        START_AT=$START \
    707        STOP_AT=$(($START+$THREADS)) \
    708        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    709        "${HACKBIN}/strsclnt" $VERBOSE -d "$CLIENT" -n client_crt -p $PORT -t $THREADS -c $THREADS -o -N -w test $HOST >> "$TEST_OUTPUT/nisccLog08" 2>&1
    710    done
    711 
    712    unset NISCC_TEST
    713    echo "starting tstclnt to shutdown resigned client selfserv process"
    714    for i in `seq 5`; do
    715        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    716        "${HACKBIN}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog08" 2>&1
    717    done
    718 
    719    unset LD_LIBRARY_PATH
    720 
    721    sleep 1
    722 }
    723 
    724 ################################################################################
    725 # Do resigned server auth tests
    726 # Use an altered server against the client
    727 ################################################################################
    728 ssl_resigned_server_auth()
    729 {
    730    echo "Testing SSL resigned server auth testcases"
    731    export CLIENT="$TEST_OUTPUT/niscc_ssl/resigned_client"
    732    export SERVER="$TEST_OUTPUT/niscc_ssl/resigned_server"
    733    export PORT=8447
    734    export START_AT=0
    735    if [ "$SMALLSET" = "true" ]; then
    736        export STOP_AT=9
    737    else
    738        export STOP_AT=100068
    739    fi
    740    export LD_LIBRARY_PATH="$HACKLIB"
    741    export NISCC_TEST="$TEST/resigned_server"
    742    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    743    "${HACKBIN}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -t $THREADS -w test > "$TEST_OUTPUT/nisccLog09" 2>&1 &
    744 
    745    unset NISCC_TEST
    746    export LD_LIBRARY_PATH="$TESTLIB"
    747    for START in `seq $START_AT $THREADS $STOP_AT`; do
    748        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    749        "${TESTTOOLS}/strsclnt" $VERBOSE -d "$CLIENT" -p $PORT -t $THREADS -c $THREADS -o -N $HOST >> "$TEST_OUTPUT/nisccLog10" 2>&1
    750    done
    751 
    752    echo "starting tstclnt to shutdown resigned server selfserv process"
    753    for i in `seq 5`; do
    754        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    755        "${TESTTOOLS}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog10" 2>&1
    756    done
    757 
    758    unset LD_LIBRARY_PATH
    759 
    760    sleep 1
    761 }
    762 
    763 ################################################################################
    764 # Do resigned rootCA tests
    765 # Use an altered server against the client
    766 ################################################################################
    767 ssl_resigned_rootca()
    768 {
    769    echo "Testing SSL resigned rootCA testcases"
    770    export CLIENT="$TEST_OUTPUT/niscc_ssl/resigned_client"
    771    export SERVER="$TEST_OUTPUT/niscc_ssl/resigned_server"
    772    export PORT=8448
    773    export START_AT=0
    774    if [ "$SMALLSET" = "true" ]; then
    775        export STOP_AT=9
    776    else
    777        export STOP_AT=99959
    778    fi
    779    export LD_LIBRARY_PATH="$HACKLIB"
    780    export NISCC_TEST="$TEST/resigned_rootca"
    781    LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    782    "${HACKBIN}/selfserv" $VERBOSE -p $PORT -d "$SERVER" -n server_crt -t $THREADS -w test > "$TEST_OUTPUT/nisccLog11" 2>&1 &
    783 
    784    unset NISCC_TEST
    785    export LD_LIBRARY_PATH="$TESTLIB"
    786    for START in `seq $START_AT $THREADS $STOP_AT`; do
    787        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    788        "${TESTTOOLS}/strsclnt" $VERBOSE -d "$CLIENT" -p $PORT -t $THREADS -c $THREADS -o -N $HOST >> "$TEST_OUTPUT/nisccLog12" 2>&1
    789    done
    790 
    791    echo "starting tstclnt to shutdown resigned rootca selfserv process"
    792    for i in `seq 5`; do
    793        LD_PRELOAD=${FAKETIMELIB} NO_FAKE_STAT=1 FAKETIME="@2004-03-29 14:14:14" \
    794        "${TESTTOOLS}/tstclnt" -h $HOST -p $PORT -d "$CLIENT" -n client_crt -o -f -w test < "$CLIENT/stop.txt" >> "$TEST_OUTPUT/nisccLog12" 2>&1
    795    done
    796 
    797    unset LD_LIBRARY_PATH
    798 
    799    sleep 1
    800 }
    801 
    802 ################################################################################
    803 # Email the test logfile, and if core found, notify of failure
    804 ################################################################################
    805 mail_testLog()
    806 {
    807    pushd "$TEST_OUTPUT"
    808 
    809    # remove mozilla nss build false positives and core stored in previous runs
    810    find . -name "core*" -print | grep -v coreconf | grep -v core_watch | grep -v archive >> crashLog
    811    export SIZE=`cat crashLog | wc -l`
    812 
    813    [ "$USE_MAIL" = "false" ] && return
    814 
    815    # mail text
    816    MT=mailText
    817    rm -f $MT
    818 
    819    if [ "$SIZE" -ne 1 ]; then
    820        echo "### FAILED ###" >> $MT
    821        echo "### Exactly one crash is expected." >> $MT
    822        echo "### Zero means: crash detection is broken, fix the script!" >> $MT
    823        echo "### > 1 means: robustness test failure, fix the bug! (check the logs)" >> $MT
    824        cat crashLog >> nisccLogSummary
    825        SUBJ="FAILED: NISCC TESTS (check file: crashLog)"
    826    else
    827        echo ":) PASSED :)" >> $MT
    828        SUBJ="PASSED: NISCC tests"
    829    fi
    830 
    831    echo "Date used during test run: $DATE" >> $MT
    832 
    833    echo "Count of lines in files:" >> $MT
    834    wc -l crashLog nisccBuildLog nisccBuildLogHack nisccLog[0-9]* p7m-* |grep -vw total >> $MT
    835    NUM=`cat nisccLog0[123456789] nisccLog1[12] | egrep -ic "success/passed"`
    836    echo "Number of times the SSL tests reported success/passed (low expected): $NUM" >> $MT
    837    NUM=`cat nisccLog0[123456789] nisccLog1[12] | egrep -ic "problem|failed|error"`
    838    echo "Number of times the SSL tests reported problem/failed/error (high expected): $NUM" >> $MT
    839    NUM=`cat niscc_smime/p7m*results.txt | egrep -ic "success/passed"`
    840    echo "Number of times the S/MIME tests reported success/passed (low expected): $NUM" >> $MT
    841    NUM=`cat niscc_smime/p7m*results.txt | egrep -ic "problem|failed|error"`
    842    echo "Number of times the S/MIME tests reported problem/failed/error (high expected): $NUM" >> $MT
    843    echo "==== tail of nisccBuildLog ====" >> $MT
    844    tail -20 nisccBuildLog >> $MT
    845    echo "===============================" >> $MT
    846    echo "==== tail of nisccBuildLogHack ====" >> $MT
    847    tail -20 nisccBuildLogHack >> $MT
    848    echo "===================================" >> $MT
    849 
    850    #NUM=``
    851    #echo "Number of : $NUM" >> $MT
    852 
    853    cat $MT | $MAIL_COMMAND -s "$SUBJ" $QA_LIST
    854 
    855    popd
    856 }
    857 
    858 ################################################################################
    859 # Summarize all logs
    860 ################################################################################
    861 log_summary()
    862 {
    863    echo "Summarizing all logs"
    864    # Move old logs
    865    [ -f "$TEST_OUTPUT/nisccLogSummary" ] && mv nisccLogSummary nisccLogSummary.old
    866    [ -f "$TEST_OUTPUT/crashLog" ] && mv crashLog crashLog.old
    867 
    868    for a in $TEST_OUTPUT/nisccLog[0-9]*; do
    869        echo ================================== "$a"
    870        grep -v using "$a" | sort | uniq -c | sort -b -n +0 -1
    871    done > $TEST_OUTPUT/nisccLogSummary
    872 
    873    for a in $TEST_OUTPUT/niscc_smime/p7m-*-results.txt; do
    874        echo ================================== "$a"
    875        grep -v using "$a" | sort | uniq -c | sort -b -n +0 -1
    876    done >> $TEST_OUTPUT/nisccLogSummary
    877 }
    878 
    879 ################################################################################
    880 # Process core files
    881 ################################################################################
    882 core_process()
    883 {
    884    echo "Processing core files"
    885    cd "$TEST_OUTPUT"
    886 
    887    for CORE in `cat crashLog`; do
    888        FILE=`file "$CORE" | sed "s/.* from '//" | sed "s/'.*//"`
    889        BINARY=`strings "$CORE" | grep "^${FILE}" | tail -1`
    890        gdb "$BINARY" "$CORE" << EOF_GDB > "$CORE.details"
    891 where
    892 quit
    893 EOF_GDB
    894    done
    895 }
    896 
    897 ################################################################################
    898 # Move the old log files to save them, delete extra log files
    899 ################################################################################
    900 move_files()
    901 {
    902    echo "Moving and deleting log files"
    903    cd "$TEST_OUTPUT"
    904 
    905    rm -rf TRASH
    906    mkdir TRASH
    907 
    908    if [ "$LOG_STORE" = "true" ]; then
    909        BRANCH=`echo $LOCALDIST | sed "s:.*/\(security.*\)/builds/.*:\1:"`
    910        if [ "$BRANCH" = "$LOCALDIST" ]; then
    911            ARCHIVE="$TEST_OUTPUT/archive"
    912        else
    913            ARCHIVE="$TEST_OUTPUT/archive/$BRANCH"
    914        fi
    915 
    916        # Check for archive directory
    917        if [ ! -d "$ARCHIVE" ]; then
    918            mkdir -p "$ARCHIVE"
    919        fi
    920 
    921        # Determine next log storage point
    922        slot=`ls -1 "$ARCHIVE" | grep $DATE | wc -l`
    923        slot=`expr $slot + 1`
    924        location="$ARCHIVE/$DATE.$slot"
    925        mkdir -p "$location"
    926 
    927        # Archive the logs
    928        mv nisccBuildLog "$location" 2> /dev/null
    929        mv nisccBuildLogHack "$location" 2> /dev/null
    930        mv nisccLogSummary "$location"
    931        mv nisccLog* "$location"
    932        mv niscc_smime/p7m-ed-m-results.txt "$location"
    933        mv niscc_smime/p7m-sd-dt-results.txt "$location"
    934        mv niscc_smime/p7m-sd-op-results.txt "$location"
    935 
    936        # Archive any core files produced
    937        for core in `cat "$TEST_OUTPUT/crashLog"`; do
    938            mv "$core" "$location"
    939            mv "$core.details" "$location"
    940        done
    941        mv crashLog "$location"
    942    else
    943        # Logs not stored => summaries, crashlog and corefiles not moved, other logs deleted
    944        mv nisccLog00 nisccLog01 nisccLog02 nisccLog03 nisccLog04 nisccLog05 nisccLog06 nisccLog07 nisccLog08 nisccLog09 nisccLog10 nisccLog11 nisccLog12 TRASH/
    945        mv niscc_smime/p7m-ed-m-results.txt niscc_smime/p7m-sd-dt-results.txt niscc_smime/p7m-sd-op-results.txt TRASH/
    946    fi
    947    mv envDB sigDB niscc_smime niscc_ssl TRASH/
    948    mv CA.p12 Client.p12 client_crt.p12 server_crt.p12 TRASH/
    949    mv p7m-ed-m-files.txt p7m-sd-dt-files.txt p7m-sd-op-files.txt password-is-testtest1.txt detached.txt TRASH/
    950    mv crashme.c crashme TRASH/
    951 }
    952 
    953 ################################################################################
    954 # Main
    955 ################################################################################
    956 process_args $*
    957 create_environment
    958 hg_pull
    959 build_NSS
    960 init
    961 niscc_smime
    962 niscc_ssl_init
    963 force_crash
    964 ssl_setup_dirs_simple
    965    ssl_simple_client_auth
    966    ssl_simple_server_auth
    967    ssl_simple_rootca
    968 ssl_setup_dirs_resigned
    969    ssl_resigned_client_auth
    970    ssl_resigned_server_auth
    971    ssl_resigned_rootca
    972 # no idea what these commented-out lines are supposed to be!
    973 #ssl_setup_dirs_update
    974 #    ssl_update_server_auth der
    975 #    ssl_update_client_auth der
    976 #    ssl_update_server_auth resigned-der
    977 #    ssl_update_client_auth resigned-der
    978 log_summary
    979 mail_testLog
    980 core_process
    981 move_files
    982 exit $SIZE