gecko-dev/security/nss/tests/jssqa
2008-06-06 08:40:11 -04:00

221 lines
6.6 KiB
Bash
Executable File

#! /bin/sh
########################################################################
#
# /u/sonmi/bin/jssqa
#
# this script is supposed to automatically run - now a sanity test, later QA for
# JSS on all required Unix and Windows (NT and 2000) platforms
#
# parameters
# ----------
# jssversion (supported: 31, tip)
# builddate (default - today)
#
# options
# -------
# -y answer all questions with y - use at your own risk...ignores warnings
# -s silent (only usefull with -y)
# -h, -? - you guessed right - displays this text
# -d debug
# -f <filename> - write the (error)output to filename
# -cron equivalient to -y -s -d -f $RESULTDIR/$HOST.nssqa
#
########################################################################
O_OPTIONS=ON # accept options (see above for listing)
WIN_WAIT_FOREVER=OFF # don't wait for the NSS testdir
PRODUCT_TO_TEST="JSS"
JSS_NSPR_DIR="/share/builds/components/nspr20/v4.1.2"
JSS_NSS_DIR="/share/builds/components/nss/NSS_3_3_1_RTM"
JSS_NSS_UX_SRC_DIR="nss331/builds/20010928.2.331-RTM/booboo_Solaris8"
JSS_NSS_NT_SRC_DIR="nss331/builds/20010928.2.331-RTM/blowfish_NT4.0_Win95"
JSS_NSS_SRC_DIR=$JSS_NSS_UX_SRC_DIR
NATIVE_FLAG=""
. `dirname $0`/header # utilities, shellfunctions etc, global to NSS and JSS QA
if [ -z "$O_TBX" -o "$O_TBX" != "ON" ] ; then
is_running ${TMP}/jssqa
# checks if the file exists, if yes Exits, if not
# creates to implement a primitive locking mechanism
fi
INTERNAL_TOKEN="NSS Certificate DB"
SIGTEST_INTERNAL_TOKEN="Internal Key Storage Token"
################################ jss_init #########################
#
# Most of the procedure is setting up the test environment.
# set all necessary dir and file variables, set all paths, copy the shared libs
# Put all the shared libraries into a lib directory, <libdir>.
# including the libjss3.so that was built by the build process.
# set LD_LIBRARY PATH and CLASSPATH
# The xpclass.jar produced by the JSS build needs to be in the classpath.
# The classpath must also include the current directory so we can run our test
# programs.
################################################################################
jss_init()
{
Debug "Jss init"
#correct all directories that the header has set...
NTDIST=`echo $NTDIST | sed -e 's/nss/jss/g'`
UXDIST=`echo $UXDIST | sed -e 's/nss/jss/g'`
RESULTDIR=`echo $RESULTDIR | sed -e 's/nss/jss/g'`
mkdir -p ${RESULTDIR} 2>/dev/null
JSS_LOGFILE=${RESULTDIR}/${HOST}.txt
FILENAME=$JSS_LOGFILE
O_FILE=ON
MOZILLA_ROOT=`echo $MOZILLA_ROOT | sed -e 's/nss/jss/g'`
JSS_SAMPLES="$MOZILLA_ROOT/security/jss/samples"
JSS_CLASSPATH=`echo $MOZILLA_ROOT |
sed -e "s/jss$NSSVER.builds/jss$NSSVER\/ships/g" -e "s/mozilla/jss\/${QAYEAR}${BUILDDATE}/"`
Debug "JSS_CLASSPATH=$JSS_CLASSPATH"
Debug "JSS_SAMPLES=$JSS_SAMPLES"
if [ ! -d $JSS_SAMPLES ] ; then
if [ "$O_WIN" = "ON" -a "$WIN_WAIT_FOREVER" = "ON" ]
then
WaitForever $JSS_SAMPLES/TestKeyGen.java 1
else
Exit "Test directory $JSS_SAMPLES does not exist"
fi
fi
PWFILE="$JSS_SAMPLES/passwd"
EMPTYFILE="$JSS_SAMPLES/emptyfile"
rm $PWFILE $EMPTYFILE 2>/dev/null
echo "jss" >$PWFILE
echo "" >$EMPTYFILE
echo "" >>$EMPTYFILE
echo "" >>$EMPTYFILE
INIT_PATH=$PATH
INIT_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
}
jss_mode_init()
{
OBJDIR=`cd ${TESTSCRIPTDIR}/common; gmake objdir_name`
LOCALDIST_BIN=`echo $LOCALDIST_BIN | sed -e 's/nss/jss/g'`
LOCALDIST_LIB=$LOCALDIST_BIN/../lib
debug_dirs
#make testdir/libdir
JSS_LIBDIR=${RESULTDIR}/${HOST}.libdir/${OBJDIR}
mkdir -p ${JSS_LIBDIR} 2>/dev/null
Debug "JSS_LIBDIR=$JSS_LIBDIR"
#Put all the shared libraries into a lib directory
Debug "copy all needed libs to ${JSS_LIBDIR}"
cp $JSS_NSPR_DIR/${OBJDIR}/lib/* ${JSS_LIBDIR}
cp $JSS_NSS_DIR/${OBJDIR}/lib/* ${JSS_LIBDIR}
cp $LOCALDIST_LIB/libjss3.* ${JSS_LIBDIR}
#FIXME uncomment above
if [ $O_DEBUG = ON ] ; then
Debug "ls $JSS_LIBDIR"
ls $JSS_LIBDIR
fi
#LD_LIBRARY_PATH=$INIT_LD_LIBRARY_PATH:${JSS_LIBDIR}
LD_LIBRARY_PATH=${JSS_LIBDIR} #remove to avoid HP coredump
CLASSPATH="$JSS_CLASSPATH/xpclass.jar:."
SHLIB_PATH=${LD_LIBRARY_PATH}
LIBPATH=${LD_LIBRARY_PATH}
PATH=$JSS_NSPR_DIR/${OBJDIR}/bin:$JSS_NSS_DIR/${OBJDIR}//bin:$INIT_PATH
Debug "PATH $PATH"
Debug "LD_LIBRARY_PATH $LD_LIBRARY_PATH"
Debug "CLASSPATH=$CLASSPATH"
export CLASSPATH LD_LIBRARY_PATH SHLIB_PATH LIBPATH
export TESTSCRIPTDIR COMMON
export_dirs
}
################################ jss_test #########################
#
# go into the build tree. cd to mozilla/security/jss/samples.
# Create NSS directories in this directory with modutil and set the password
#
#6. Create an alias for the "java" and "javac" commands. You'll need to set
#it to whatever version of the JDK you used to build on this platform. For
#example,
#alias java /share/builds/components/cms_jdk/AIX/1.3.0/jre/bin/java
#alias javac /share/builds/components/cms_jdk/AIX/1.3.0/bin/javac
# instead $JAVA and $JAVAC
# 7. Compile the tests.
#####################################################################
jss_test()
{
O_FILE=OFF
Debug "JSS main test"
#set -x
cd $JSS_SAMPLES
Debug "Cleaning $JSS_SAMPLES"
rm cert7.db key3.db 2>/dev/null
Debug "echo | modutil -dbdir . -create -force"
echo | modutil -dbdir . -create -force
Debug "modutil returned $?"
modutil -dbdir . -list
Debug "echo | modutil -dbdir . -changepw \"$INTERNAL_TOKEN\" -newpwfile $PWFILE -force"
modutil -dbdir . -changepw "$INTERNAL_TOKEN" -newpwfile $PWFILE -force <$EMPTYFILE
#modutil -dbdir . -changepw "$INTERNAL_TOKEN" -pwfile $PWFILE -newpwfile $PWFILE <$EMPTYFILE
Debug "modutil returned $?"
Debug "$JAVAC TestKeyGen.java"
$JAVAC TestKeyGen.java
Debug "$JAVAC TestKeyGen.java returned $?"
Debug "$JAVAC SigTest.java"
$JAVAC SigTest.java
Debug "$JAVAC SigTest.java returned $?"
echo "Starting new jss test on $HOST"
date
# Run the actual tests
Debug "$JAVA $NATIVE_FLAG TestKeyGen ."
$JAVA $NATIVE_FLAG TestKeyGen .
Debug "$JAVA TestKeyGen returned $?"
Debug "$JAVA $NATIVE_FLAG SigTest . \"$SIGTEST_INTERNAL_TOKEN\""
$JAVA $NATIVE_FLAG SigTest . "$SIGTEST_INTERNAL_TOKEN"
Debug "$JAVA SigTest returned $?"
O_FILE=ON
}
jss_init
jss_mode_init
if [ "$O_CRON" = "ON" -o "$O_WIN" = "ON" ]
then
jss_test >>$JSS_LOGFILE 2>&1
else
jss_test 2>&1 | tee -a $JSS_LOGFILE
fi
BUILD_OPT=1; export BUILD_OPT; Debug "BUILD_OPT $BUILD_OPT"
jss_mode_init
if [ "$O_CRON" = "ON" -o "$O_WIN" = "ON" ]
then
jss_test >>$JSS_LOGFILE 2>&1
else
jss_test 2>&1 | tee -a $JSS_LOGFILE
fi
Exit "jssqa completed. Done `uname -n` $QA_OS_STRING"