#! /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"