summaryrefslogtreecommitdiff
path: root/tests/dbtests/dbtests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/dbtests/dbtests.sh')
-rwxr-xr-xtests/dbtests/dbtests.sh59
1 files changed, 42 insertions, 17 deletions
diff --git a/tests/dbtests/dbtests.sh b/tests/dbtests/dbtests.sh
index 9dcf738c4..61a3888c6 100755
--- a/tests/dbtests/dbtests.sh
+++ b/tests/dbtests/dbtests.sh
@@ -8,7 +8,7 @@
#
# mozilla/security/nss/tests/dbtest/dbtest.sh
#
-# Certificate generating and handeling for NSS QA, can be included
+# Certificate generating and handeling for NSS QA, can be included
# multiple times from all.sh and the individual scripts
#
# needs to work on all Unix and Windows platforms
@@ -50,6 +50,7 @@ dbtest_init()
RONLY_DIR=${HOSTDIR}/ronlydir
EMPTY_DIR=${HOSTDIR}/emptydir
CONFLICT_DIR=${HOSTDIR}/conflictdir
+ THREAD_DIR=${HOSTDIR}/threadir
html_head "CERT and Key DB Tests"
@@ -61,7 +62,7 @@ dbtest_init()
########################################################################
dbtest_cleanup()
{
- html "</TABLE><BR>"
+ html "</TABLE><BR>"
cd ${QADIR}
chmod a+rw $RONLY_DIR
. common/cleanup.sh
@@ -78,21 +79,21 @@ dbtest_main()
{
cd ${HOSTDIR}
-
+
Echo "test opening the database read/write in a nonexisting directory"
${BINDIR}/certutil -L -X -d ./non_existent_dir
ret=$?
if [ $ret -ne 255 ]; then
html_failed "Certutil succeeded in a nonexisting directory $ret"
else
- html_passed "Certutil didn't work in a nonexisting dir $ret"
+ html_passed "Certutil didn't work in a nonexisting dir $ret"
fi
${BINDIR}/dbtest -r -d ./non_existent_dir
ret=$?
if [ $ret -ne 46 ]; then
html_failed "Dbtest readonly succeeded in a nonexisting directory $ret"
else
- html_passed "Dbtest readonly didn't work in a nonexisting dir $ret"
+ html_passed "Dbtest readonly didn't work in a nonexisting dir $ret"
fi
Echo "test force opening the database in a nonexisting directory"
@@ -106,7 +107,7 @@ dbtest_main()
Echo "test opening the database readonly in an empty directory"
mkdir $EMPTY_DIR
- ${BINDIR}/tstclnt -h ${HOST} -d $EMPTY_DIR
+ ${BINDIR}/tstclnt -h ${HOST} -d $EMPTY_DIR
ret=$?
if [ $ret -ne 1 ]; then
html_failed "Tstclnt succeded in an empty directory $ret"
@@ -118,7 +119,7 @@ dbtest_main()
if [ $ret -ne 46 ]; then
html_failed "Dbtest readonly succeeded in an empty directory $ret"
else
- html_passed "Dbtest readonly didn't work in an empty dir $ret"
+ html_passed "Dbtest readonly didn't work in an empty dir $ret"
fi
rm -rf $EMPTY_DIR/* 2>/dev/null
${BINDIR}/dbtest -i -d $EMPTY_DIR
@@ -126,7 +127,7 @@ dbtest_main()
if [ $ret -ne 0 ]; then
html_failed "Dbtest logout after empty DB Init loses key $ret"
else
- html_passed "Dbtest logout after empty DB Init has key"
+ html_passed "Dbtest logout after empty DB Init has key"
fi
rm -rf $EMPTY_DIR/* 2>/dev/null
${BINDIR}/dbtest -i -p pass -d $EMPTY_DIR
@@ -134,12 +135,12 @@ dbtest_main()
if [ $ret -ne 0 ]; then
html_failed "Dbtest password DB Init loses needlogin state $ret"
else
- html_passed "Dbtest password DB Init maintains needlogin state"
+ html_passed "Dbtest password DB Init maintains needlogin state"
fi
rm -rf $EMPTY_DIR/* 2>/dev/null
${BINDIR}/certutil -D -n xxxx -d $EMPTY_DIR #created DB
ret=$?
- if [ $ret -ne 255 ]; then
+ if [ $ret -ne 255 ]; then
html_failed "Certutil succeeded in deleting a cert in an empty directory $ret"
else
html_passed "Certutil didn't work in an empty dir $ret"
@@ -176,7 +177,7 @@ dbtest_main()
if [ $ret -ne 46 ]; then
html_failed "Dbtest r/w succeeded in a readonly directory $ret"
else
- html_passed "Dbtest r/w didn't work in an readonly dir $ret"
+ html_passed "Dbtest r/w didn't work in an readonly dir $ret"
fi
else
html_passed "Skipping Dbtest r/w in a readonly dir because user is root"
@@ -190,9 +191,9 @@ dbtest_main()
html_passed "Certutil didn't work in an readonly dir $ret"
fi
else
- html_passed "Skipping Certutil delete cert in a readonly directory test because user is root"
+ html_passed "Skipping Certutil delete cert in a readonly directory test because user is root"
fi
-
+
Echo "test opening the database ronly in a readonly directory"
${BINDIR}/dbtest -d $RONLY_DIR -r
@@ -200,7 +201,7 @@ dbtest_main()
if [ $ret -ne 0 ]; then
html_failed "Dbtest readonly failed in a readonly directory $ret"
else
- html_passed "Dbtest readonly succeeded in a readonly dir $ret"
+ html_passed "Dbtest readonly succeeded in a readonly dir $ret"
fi
Echo "test force opening the database r/w in a readonly directory"
@@ -223,7 +224,7 @@ dbtest_main()
ret=$?
if [ $ret -ne 0 ]; then
html_failed "Nicknane conflict test failed, couldn't create database $ret"
- else
+ else
${BINDIR}/certutil -A -n alice -t ,, -i ${R_ALICEDIR}/Alice.cert -d ${CONFLICT_DIR}
ret=$?
if [ $ret -ne 0 ]; then
@@ -252,7 +253,7 @@ dbtest_main()
else
html_passed "Nicknane conflict test-setting nickname conflict was correctly rejected"
fi
- # import a token private key and make sure the corresponding public key is
+ # import a token private key and make sure the corresponding public key is
# created
${BINDIR}/pk11importtest -d ${CONFLICT_DIR} -f ${R_PWFILE}
ret=$?
@@ -261,10 +262,34 @@ dbtest_main()
else
html_passed "Importing Token Private Key correctly creates the corrresponding Public Key"
fi
+
+
+ if [ "${NSS_DEFAULT_DB_TYPE}" = "sql" ] ; then
+ LOOPS=${NSS_SDB_THREAD_LOOPS-7}
+ THREADS=${NSS_SDB_THREAD_THREADS-30}
+ mkdir -p ${THREAD_DIR}
+ Echo "testing for thread starvation while creating keys"
+ ${BINDIR}/certutil -N -d ${THREAD_DIR} --empty-password
+ ${BINDIR}/sdbthreadtst -l ${LOOPS} -t ${THREADS} -d ${THREAD_DIR}
+ ret=$?
+ case "$ret" in
+ "0")
+ html_passed "Successfully completed ${LOOPS} loops in ${THREADS} threads without failure."
+ ;;
+ "2")
+ html_failed "sdbthreadtst failed for some environment reason (like lack of memory)"
+ ;;
+ "1")
+ html_failed "sdbthreadtst failed do to starvation using ${LOOPS} loops and ${THREADS} threads."
+ ;;
+ *)
+ html_failed "sdbthreadtst failed with an unrecognized error code."
+ esac
+ fi
}
################## main #################################################
-dbtest_init
+dbtest_init
dbtest_main 2>&1
dbtest_cleanup