Files
go-honeybee/initiatorpool/helper_test.go

63 lines
1.4 KiB
Go

package initiatorpool
import (
"fmt"
"git.wisehodl.dev/jay/go-honeybee/honeybeetest"
"git.wisehodl.dev/jay/go-honeybee/transport"
"github.com/stretchr/testify/assert"
"io"
"testing"
)
func setupWorkerTestConnection(t *testing.T) (
conn *transport.Connection,
mockSocket *honeybeetest.MockSocket,
incomingData chan honeybeetest.MockIncomingData,
outgoingData chan honeybeetest.MockOutgoingData,
) {
t.Helper()
incomingData = make(chan honeybeetest.MockIncomingData, 100)
outgoingData = make(chan honeybeetest.MockOutgoingData, 100)
mockSocket = honeybeetest.NewMockSocket()
mockSocket.CloseFunc = func() error {
mockSocket.Once.Do(func() { close(mockSocket.Closed) })
return nil
}
mockSocket.ReadMessageFunc = func() (int, []byte, error) {
select {
case data := <-incomingData:
return data.MsgType, data.Data, data.Err
case <-mockSocket.Closed:
return 0, nil, io.EOF
}
}
mockSocket.WriteMessageFunc = func(msgType int, data []byte) error {
select {
case outgoingData <- honeybeetest.MockOutgoingData{MsgType: msgType, Data: data}:
return nil
case <-mockSocket.Closed:
return io.EOF
default:
return fmt.Errorf("mock outgoing channel unavailable")
}
}
var err error
conn, err = transport.NewConnectionFromSocket(mockSocket, nil, nil)
assert.NoError(t, err)
return
}
func connClosed(conn *transport.Connection) bool {
select {
case _, ok := <-conn.Errors():
return !ok
default:
return false
}
}