join: Add a benchmark for join/leave
authorKai Blin <kai@samba.org>
Thu, 10 Sep 2009 17:01:12 +0000 (19:01 +0200)
committerKai Blin <kai@samba.org>
Thu, 10 Sep 2009 17:01:12 +0000 (19:01 +0200)
.gitignore
settings.sh
time_join.sh [new file with mode: 0644]
time_kinit.sh
utils.sh

index d38c149cc61d33df6db42048970c41f73bd193fd..aac8c32773b068fc4f1425f1a069f75c7bc76a68 100644 (file)
@@ -1,2 +1,4 @@
 *.swp
 *~
+smb.conf
+runs.txt
index 8d6186752e1bb4ca59a50576fd0af27b3ad775aa..4ffe9dcfb5c07d0fc75e9173a3b9d2d0c2e5e4ca 100644 (file)
@@ -16,3 +16,6 @@ SEQ=seq
 
 NEW_KRB5CCNAME=/tmp/ad_test_ccname
 
+NET=/home/kai/samba/s3/bin/net
+CONFIG_FILE=`dirname $0`/smb.conf
+
diff --git a/time_join.sh b/time_join.sh
new file mode 100644 (file)
index 0000000..2e865ed
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+ITERATIONS=100
+
+source `dirname $0`/utils.sh
+
+PRINCIPAL=$(get_principal $1)
+PASSWORD=$(get_password $1)
+REALM=$(get_realm $1)
+NT_DOM=$(get_nt_dom $1)
+
+join_domain () {
+       SERVER=$1
+       ${NET} ads join -k -s $CONFIG_FILE -S ${SERVER} > /dev/null
+       RET=$?
+       if [ $RET -ne 0 ]; then
+               echo "${NET} returned error: $RET"
+               exit 1
+       fi
+}
+
+leave_domain () {
+       SERVER=$1
+       ${NET} ads leave -k -s $CONFIG_FILE -S ${SERVER} > /dev/null
+       if [ $RET -ne 0 ]; then
+               echo "${NET} returned error: $RET"
+               exit 1
+       fi
+}
+
+set_up () {
+       set_krb_env
+       setup_kinit
+       call_kinit "${PRINCIPAL}" "${PASSWORD}"
+       write_configfile "${REALM}" "${NT_DOM}"
+}
+
+tear_down () {
+       ${KDESTROY}
+       restore_krb_env
+}
+
+set_up
+
+START_TIME=$(start_timer)
+
+for i in $( ${SEQ} 1 $ITERATIONS ); do
+       join_domain $2
+       leave_domain $2
+done
+
+STOP_TIME=$(stop_timer)
+
+TOTAL_TIME=$( total_time $START_TIME $STOP_TIME )
+
+echo "Total time: ${TOTAL_TIME}s"
+
+LOGINS_PER_MINUTE=$(iterations_per_minute $START_TIME $STOP_TIME $ITERATIONS)
+
+echo "Performed $LOGINS_PER_MINUTE join/leave cycles per minute"
+
+tear_down
+
index 43481003ff9ef6d586ff68f22224c5231a271855..2e7ffbd372bb701f26784b3fd8a506e66e8c2259 100644 (file)
@@ -23,11 +23,7 @@ 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"
-               exit 1
-       fi
+       call_kinit "${PRINCIPAL}" "${PASSWORD}"
        ${KDESTROY}
 done
 
index f2d465fd4f758e54f734ab3262cfa8c170598e80..e54e5397bb537edeaba0143013bc96f9e0d48640 100644 (file)
--- a/utils.sh
+++ b/utils.sh
@@ -70,3 +70,22 @@ setup_kinit () {
        fi
 }
 
+write_configfile () {
+       REALM=$1
+       NT_DOM=$2
+       echo -e "[global]" > $CONFIG_FILE
+       echo -e "\trealm = $REALM" >> $CONFIG_FILE
+       echo -e "\tworkgroup = $NT_DOM" >> $CONFIG_FILE
+       echo -e "\tsecurity = ADS" >> $CONFIG_FILE
+}
+
+call_kinit () {
+       PRINCIPAL=$1
+       PASSWORD=$2
+       echo "${PASSWORD}" | ${KINIT} ${PRINCIPAL} > /dev/null
+       RET=$?
+       if [ $RET -ne 0 ]; then
+               echo "kinit returned an error: $RET"
+               exit 1
+       fi
+}