|
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 |