Introduce testVariants in prep for TLS

non-blocking
Jack Christensen 2022-06-04 09:48:19 -05:00
parent ecebd7b103
commit 5b64432afb
1 changed files with 197 additions and 231 deletions

View File

@ -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)
})
}