Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 #! /bin/sh
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/.
7 ########################################################################
8 #
9 # mozilla/security/nss/tests/multinit/multinit.sh
10 #
11 # Script to test NSS multinit
12 #
13 # needs to work on all Unix and Windows platforms
14 #
15 # special strings
16 # ---------------
17 # FIXME ... known problems, search for this string
18 # NOTE .... unexpected behavior
19 #
20 ########################################################################
22 ############################## multinit_init ##############################
23 # local shell function to initialize this script
24 ########################################################################
25 multinit_init()
26 {
27 SCRIPTNAME=multinit.sh # sourced - $0 would point to all.sh
29 if [ -z "${CLEANUP}" ] ; then # if nobody else is responsible for
30 CLEANUP="${SCRIPTNAME}" # cleaning this script will do it
31 fi
33 if [ -z "${INIT_SOURCED}" -o "${INIT_SOURCED}" != "TRUE" ]; then
34 cd ../common
35 . ./init.sh
36 fi
37 if [ ! -r $CERT_LOG_FILE ]; then # we need certificates here
38 cd ../cert
39 . ./cert.sh
40 fi
41 SCRIPTNAME=multinit.sh
43 html_head "MULTI Tests"
45 grep "SUCCESS: SMIME passed" $CERT_LOG_FILE >/dev/null || {
46 Exit 11 "Fatal - S/MIME of cert.sh needs to pass first"
47 }
49 # set up our directories
50 MULTINITDIR=${HOSTDIR}/multinit
51 MULTINITDIR_1=${MULTINITDIR}/dir1
52 MULTINITDIR_2=${MULTINITDIR}/dir2
53 MULTINITDIR_3=${MULTINITDIR}/dir3
54 R_MULINITDIR=../multinit
55 R_MULTINITDIR_1=${R_MULTINITDIR}/dir1
56 R_MULTINITDIR_2=${R_MULTINITDIR}/dir2
57 R_MULTINITDIR_3=${R_MULTINITDIR}/dir3
58 # first create them all
59 mkdir -p ${MULTINITDIR}
60 mkdir -p ${MULTINITDIR_1}
61 mkdir -p ${MULTINITDIR_2}
62 mkdir -p ${MULTINITDIR_3}
63 # now copy them fro alice, bob, and dave
64 cd ${MULTINITDIR}
65 cp ${P_R_ALICEDIR}/* ${MULTINITDIR_1}/
66 cp ${P_R_BOBDIR}/* ${MULTINITDIR_2}/
67 cp ${P_R_DAVEDIR}/* ${MULTINITDIR_3}/
68 # finally delete the RootCerts module to keep the certificate noice in the
69 # summary lines down
70 echo | modutil -delete RootCerts -dbdir ${MULTINITDIR_1}
71 echo | modutil -delete RootCerts -dbdir ${MULTINITDIR_2}
72 echo | modutil -delete RootCerts -dbdir ${MULTINITDIR_3}
73 MULTINIT_TESTS=${QADIR}/multinit/multinit.txt
74 }
77 ############################## multinit_main ##############################
78 # local shell function to test basic signed and enveloped messages
79 # from 1 --> 2"
80 ########################################################################
81 multinit_main()
82 {
83 html_head "Multi init interface testing"
84 exec < ${MULTINIT_TESTS}
85 while read order commands shutdown_type dirs readonly testname
86 do
87 if [ "$order" != "#" ]; then
88 read tag expected_result
90 # handle the case where we expect different results based on
91 # the database type.
92 if [ "$tag" != "all" ]; then
93 read tag2 expected_result2
94 if [ "$NSS_DEFAULT_DB_TYPE" == "$tag2" ]; then
95 expected_result=$expected_result2
96 fi
97 fi
99 # convert shutdown type to option flags
100 shutdown_command="";
101 if [ "$shutdown_type" == "old" ]; then
102 shutdown_command="--oldStype"
103 fi
105 # convert read only to option flags
106 ro_command="";
107 case $readonly in
108 all) ro_command="--main_readonly --lib1_readonly --lib2_readonly";;
109 libs) ro_command="--lib1_readonly --lib2_readonly";;
110 main) ro_command="--main_readonly";;
111 lib1) ro_command="--lib1_readonly";;
112 lib2) ro_command="--lib2_readonly";;
113 none) ;;
114 *) ;;
115 esac
117 # convert commands to option flags
118 main_command=`echo $commands | sed -e 's;,.*$;;'`
119 lib1_command=`echo $commands | sed -e 's;,.*,;+&+;' -e 's;^.*+,;;' -e 's;,+.*$;;'`
120 lib2_command=`echo $commands | sed -e 's;^.*,;;'`
122 # convert db's to option flags
123 main_db=`echo $dirs | sed -e 's;,.*$;;'`
124 lib1_db=`echo $dirs | sed -e 's;,.*,;+&+;' -e 's;^.*+,;;' -e 's;,+.*$;;'`
125 lib2_db=`echo $dirs | sed -e 's;^.*,;;'`
127 # show us the command we are executing
128 echo ${PROFILETOOL} ${BINDIR}/multinit --order $order --main_command $main_command --lib1_command $lib1_command --lib2_command $lib2_command $shutdown_command --main_db $main_db --lib1_db $lib1_db --lib2_db $lib2_db $ro_command --main_token_name "Main" --lib1_token_name "Lib1" --lib2_token_name "Lib2" --verbose --summary
130 # execute the command an collect the result. Most of the user
131 # visible output goes to stderr, so it's not captured by the pipe
132 actual_result=`${PROFILETOOL} ${BINDIR}/multinit --order $order --main_command $main_command --lib1_command $lib1_command --lib2_command $lib2_command $shutdown_command --main_db $main_db --lib1_db $lib1_db --lib2_db $lib2_db $ro_command --main_token_name "Main" --lib1_token_name "Lib1" --lib2_token_name "Lib2" --verbose --summary | grep "^result=" | sed -e 's;^result=;;'`
134 # show what we got and what we expected for diagnostic purposes
135 echo "actual = |$actual_result|"
136 echo "expected = |$expected_result|"
137 test "$actual_result" == "$expected_result"
138 html_msg $? 0 "$testname"
139 fi
140 done
141 }
143 ############################## multinit_cleanup ###########################
144 # local shell function to finish this script (no exit since it might be
145 # sourced)
146 ########################################################################
147 multinit_cleanup()
148 {
149 html "</TABLE><BR>"
150 cd ${QADIR}
151 . common/cleanup.sh
152 }
154 ################## main #################################################
156 multinit_init
157 multinit_main
158 multinit_cleanup