All pastes #589916 Raw Edit

Untitled

public text v1 · immutable
#589916 ·published 2007-06-26 08:37 UTC
rendered paste body
==== socket-2.1 tcp connection FAILED
==== Contents of test case:

    file delete $path(script)
    set f [open $path(script) w]
    puts $f {
        set timer [after 10000 "set x timed_out"]
        set f [socket -server accept 0]
        proc accept {file addr port} {
            global x
            set x done
            close $file
        }
        puts ready
        puts [lindex [fconfigure $f -sockname] 2]
        vwait x
        after cancel $timer
        close $f
        puts $x
    }
    close $f
    set f [open "|[list [interpreter] $path(script)]" r]
    gets $f x
    gets $f listen
    if {[catch {socket 127.0.0.1 $listen} msg]} {
        set x $msg
    } else {
        lappend x [gets $f]
        close $msg
    }
    lappend x [gets $f]
    close $f
    set x

---- Result was:
couldn't open socket: connection refused timed_out
---- Result should have been (exact matching):
ready done {}
==== socket-2.1 FAILED


==== socket-2.2 tcp connection with client port specified FAILED
==== Contents of test case:

    file delete $path(script)
    set f [open $path(script) w]
    puts $f {
        set timer [after 10000 "set x timeout"]
        set f [socket -server accept 0]
        proc accept {file addr port} {
            global x
            puts "[gets $file] $port"
            close $file
            set x done
        }
        puts ready
        puts [lindex [fconfigure $f -sockname] 2]
        vwait x
        after cancel $timer
        close $f
    }
    close $f
    set f [open "|[list [interpreter] $path(script)]" r]
    gets $f x
    gets $f listen
    global port
    if {[catch {socket -myport $port 127.0.0.1 $listen} sock]} {
        set x $sock
        close [socket 127.0.0.1 $listen]
        puts stderr $sock
    } else {
        puts $sock hello
        flush $sock
        lappend x [gets $f]
        close $sock
    }
    close $f
    set x

---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- errorInfo: couldn't open socket: connection refused
    while executing
"socket 127.0.0.1 $listen"
    invoked from within
"if {[catch {socket -myport $port 127.0.0.1 $listen} sock]} {
        set x $sock
        close [socket 127.0.0.1 $listen]
        puts stderr $sock
    } else {
   ..."
    ("uplevel" body line 24)
    invoked from within
"uplevel 1 $script"
---- errorCode: POSIX ECONNREFUSED {connection refused}
==== socket-2.2 FAILED


==== socket-2.5 tcp connection with redundant server port FAILED
==== Contents of test case:

    file delete $path(script)
    set f [open $path(script) w]
    puts $f {
        set timer [after 10000 "set x timeout"]
        set f [socket -server accept 0]
        proc accept {file addr port} {
            global x
            puts "[gets $file]"
            close $file
            set x done
        }
        puts ready
        puts [lindex [fconfigure $f -sockname] 2]
        vwait x
        after cancel $timer
        close $f
    }
    close $f
    set f [open "|[list [interpreter] $path(script)]" r]
    gets $f x
    gets $f listen
    if {[catch {socket 127.0.0.1 $listen} sock]} {
        set x $sock
    } else {
        puts $sock hello
        flush $sock
        lappend x [gets $f]
        close $sock
    }
    close $f
    set x

---- Result was:
couldn't open socket: connection refused
---- Result should have been (exact matching):
ready hello
==== socket-2.5 FAILED


==== socket-2.7 echo server, one line FAILED
==== Contents of test case:

    file delete $path(script)
    set f [open $path(script) w]
    puts $f {
        set timer [after 10000 "set x timeout"]
        set f [socket -server accept 0]
        proc accept {s a p} {
            fileevent $s readable [list echo $s]
            fconfigure $s -translation lf -buffering line
        }
        proc echo {s} {
             set l [gets $s]
             if {[eof $s]} {
                 global x
                 close $s
                 set x done
             } else {
                 puts $s $l
             }
        }
        puts ready
        puts [lindex [fconfigure $f -sockname] 2]
        vwait x
        after cancel $timer
        close $f
        puts $x
    }
    close $f
    set f [open "|[list [interpreter] $path(script)]" r]
    gets $f
    gets $f listen
    set s [socket 127.0.0.1 $listen]
    fconfigure $s -buffering line -translation lf
    puts $s "hello abcdefghijklmnop"
    after 1000
    set x [gets $s]
    close $s
    set y [gets $f]
    close $f
    list $x $y

---- Test generated error; Return code was: 1
---- Return code should have been one of: 0 2
---- errorInfo: couldn't open socket: connection refused
    while executing
"socket 127.0.0.1 $listen"
    invoked from within
"set s [socket 127.0.0.1 $listen]"
    ("uplevel" body line 32)
    invoked from within
"uplevel 1 $script"
---- errorCode: POSIX ECONNREFUSED {connection refused}
==== socket-2.7 FAILED


==== socket-12.2 testing inheritance of client sockets FAILED
==== Contents of test case:

    file delete $path(script1)
    file delete $path(script2)

    # Script1 is just a 20 second delay.  If the server socket
    # is inherited, it will be held open for 10 seconds

    set f [open $path(script1) w]
    puts $f {
        after 20000 exit
        vwait forever
    }
    close $f

    # Script2 opens the client socket and writes to it.  It then
    # launches script1 and exits.  If the child process inherited the
    # client socket, the socket will still be open.

    set f [open $path(script2) w]
    puts $f [list set tcltest [interpreter]]
    puts -nonewline $f {
        gets stdin port
        set f [socket 127.0.0.1 $port]
        exec $tcltest }
    puts $f [list $path(script1) &]
    puts $f {
        puts $f testing
        flush $f
        after 1000 exit
        vwait forever
    }
    close $f

    # Create the server socket

    set server [socket -server accept 0]
    proc accept { file host port } {
        # When the client connects, establish the read handler
        global server
        close $server
        fileevent $file readable [list getdata $file]
        fconfigure $file -buffering line -blocking 0
        return
    }
    proc getdata { file } {
        # Read handler on the accepted socket.
        global x
        global failed
        set status [catch {read $file} data]
        if {$status != 0} {
            set x {read failed, error was $data}
            catch { close $file }
        } elseif {[string compare {} $data]} {
        } elseif {[fblocked $file]} {
        } elseif {[eof $file]} {
            if {$failed} {
                set x {client socket was inherited}
            } else {
                set x {client socket was not inherited}
            }
            catch { close $file }
        } else {
            set x {impossible case}
            catch { close $file }
        }
        return
    }

    # If the socket doesn't hit end-of-file in 10 seconds, the
    # script1 process must have inherited the client.

    set failed 0
    after 10000 [list set failed 1]

    # Launch the script2 process
    ### exec [interpreter] script2 &

    set p [open "|[list [interpreter] $path(script2)]" w]
    puts $p [lindex [fconfigure $server -sockname] 2] ; flush $p

    vwait x
    if {!$failed} {
        vwait failed
    }
    close $p
    set x

---- Result was:
client socket was inherited
---- Result should have been (exact matching):
client socket was not inherited
==== socket-12.2 FAILED