diff options
author | Ken Raeburn <raeburn@mit.edu> | 2008-11-10 18:27:42 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@mit.edu> | 2008-11-10 18:27:42 +0000 |
commit | 15ad87eb0f1ee666915d661f10dc812061dd0811 (patch) | |
tree | 5ae961a33604ecb41c6eaff430ab18f1553b4248 /src/tests/dejagnu/krb-standalone | |
parent | 0a9ceeacdd6e9b190b969e00dd676f43c87ef3b5 (diff) | |
download | krb5-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.exp | 30 | ||||
-rw-r--r-- | src/tests/dejagnu/krb-standalone/standalone.exp | 30 | ||||
-rw-r--r-- | src/tests/dejagnu/krb-standalone/tcp.exp | 117 |
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 +} |