net: don't fail test if splice fails because pipe2 is missing
authorIan Lance Taylor <ian@gcc.gnu.org>
Tue, 2 Oct 2018 15:07:14 +0000 (15:07 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 2 Oct 2018 15:07:14 +0000 (15:07 +0000)
    This reportedly happens on CentOS 5.11.  The real code will work fine;
    this test is assuming that the unexported slice function will handle
    the splice, but if pipe2 does not work then it doesn't.  The relevant
    code in internal/poll/splice_linux.go says "Falling back to pipe is
    possible, but prior to 2.6.29 splice returns -EAGAIN instead of 0 when
    the connection is closed."

    Reviewed-on: https://go-review.googlesource.com/138838

From-SVN: r264793

gcc/go/gofrontend/MERGE
libgo/go/net/splice_test.go

index ad3253f4b85b4003dc20d648e8c0ffbad4bef573..b9528721ad3a49ae9cb13c7c5055088099cccc97 100644 (file)
@@ -1,4 +1,4 @@
-53d0d7ca278a5612fcdb5fb098e7bf950a0178ef
+098e36f4ddfcf50aeb34509b5f25b86d7050749c
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index 44a5c00ba872e825c22df97c801a5c9dd875be56..40ed19b8fa8f41b293dbd130b50a4d4387de8e70 100644 (file)
@@ -11,7 +11,9 @@ import (
        "fmt"
        "io"
        "io/ioutil"
+       "os"
        "sync"
+       "syscall"
        "testing"
 )
 
@@ -225,6 +227,10 @@ func testSpliceReaderAtEOF(t *testing.T) {
        serverUp.Close()
        _, err, handled := splice(serverDown.(*TCPConn).fd, serverUp)
        if !handled {
+               if serr, ok := err.(*os.SyscallError); ok && serr.Syscall == "pipe2" && serr.Err == syscall.ENOSYS {
+                       t.Skip("pipe2 not supported")
+               }
+
                t.Errorf("closed connection: got err = %v, handled = %t, want handled = true", err, handled)
        }
        lr := &io.LimitedReader{