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