* v4gssftp.exp, gssftp.exp: Test transfering a file > 1MB to
authorEzra Peisach <epeisach@mit.edu>
Wed, 4 Jul 2001 15:05:09 +0000 (15:05 +0000)
committerEzra Peisach <epeisach@mit.edu>
Wed, 4 Jul 2001 15:05:09 +0000 (15:05 +0000)
        exercise PBSZ failure.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13554 dc483132-0cff-0310-8789-dd5450dbe970

src/tests/dejagnu/krb-standalone/ChangeLog
src/tests/dejagnu/krb-standalone/gssftp.exp
src/tests/dejagnu/krb-standalone/v4gssftp.exp

index d5d323169806fc7163e75c580145d6150ffd605b..e34d13e61bc22148ea6be7c7bab4a349f68c0bc9 100644 (file)
@@ -1,3 +1,8 @@
+2001-07-04  Ezra Peisach  <epeisach@mit.edu>
+
+       * v4gssftp.exp, gssftp.exp: Test transfering a file > 1MB to
+       exercise PBSZ failure.
+
 2001-06-22  Tom Yu  <tlyu@mit.edu>
 
        * gssftp.exp: Use $tmppwd rather than hardcoding tmpdir.
index 912c36686f5ddf097b76123dfb0a80085cb9d810..d0b49d320d1cea80c5882cebf28631e011e0e140 100644 (file)
@@ -72,8 +72,17 @@ set file [open $tmppwd/ftp-test w]
 puts $file "This file is used for ftp testing."
 close $file
 
+# Create a large file to use for ftp testing. File needs to be 
+# larger that 2^20 or 1MB for PBSZ testing.
+set file [open $tmppwd/bigftp-test w]
+puts $file "This file is used for ftp testing.\n"
+seek $file 1048576 current
+puts $file "This file is used for ftp testing."
+close $file
+
+
 # Test that a file was copied correctly.
-proc check_file { filename } {
+proc check_file { filename {bigfile 0}} {
     if ![file exists $filename] {
        verbose "$filename does not exist"
        send_log "$filename does not exist\n"
@@ -95,6 +104,24 @@ proc check_file { filename } {
        return 0
     }
 
+    if {$bigfile} {
+       # + 1 for the newline
+       seek $file 1048577 current
+       if { [gets $file line] == -1 } {
+           verbose "$filename is truncated"
+           send_log "$filename is truncated\n"
+           close $file
+           return 0
+       }
+
+       if ![string match "This file is used for ftp testing." $line] {
+           verbose "$filename contains $line"
+           send_log "$filename contains $line\n"
+           close $file
+           return 0
+       }
+    }
+
     if { [gets $file line] != -1} {
        verbose "$filename is too long ($line)"
        send_log "$filename is too long ($line)\n"
@@ -293,6 +320,19 @@ proc ftp_test { } {
        fail $testname
     }
 
+    set testname "big local get"
+    catch "exec rm -f $tmppwd/copy"
+    send "get bigftp-test copy\r"
+    expect "Opening BINARY mode data connection for bigftp-test"
+    expect "Transfer complete"
+    expect -re "\[0-9\]+ bytes received in \[0-9.e-\]+ seconds"
+    expect "ftp> "
+    if [check_file $tmppwd/copy 1] {
+       pass $testname
+    } else {
+       fail $testname
+    }
+
     set testname "start encryption"
     send "private\r"
     expect "Data channel protection level set to private"
@@ -320,6 +360,26 @@ proc ftp_test { } {
        fail $testname
     }
 
+    set testname "big encrypted get"
+    catch "exec rm -f $tmppwd/copy"
+    send "get bigftp-test copy\r"
+    expect "Opening BINARY mode data connection for bigftp-test"
+    expect {
+       -timeout 300
+       "Transfer complete" {}
+       -re "Length .* of PROT buffer > PBSZ" {
+           fail "$testname (PBSZ)"
+           return 0
+       }
+    }
+    expect -re "\[0-9\]+ bytes received in \[0-9.e+-\]+ seconds"
+    expect "ftp> "
+    if [check_file $tmppwd/copy 1] {
+       pass $testname
+    } else {
+       fail $testname
+    }
+    
     set testname "close"
     send "close\r"
     expect "Goodbye."
index a940aa50d379fedd9b6fb1f3db3b47300ce7701f..859cce47067905a451236c14cd0b3451e1bddfdd 100644 (file)
@@ -81,8 +81,16 @@ set file [open $tmppwd/ftp-test w]
 puts $file "This file is used for ftp testing."
 close $file
 
+# Create a large file to use for ftp testing. File needs to be 
+# larger that 2^20 or 1MB for PBSZ testing.
+set file [open $tmppwd/bigftp-test w]
+puts $file "This file is used for ftp testing.\n"
+seek $file 1048576 current
+puts $file "This file is used for ftp testing."
+close $file
+
 # Test that a file was copied correctly.
-proc check_file { filename } {
+proc check_file { filename {bigfile 0}} {
     if ![file exists $filename] {
        verbose "$filename does not exist"
        send_log "$filename does not exist\n"
@@ -104,6 +112,24 @@ proc check_file { filename } {
        return 0
     }
 
+    if {$bigfile} {
+       # + 1 for the newline
+       seek $file 1048577 current
+       if { [gets $file line] == -1 } {
+           verbose "$filename is truncated"
+           send_log "$filename is truncated\n"
+           close $file
+           return 0
+       }
+
+       if ![string match "This file is used for ftp testing." $line] {
+           verbose "$filename contains $line"
+           send_log "$filename contains $line\n"
+           close $file
+           return 0
+       }
+    }
+
     if { [gets $file line] != -1} {
        verbose "$filename is too long ($line)"
        send_log "$filename is too long ($line)\n"
@@ -340,6 +366,19 @@ proc v4ftp_test { } {
        fail $testname
     }
 
+    set testname "big local get(v4)"
+    catch "exec rm -f $tmppwd/copy"
+    send "get bigftp-test copy\r"
+    expect "Opening BINARY mode data connection for bigftp-test"
+    expect "Transfer complete"
+    expect -re "\[0-9\]+ bytes received in \[0-9.e-\]+ seconds"
+    expect "ftp> "
+    if [check_file $tmppwd/copy 1] {
+       pass $testname
+    } else {
+       fail $testname
+    }
+
     set testname "start encryption(v4)"
     send "private\r"
     expect "Data channel protection level set to private"
@@ -375,6 +414,29 @@ proc v4ftp_test { } {
        fail $testname
     }
 
+
+    # Test a large file that will overflow PBSZ size
+    set testname "big encrypted get(v4)"
+    catch "exec rm -f $tmppwd/copy"
+    send "get bigftp-test copy\r"
+    expect "Opening BINARY mode data connection for bigftp-test"
+    expect "Transfer complete"
+    expect {
+       -re "\[0-9\]+ bytes received in \[0-9.e+-\]+ seconds" {}
+       -re "krb_rd_priv failed for KERBEROS_V4" {
+           fail $testname
+           send "quit\r"
+           catch "expect_after"
+           return
+       }
+    }
+    expect "ftp> "
+    if [check_file $tmppwd/copy 1] {
+       pass $testname
+    } else {
+       fail $testname
+    }
+
     set testname "close(v4)"
     send "close\r"
     expect "Goodbye."