#!/bin/bash
-TIME=time
-# MIT krb < 1.6
-KINIT="kinit --password-file=STDIN"
-# MIT krb >= 1.6
-# KINIT="kinit"
-KDESTROY=kdestroy
-DATE=date
-SEQ=seq
+# Iterations are set per test, so more time-consuming tests can be run less
+# often
+ITERATIONS=100
-PRINCIPAL="${1}"
-PASSWORD="${2}"
+source `dirname $0`/utils.sh
-OLD_KRB5CCNAME="${KRB5CCNAME}"
-KRB5CCNAME=/tmp/ad_test_ccname
-export KRB5CCNAME
+set_up () {
+ set_krb_env
+ setup_kinit
+}
-START_TIME=`${DATE} "+%s.%N"`
+tear_down () {
+ restore_krb_env
+}
-for i in `${SEQ} 1 100`; do
+set_up
+
+PRINCIPAL=$( get_principal $1)
+PASSWORD=$( get_password $1)
+
+START_TIME=$( start_timer )
+
+for i in $(${SEQ} 1 $ITERATIONS); do
echo ${PASSWORD} | ${KINIT} ${PRINCIPAL} > /dev/null
if [ $? -ne 0 ]; then
- echo "kinit returned an error\n"
+ echo "kinit returned an error"
exit 1
fi
${KDESTROY}
done
-END_TIME=`${DATE} "+%s.%N"`
+STOP_TIME=$( stop_timer )
-TOTAL_TIME=$(echo "scale=9;$END_TIME - $START_TIME"| bc)
+TOTAL_TIME=$( total_time $START_TIME $STOP_TIME )
-echo "Total time: $TOTAL_TIME"
+echo "Total time: ${TOTAL_TIME}s"
-LOGINS_PER_MINUTE=$(echo "scale=2; 60 * 100 / $TOTAL_TIME" | bc)
+LOGINS_PER_MINUTE=$(iterations_per_minute $START_TIME $STOP_TIME $ITERATIONS)
echo "Performed $LOGINS_PER_MINUTE kinit/kdestroy cycles per minute"
-KRB5CCNAME="${OLD_KRB5CCNAME}"
-export KRB5CCNAME
+tear_down
--- /dev/null
+#!/bin/bash
+
+source `dirname $0`/settings.sh
+
+start_timer () {
+ START_TIME=$( ${DATE} ${DATE_FORMATSTR} )
+ echo "$START_TIME"
+}
+
+stop_timer () {
+ STOP_TIME=$( ${DATE} ${DATE_FORMATSTR} )
+ echo "$STOP_TIME"
+}
+
+total_time () {
+ START_TIME=$1
+ END_TIME=$2
+ TOTAL_TIME=$( echo "scale=9;$STOP_TIME - $START_TIME" | ${BC} )
+ echo "$TOTAL_TIME"
+}
+
+iterations_per_minute () {
+ START_TIME=$1
+ STOP_TIME=$2
+ TOTAL_RUNS=$3
+
+ TOTAL_TIME=$( total_time $START_TIME $STOP_TIME )
+
+ ITER_PER_MIN=$( echo "scale=2; 60 * $TOTAL_RUNS / $TOTAL_TIME" | ${BC} )
+ echo "$ITER_PER_MIN"
+}
+
+get_principal () {
+ PRINCIPAL=$( echo $1 | ${SED} -e "s/\(.*\)%.*/\1/" )
+ echo "$PRINCIPAL"
+}
+
+get_password () {
+ PASSWORD=$( echo $1 | ${SED} -e "s/.*%\(.*\)/\1/" )
+ echo "$PASSWORD"
+}
+
+get_realm () {
+ REALM=$( echo $1 | ${SED} -e "s/.*@\(.*\)%.*/\1/" )
+ echo "$REALM"
+}
+
+get_nt_dom () {
+ NT_DOM=$( echo $1 | ${SED} -e "s/.*@\(.*\)\..*/\1/" )
+ echo "$NT_DOM"
+}
+
+set_krb_env () {
+ OLD_KRB5CCNAME="${KRB5CCNAME}"
+ KRB5CCNAME="${NEW_KRB5CCNAME}"
+ export KRB5CCNAME
+}
+
+restore_krb_env () {
+ KRB5CCNAME="${OLD_KRB5CCNAME}"
+ export KRB5CCNAME
+}
+
+setup_kinit () {
+ ${KINIT} --invalid 2>&1 | grep -q -- "${KINIT_PARAM_OLD}"
+ if [ $? -eq 0 ]; then
+ KINIT="${KINIT} ${KINIT_PARAM_OLD}"
+ else
+ KINIT="${KINIT} ${KINIT_PARAM_NEW}"
+ fi
+}
+