mirror of https://github.com/jackc/pgx.git
Introduce testVariants in prep for TLS
parent
ecebd7b103
commit
5b64432afb
|
@ -9,7 +9,7 @@ import (
|
|||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestWriteIsBuffered(t *testing.T) {
|
||||
func testVariants(t *testing.T, f func(t *testing.T, local *nbconn.Conn, remote net.Conn)) {
|
||||
local, remote := net.Pipe()
|
||||
defer func() {
|
||||
local.Close()
|
||||
|
@ -17,7 +17,11 @@ func TestWriteIsBuffered(t *testing.T) {
|
|||
}()
|
||||
|
||||
conn := nbconn.New(local)
|
||||
f(t, conn, remote)
|
||||
}
|
||||
|
||||
func TestWriteIsBuffered(t *testing.T) {
|
||||
testVariants(t, func(t *testing.T, conn *nbconn.Conn, remote net.Conn) {
|
||||
// net.Pipe is synchronous so the Write would block if not buffered.
|
||||
writeBuf := []byte("test")
|
||||
n, err := conn.Write(writeBuf)
|
||||
|
@ -35,17 +39,11 @@ func TestWriteIsBuffered(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
|
||||
require.NoError(t, <-errChan)
|
||||
})
|
||||
}
|
||||
|
||||
func TestReadFlushesWriteBuffer(t *testing.T) {
|
||||
local, remote := net.Pipe()
|
||||
defer func() {
|
||||
local.Close()
|
||||
remote.Close()
|
||||
}()
|
||||
|
||||
conn := nbconn.New(local)
|
||||
|
||||
testVariants(t, func(t *testing.T, conn *nbconn.Conn, remote net.Conn) {
|
||||
writeBuf := []byte("test")
|
||||
n, err := conn.Write(writeBuf)
|
||||
require.NoError(t, err)
|
||||
|
@ -68,17 +66,11 @@ func TestReadFlushesWriteBuffer(t *testing.T) {
|
|||
|
||||
require.NoError(t, <-errChan)
|
||||
require.NoError(t, <-errChan)
|
||||
})
|
||||
}
|
||||
|
||||
func TestCloseFlushesWriteBuffer(t *testing.T) {
|
||||
local, remote := net.Pipe()
|
||||
defer func() {
|
||||
local.Close()
|
||||
remote.Close()
|
||||
}()
|
||||
|
||||
conn := nbconn.New(local)
|
||||
|
||||
testVariants(t, func(t *testing.T, conn *nbconn.Conn, remote net.Conn) {
|
||||
writeBuf := []byte("test")
|
||||
n, err := conn.Write(writeBuf)
|
||||
require.NoError(t, err)
|
||||
|
@ -95,17 +87,11 @@ func TestCloseFlushesWriteBuffer(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
|
||||
require.NoError(t, <-errChan)
|
||||
})
|
||||
}
|
||||
|
||||
func TestNonBlockingRead(t *testing.T) {
|
||||
local, remote := net.Pipe()
|
||||
defer func() {
|
||||
local.Close()
|
||||
remote.Close()
|
||||
}()
|
||||
|
||||
conn := nbconn.New(local)
|
||||
|
||||
testVariants(t, func(t *testing.T, conn *nbconn.Conn, remote net.Conn) {
|
||||
err := conn.SetReadDeadline(nbconn.NonBlockingDeadline)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -126,14 +112,11 @@ func TestNonBlockingRead(t *testing.T) {
|
|||
n, err = conn.Read(buf)
|
||||
require.NoError(t, err)
|
||||
require.EqualValues(t, 4, n)
|
||||
})
|
||||
}
|
||||
|
||||
func TestReadPreviouslyBuffered(t *testing.T) {
|
||||
local, remote := net.Pipe()
|
||||
defer func() {
|
||||
local.Close()
|
||||
remote.Close()
|
||||
}()
|
||||
testVariants(t, func(t *testing.T, conn *nbconn.Conn, remote net.Conn) {
|
||||
|
||||
errChan := make(chan error, 1)
|
||||
go func() {
|
||||
|
@ -154,8 +137,6 @@ func TestReadPreviouslyBuffered(t *testing.T) {
|
|||
errChan <- err
|
||||
}()
|
||||
|
||||
conn := nbconn.New(local)
|
||||
|
||||
_, err := conn.Write([]byte("test"))
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -168,14 +149,11 @@ func TestReadPreviouslyBuffered(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
require.EqualValues(t, 5, n)
|
||||
require.Equal(t, []byte("alpha"), readBuf)
|
||||
})
|
||||
}
|
||||
|
||||
func TestReadPreviouslyBufferedPartialRead(t *testing.T) {
|
||||
local, remote := net.Pipe()
|
||||
defer func() {
|
||||
local.Close()
|
||||
remote.Close()
|
||||
}()
|
||||
testVariants(t, func(t *testing.T, conn *nbconn.Conn, remote net.Conn) {
|
||||
|
||||
errChan := make(chan error, 1)
|
||||
go func() {
|
||||
|
@ -196,8 +174,6 @@ func TestReadPreviouslyBufferedPartialRead(t *testing.T) {
|
|||
errChan <- err
|
||||
}()
|
||||
|
||||
conn := nbconn.New(local)
|
||||
|
||||
_, err := conn.Write([]byte("test"))
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -216,15 +192,11 @@ func TestReadPreviouslyBufferedPartialRead(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
require.EqualValues(t, 3, n)
|
||||
require.Equal(t, []byte("pha"), readBuf)
|
||||
})
|
||||
}
|
||||
|
||||
func TestReadMultiplePreviouslyBuffered(t *testing.T) {
|
||||
local, remote := net.Pipe()
|
||||
defer func() {
|
||||
local.Close()
|
||||
remote.Close()
|
||||
}()
|
||||
|
||||
testVariants(t, func(t *testing.T, conn *nbconn.Conn, remote net.Conn) {
|
||||
errChan := make(chan error, 1)
|
||||
go func() {
|
||||
err := func() error {
|
||||
|
@ -249,8 +221,6 @@ func TestReadMultiplePreviouslyBuffered(t *testing.T) {
|
|||
errChan <- err
|
||||
}()
|
||||
|
||||
conn := nbconn.New(local)
|
||||
|
||||
_, err := conn.Write([]byte("test"))
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -263,14 +233,11 @@ func TestReadMultiplePreviouslyBuffered(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
require.EqualValues(t, 9, n)
|
||||
require.Equal(t, []byte("alphabeta"), readBuf)
|
||||
})
|
||||
}
|
||||
|
||||
func TestReadPreviouslyBufferedAndReadMore(t *testing.T) {
|
||||
local, remote := net.Pipe()
|
||||
defer func() {
|
||||
local.Close()
|
||||
remote.Close()
|
||||
}()
|
||||
testVariants(t, func(t *testing.T, conn *nbconn.Conn, remote net.Conn) {
|
||||
|
||||
flushCompleteChan := make(chan struct{})
|
||||
errChan := make(chan error, 1)
|
||||
|
@ -299,8 +266,6 @@ func TestReadPreviouslyBufferedAndReadMore(t *testing.T) {
|
|||
errChan <- err
|
||||
}()
|
||||
|
||||
conn := nbconn.New(local)
|
||||
|
||||
_, err := conn.Write([]byte("test"))
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -315,4 +280,5 @@ func TestReadPreviouslyBufferedAndReadMore(t *testing.T) {
|
|||
require.NoError(t, err)
|
||||
require.EqualValues(t, 9, n)
|
||||
require.Equal(t, []byte("alphabeta"), readBuf)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue