# xmit.test # # This file tests the dp_send/dp_recv commands and large packet # transmissions. # # Large datagram transmissions are somewhat of a black box. It's # hard to predict what any given OS or Tcl will do if you don't read the # entire input. NT hangs. HP-UX just truncates the datagram to the # Tcl buffer size. # # In the cases below, we are setting the Tcl buffer to 8192. The # actual sockets should have a buffer of 8192 also. We then send # and recv 10,000 bytes over the connection. # if {[string compare test [info procs test]] == 1} then {source ../tests/defs} set sock1 {} set sock2 {} set a 0123456789 set h $a$a$a$a$a$a$a$a$a$a set t $h$h$h$h$h$h$h$h$h$h set w $t$t$t$t$t$t$t$t # NOTE # w is now only 8,000 bytes long. I don't have time to debug it. # test xmit-1.1 {udp send/recv} { list [catch { set sock1 [dp_connect udp -host localhost -port 1999 -myport 2000] set sock2 [dp_connect udp -host localhost -port 2000 -myport 1999] dp_send $sock1 "Hey there!" dp_recv $sock2 } msg] $msg } {0 {Hey there!}} test xmit-1.2 {huge udp send/recv} { list [catch { fconfigure $sock1 -buffersize 8192 fconfigure $sock2 -buffersize 8192 puts $sock1 $w string compare [gets $sock2] $w } msg] $msg } {0 0} catch {close $sock1} catch {close $sock2} test xmit-1.3 {tcp send/recv} { list [catch { set server [dp_connect tcp -server 1 -myport 2906] set sock1 [dp_connect tcp -host localhost -port 2906 -async 1] after 200 set sock2 [lindex [dp_accept $server] 0] dp_send $sock1 "Hey there!" dp_recv $sock2 } msg] $msg } {0 {Hey there!}} test xmit-1.4 {huge tcp send/recv} { list [catch { fconfigure $sock1 -buffersize 8192 fconfigure $sock2 -buffersize 8192 puts $sock1 $w string compare [gets $sock2] $w } msg] $msg } {0 0} catch {close $server} catch {close $sock1} catch {close $sock2} # See ipm.test for why this is necessary # if {$ipm == 1} { test xmit-1.5 {ipm send/recv} { list [catch { set sock1 [dp_connect ipm -group 225.5.5.5 -myport 2000] dp_send $sock1 "Hey there!" dp_recv $sock1 } msg] $msg } {0 {Hey there!}} test xmit-1.6 {huge ipm send/recv} { list [catch { fconfigure $sock1 -buffersize 8192 puts $sock1 $w string compare [gets $sock1] $w } msg] $msg } {0 0} catch {close $sock1} catch {close $sock2} }