Author: brad Date: 2006-08-21 04:05:13 +0000 (Mon, 21 Aug 2006) New Revision: 17649
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17649 Log: Added functions map_share, unmap_share, xcopy_file, create_tmp_file and compare_files to common.exp. These are used by the windows client / samba server test. Some output cleanup in wintest_remote.exp and wintest_setup.exp. Modified: branches/SOC/bnh/expect/common.exp branches/SOC/bnh/expect/wintest_remove.exp branches/SOC/bnh/expect/wintest_setup.exp Changeset: Modified: branches/SOC/bnh/expect/common.exp =================================================================== --- branches/SOC/bnh/expect/common.exp 2006-08-21 03:52:43 UTC (rev 17648) +++ branches/SOC/bnh/expect/common.exp 2006-08-21 04:05:13 UTC (rev 17649) @@ -2,12 +2,175 @@ # Copyright Brad Henry <[EMAIL PROTECTED]> 2006 # Released under the GNU GPL v2 or later. +# This function maps a drive letter to a share point. +proc map_share { remote_prompt share_drive sharepoint username domain password } { + set default_err_str "Unknown error in function map_share" + set err_str $default_err_str + + set cmd "net use $share_drive $sharepoint $password /USER:[EMAIL PROTECTED]" + send $cmd + + expect { + "The command completed successfully." { + expect_prompt $remote_prompt + set err_str "OK" + } \ + "The local device name is already in use." { + expect_prompt $remote_prompt + set err_str "The device name $share_drive is already in use" + } \ + "The network name cannot be found." { + expect_prompt $remote_prompt + set err_str "Sharepoint $sharepoint could not be found" + } \ + timeout { + set err_str "Function map_share timed out while mapping $share_drive to $sharepoint" + } + } + return $err_str +} + +# This function unmaps a drive letter from a share point. +proc unmap_share { remote_prompt share_drive } { + set default_err_str "Unknown error in function unmap_share" + set err_str $default_err_str + + set cmd "net use $share_drive /DELETE\r\n" + send $cmd + + expect { + "was deleted successfully." { + expect_prompt $remote_prompt + set err_str "OK" + } \ + "NET HELPMSG 2250" { + expect_prompt $remote_prompt + set err_str "The network connection could not be found while unmapping $share_drive" + } \ + timeout { + set err_str "Function unmap_share timed out while unmapping $share_drive" + } + } + return $err_str +} + +# This function uses xcopy to copy a text file from one location on the +# remote windows host to another. +proc xcopy_file { remote_prompt in_filename out_filename xcopy_options } { + set default_err_str "Unknown error in function xcopy_file" + set err_str $default_err_str + + set cmd "xcopy $in_filename $out_filename $xcopy_options\r\n" + send $cmd + + expect { + "(F = file, D = directory)? " { + set cmd "F\r\n" + send $cmd + expect { + "1 File(s) copied\r\n\r\n" { + expect_prompt $remote_prompt + set err_str "OK" + } \ + "0 File(s) copied\r\n\r\n" { + expect_prompt $remote_prompt + set err_str $default_err_str + } \ + timeout { + set err_str "Function xcopy_file has timed out while copying $in_filename" + } + } + } \ + "1 File(s) copied\r\n\r\n" { + expect_prompt $remote_prompt + set err_str "OK" + } \ + "0 File(s) copied\r\n\r\n" { + expect_prompt $remote_prompt + set err_str $default_err_str + } \ + timeout { + set err_str "Function xcopy_file timed out while copying $in_filename" + } + } + return $err_str +} + +# This function creates a temporary file on the remote windows host. +# The file contents are populated by a recursive directory listing of +# the windows %HOMEDRIVE%. +proc create_tmp_file { remote_prompt filename } { + set default_err_str "Unknown error in function create_tmp_file" + set err_str $default_err_str + + set cmd "dir %HOMEDRIVE%\\ /S > $filename\r\n" + send $cmd + expect { + $remote_prompt { + set err_str "OK" + } \ + timeout { + set err_str "Function create_tmp_file timed out while creating $filename" + } + } + return $err_str +} + +# This function compares two files on the remote windows host. +proc compare_files { remote_prompt file1 file2 } { + set default_err_str "Unknown error in function compare_files" + set err_str $default_err_str + + set cmd "fc $file1 $file2\r\n" + send $cmd + expect { + "FC: no differences encountered\r\n\r\n\r\n" { + expect_prompt $remote_prompt + set err_str "OK" + } \ + "\*\*\*\*\* $file1" { + expect_prompt $remote_prompt + set err_str "Files $file1 and $file2 differ" + } \ + "\*\*\*\*\* $file2" { + expect_prompt $remote_prompt + set err_str "Files $file1 and $file2 differ" + } \ + timeout { + set err_str "Function compare_files timed out while comparing files $file1 and $file2" + } + } + return $err_str +} + +# This function deletes a file on the remote windows host. +proc delete_file { remote_prompt filename } { + set default_err_str "Unknown error in function delete_file" + set err_str $default_err_str + + set cmd "del $filename\r\n" + send $cmd + expect { + "Could Not" { + expect_prompt $remote_prompt + set err_str $default_err_str + } \ + $remote_prompt { + set err_str "OK" + } \ + timeout { + set err_str "Function delete_file timed oout while deleting $filename" + } + } + return $err_str +} + # This function copies a text file over telnet from the local unix host # to the remote windows host. proc copy_file { remote_prompt in_filename out_filename } { set default_err_str "Unknown error in function copy_file" set err_str $default_err_str - + # The octal ASCII code for Control-Z is 032. set CTRLZ \032 @@ -16,7 +179,7 @@ set in_data [read $in_file] # Initiate copy on remote host. - set cmd "copy con $out_filename\r" + set cmd "copy con $out_filename\r\n" send $cmd # Separate $in_data into lines and send to remote host. @@ -29,7 +192,7 @@ # If so, exit so we can handle it. expect { "(Yes/No/All)" { - send "NO\r" + send "NO\r\n" expect_prompt $remote_prompt set err_str "File exists" } \ @@ -152,7 +315,7 @@ set default_err_str "Unknown error in function create_directory" set err_str $default_err_str - set cmd "mkdir $sharepath\r" + set cmd "mkdir $sharepath\r\n" send $cmd expect { "already exists" { @@ -175,7 +338,7 @@ set default_err_str "Unknown error in function delete_directory" set err_str $default_err_str - set cmd "rmdir $sharepath\r" + set cmd "rmdir $sharepath\r\n" send $cmd expect { "Access is denied." { @@ -198,7 +361,7 @@ set default_err_str "Unknown error in function create_share" set err_str $default_err_str - set cmd "net share $sharename=$sharepath /GRANT:$username,FULL\r" + set cmd "net share $sharename=$sharepath /GRANT:$username,FULL\r\n" send $cmd expect { "was shared successfully." { @@ -224,7 +387,7 @@ set default_err_str "Unknown error in function delete_share" set err_str $default_err_str - set cmd "net share $sharename /DELETE\r" + set cmd "net share $sharename /DELETE\r\n" send $cmd expect { "was deleted successfully." { @@ -250,7 +413,7 @@ set default_err_str "Unknown error in function delete_hosts_entry" set err_str $default_err_str - set cmd "cd $hosts_file_path\r" + set cmd "cd $hosts_file_path\r\n" send $cmd expect { "." { @@ -271,7 +434,7 @@ set err_str $default_err_str } - set cmd "move /Y $backup_hosts_filename hosts\r" + set cmd "move /Y $backup_hosts_filename hosts\r\n" send $cmd expect { "1 file(s) moved." { @@ -298,7 +461,7 @@ set default_err_str "Unknown error in function create_hosts_entry" set err_str $default_err_str - set cmd "cd $hosts_file_path\r" + set cmd "cd $hosts_file_path\r\n" send $cmd expect { "." { @@ -319,7 +482,7 @@ set err_str $default_err_str } - set cmd "copy /Y hosts $backup_hosts_filename\r" + set cmd "copy /Y hosts $backup_hosts_filename\r\n" send $cmd expect { "1 file(s) copied." { @@ -343,7 +506,7 @@ set err_str $default_err_str } - set cmd "echo $ip $hostname #smbtorture host. >> hosts\r" + set cmd "echo $ip $hostname #smbtorture host. >> hosts\r\n" send $cmd expect { $remote_prompt { Modified: branches/SOC/bnh/expect/wintest_remove.exp =================================================================== --- branches/SOC/bnh/expect/wintest_remove.exp 2006-08-21 03:52:43 UTC (rev 17648) +++ branches/SOC/bnh/expect/wintest_remove.exp 2006-08-21 04:05:13 UTC (rev 17649) @@ -61,9 +61,11 @@ if {$err_str != "OK"} { puts stderr "\nFunction remove_test failed." puts stderr "Error was: $err_str." + # Log off from the telnet server. + send "exit\r\n" exit 1 } # Log off from the telnet server. -send "exit\r" +send "exit\r\n" exit 0 Modified: branches/SOC/bnh/expect/wintest_setup.exp =================================================================== --- branches/SOC/bnh/expect/wintest_setup.exp 2006-08-21 03:52:43 UTC (rev 17648) +++ branches/SOC/bnh/expect/wintest_setup.exp 2006-08-21 04:05:13 UTC (rev 17649) @@ -10,7 +10,7 @@ set err_str [create_directory $remote_prompt $sharepath] if { $err_str != "OK" } { if { $err_str != "Directory already exists" } { - puts stderr "\nUnexpected error occured in setup_test." + puts stderr "\nUnexpected error occured in setup_test.\n" puts stderr "Function create_directory returned $err_str." } else { puts stdout "\nDirectory $sharepath exists." @@ -94,9 +94,11 @@ if {$err_str != "OK"} { puts stderr "\nFunction setup_test failed during setup." puts stderr "Error was: $err_str." + # Log off from the telnet server. + send "exit\r\n" exit 1 } # Log off from the telnet server. -send "exit\r" +send "exit\r\n" exit 0