summaryrefslogtreecommitdiffstats
path: root/src/tests/dejagnu/krb-standalone
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>2008-11-10 18:27:42 +0000
committerKen Raeburn <raeburn@mit.edu>2008-11-10 18:27:42 +0000
commit15ad87eb0f1ee666915d661f10dc812061dd0811 (patch)
tree5ae961a33604ecb41c6eaff430ab18f1553b4248 /src/tests/dejagnu/krb-standalone
parent0a9ceeacdd6e9b190b969e00dd676f43c87ef3b5 (diff)
downloadkrb5-15ad87eb0f1ee666915d661f10dc812061dd0811.tar.gz
krb5-15ad87eb0f1ee666915d661f10dc812061dd0811.tar.xz
krb5-15ad87eb0f1ee666915d661f10dc812061dd0811.zip
Delete the pass (one of twelve) that does all KDC exchanges with TCP;
add a test case that sets that up and runs kinit. Add a new support proc that allows running a test only once despite multiple passes; use it for the tcp and iprop tests. According to one totally unscientific measurement, this reduces the tests/dejagnu tests run from ~4200 to ~3800, and cuts over 8% off the run time of those tests, without IMNSHO reducing the effectiveness of the testing. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@21064 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/tests/dejagnu/krb-standalone')
-rw-r--r--src/tests/dejagnu/krb-standalone/iprop.exp30
-rw-r--r--src/tests/dejagnu/krb-standalone/standalone.exp30
-rw-r--r--src/tests/dejagnu/krb-standalone/tcp.exp117
3 files changed, 133 insertions, 44 deletions
diff --git a/src/tests/dejagnu/krb-standalone/iprop.exp b/src/tests/dejagnu/krb-standalone/iprop.exp
index f4e4be25a..109e6499d 100644
--- a/src/tests/dejagnu/krb-standalone/iprop.exp
+++ b/src/tests/dejagnu/krb-standalone/iprop.exp
@@ -1,11 +1,6 @@
# Password-changing Kerberos test.
# This is a DejaGnu test script.
-# Set up the Kerberos files and environment.
-if {![get_hostname] || ![setup_kerberos_files] || ![setup_kerberos_env]} {
- return
-}
-
# We are about to start up a couple of daemon processes. We do all
# the rest of the tests inside a proc, so that we can easily kill the
# processes when the procedure ends.
@@ -109,16 +104,23 @@ proc doit { } {
}
}
-set status [catch doit msg]
+run_once iprop {
+ # Set up the Kerberos files and environment.
+ if {![get_hostname] || ![setup_kerberos_files] || ![setup_kerberos_env]} {
+ return
+ }
-stop_kerberos_daemons
+ set status [catch doit msg]
-set ulog 0
-reset_kerberos_files
-file delete $tmppwd/adb $tmppwd/adb.ok $tmppwd/db.ulog
+ stop_kerberos_daemons
-if { $status != 0 } {
- send_error "ERROR: error in iprop.exp\n"
- send_error "$msg\n"
- exit 1
+ set ulog 0
+ reset_kerberos_files
+ file delete $tmppwd/adb $tmppwd/adb.ok $tmppwd/db.ulog
+
+ if { $status != 0 } {
+ send_error "ERROR: error in iprop.exp\n"
+ send_error "$msg\n"
+ exit 1
+ }
}
diff --git a/src/tests/dejagnu/krb-standalone/standalone.exp b/src/tests/dejagnu/krb-standalone/standalone.exp
index 9a92b9303..47eaaa63c 100644
--- a/src/tests/dejagnu/krb-standalone/standalone.exp
+++ b/src/tests/dejagnu/krb-standalone/standalone.exp
@@ -234,36 +234,6 @@ proc doit { } {
pass "kadmin.local correct high kvno"
}
}
-
- if { $mode == "tcp" } {
- set response {}
- set got_response 0
- set kdcsock ""
- catch {
- send_log "connecting to $hostname [expr 3 + $portbase]\n"
- set kdcsock [socket $hostname [expr 3 + $portbase]]
- fconfigure $kdcsock -encoding binary -blocking 0 -buffering none
- puts -nonewline $kdcsock [binary format H* ffffffff]
- # XXX
- sleep 3
- set response [read $kdcsock]
- set got_response 1
- } msg
- if [string length $kdcsock] { catch "close $kdcsock" }
- if $got_response {
-# send_log [list sent length -1, got back $response]
-# send_log "\n"
- if [string length $response]>10 {
- pass "too-long TCP request"
- } else {
- send_log "response too short\n"
- fail "too-long TCP request"
- }
- } else {
- send_log "too-long connect/exchange failure: $msg\n"
- fail "too-long TCP request"
- }
- }
}
set status [catch doit msg]
diff --git a/src/tests/dejagnu/krb-standalone/tcp.exp b/src/tests/dejagnu/krb-standalone/tcp.exp
new file mode 100644
index 000000000..db09b895e
--- /dev/null
+++ b/src/tests/dejagnu/krb-standalone/tcp.exp
@@ -0,0 +1,117 @@
+# Standalone Kerberos test.
+# This is a DejaGnu test script.
+# This script tests that the Kerberos tools can talk to each other.
+
+# This mostly just calls procedures in testsuite/config/default.exp.
+
+# We are about to start up a couple of daemon processes. We do all
+# the rest of the tests inside a proc, so that we can easily kill the
+# processes when the procedure ends.
+
+proc doit { } {
+ global REALMNAME
+ global KLIST
+ global KDESTROY
+ global KEY
+ global KADMIN_LOCAL
+ global KTUTIL
+ global hostname
+ global tmppwd
+ global spawn_id
+ global supported_enctypes
+ global KRBIV
+ global portbase
+ global mode
+
+ # Start up the kerberos and kadmind daemons.
+ if ![start_kerberos_daemons 1] {
+ return
+ }
+
+ # Use kadmin to add an host key.
+ if ![add_random_key host/$hostname 1] {
+ return
+ }
+
+ # Use ksrvutil to create a srvtab entry.
+# if ![setup_srvtab 1] {
+# return
+# }
+
+ # Use kinit to get a ticket.
+ if ![kinit krbtest/admin adminpass$KEY 1] {
+ return
+ }
+
+ # Make sure that klist can see the ticket.
+ if ![do_klist "krbtest/admin@$REALMNAME" "krbtgt/$REALMNAME@$REALMNAME" "klist"] {
+ return
+ }
+
+ # Destroy the ticket.
+ spawn $KDESTROY -5
+ if ![check_exit_status "kdestroy"] {
+ return
+ }
+ pass "kdestroy"
+
+ set response {}
+ set got_response 0
+ set kdcsock ""
+ catch {
+ send_log "connecting to $hostname [expr 3 + $portbase]\n"
+ set kdcsock [socket $hostname [expr 3 + $portbase]]
+ fconfigure $kdcsock -encoding binary -blocking 0 -buffering none
+ puts -nonewline $kdcsock [binary format H* ffffffff]
+ # XXX
+ sleep 3
+ set response [read $kdcsock]
+ set got_response 1
+ } msg
+ if [string length $kdcsock] { catch "close $kdcsock" }
+ if $got_response {
+# send_log [list sent length -1, got back $response]
+# send_log "\n"
+ if [string length $response]>10 {
+ pass "too-long TCP request"
+ } else {
+ send_log "response too short\n"
+ fail "too-long TCP request"
+ }
+ } else {
+ send_log "too-long connect/exchange failure: $msg\n"
+ fail "too-long TCP request"
+ }
+}
+
+set status 0
+run_once tcp {
+ # Set up the Kerberos files and environment.
+ set mode tcp
+ reset_kerberos_files
+ if {![get_hostname] || ![setup_kerberos_files] || ![setup_kerberos_env]} {
+ set mode udp
+ reset_kerberos_files
+ return
+ }
+ # Reset now, for next time we write the config files.
+ set mode udp
+
+ # Initialize the Kerberos database. The argument tells
+ # setup_kerberos_db that it is being called from here.
+ if ![setup_kerberos_db 1] {
+ reset_kerberos_files
+ return
+ }
+
+ set status [catch doit msg]
+}
+
+reset_kerberos_files
+stop_kerberos_daemons
+
+if { $status != 0 } {
+ send_error "ERROR: error in standalone.exp\n"
+ send_error "$msg\n"
+ exit 1
+}