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