Revision control

Line Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
#! /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"