You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2023/06/20 06:13:08 UTC
[plc4x] branch develop updated: test(plc4go/spi): fix tcp.TestInstance test
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new 7bbb42fd92 test(plc4go/spi): fix tcp.TestInstance test
7bbb42fd92 is described below
commit 7bbb42fd9275092ad62092554e58e7752d1d0cca
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Tue Jun 20 08:13:02 2023 +0200
test(plc4go/spi): fix tcp.TestInstance test
---
.../spi/transports/tcp/TransportInstance_test.go | 101 ++++++++++++++-------
1 file changed, 69 insertions(+), 32 deletions(-)
diff --git a/plc4go/spi/transports/tcp/TransportInstance_test.go b/plc4go/spi/transports/tcp/TransportInstance_test.go
index 64149d8220..3912714125 100644
--- a/plc4go/spi/transports/tcp/TransportInstance_test.go
+++ b/plc4go/spi/transports/tcp/TransportInstance_test.go
@@ -20,11 +20,11 @@
package tcp
import (
+ "bufio"
"context"
"net"
"testing"
- "github.com/apache/plc4x/plc4go/spi/transports"
transportUtils "github.com/apache/plc4x/plc4go/spi/transports/utils"
"github.com/stretchr/testify/assert"
@@ -69,44 +69,50 @@ func TestTransportInstance_Close(t *testing.T) {
ConnectTimeout uint32
transport *Transport
tcpConn net.Conn
- reader transports.ExtendedReader
+ reader *bufio.Reader
}
tests := []struct {
name string
fields fields
- manipulator func(t *testing.T, ti *TransportInstance)
+ manipulator func(t *testing.T, instance *TransportInstance)
wantErr bool
}{
{
- name: "close it (no conn)",
+ name: "close it (not connected)",
},
{
name: "close it (broken connection)",
- manipulator: func(t *testing.T, ti *TransportInstance) {
- var tcpConn net.Conn = &net.TCPConn{}
- ti.tcpConn.Store(&tcpConn)
+ fields: fields{
+ tcpConn: &net.TCPConn{},
+ },
+ manipulator: func(t *testing.T, instance *TransportInstance) {
+ instance.connected.Store(true)
},
wantErr: true,
},
{
name: "close it",
- manipulator: func(t *testing.T, ti *TransportInstance) {
- listener, err := nettest.NewLocalListener("tcp")
- require.NoError(t, err)
- t.Cleanup(func() {
- assert.NoError(t, listener.Close())
- })
- go func() {
- _, _ = listener.Accept()
- }()
- tcp, err := net.DialTCP("tcp", nil, listener.Addr().(*net.TCPAddr))
- require.NoError(t, err)
- t.Cleanup(func() {
- // As we already closed the connection with the whole method this should error
- assert.Error(t, tcp.Close())
- })
- var tcpConn net.Conn = tcp
- ti.tcpConn.Store(&tcpConn)
+ fields: fields{
+ tcpConn: func() *net.TCPConn {
+ listener, err := nettest.NewLocalListener("tcp")
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ assert.NoError(t, listener.Close())
+ })
+ go func() {
+ _, _ = listener.Accept()
+ }()
+ tcp, err := net.DialTCP("tcp", nil, listener.Addr().(*net.TCPAddr))
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ // As we already closed the connection with the whole method this should error
+ assert.Error(t, tcp.Close())
+ })
+ return tcp
+ }(),
+ },
+ manipulator: func(t *testing.T, instance *TransportInstance) {
+ instance.connected.Store(true)
},
},
}
@@ -118,6 +124,8 @@ func TestTransportInstance_Close(t *testing.T) {
LocalAddress: tt.fields.LocalAddress,
ConnectTimeout: tt.fields.ConnectTimeout,
transport: tt.fields.transport,
+ tcpConn: tt.fields.tcpConn,
+ reader: tt.fields.reader,
}
if tt.manipulator != nil {
tt.manipulator(t, m)
@@ -136,6 +144,8 @@ func TestTransportInstance_Connect(t *testing.T) {
LocalAddress *net.TCPAddr
ConnectTimeout uint32
transport *Transport
+ tcpConn net.Conn
+ reader *bufio.Reader
}
tests := []struct {
name string
@@ -155,6 +165,8 @@ func TestTransportInstance_Connect(t *testing.T) {
LocalAddress: tt.fields.LocalAddress,
ConnectTimeout: tt.fields.ConnectTimeout,
transport: tt.fields.transport,
+ tcpConn: tt.fields.tcpConn,
+ reader: tt.fields.reader,
}
if err := m.Connect(); (err != nil) != tt.wantErr {
t.Errorf("Connect() error = %v, wantErr %v", err, tt.wantErr)
@@ -170,6 +182,8 @@ func TestTransportInstance_ConnectWithContext(t *testing.T) {
LocalAddress *net.TCPAddr
ConnectTimeout uint32
transport *Transport
+ tcpConn net.Conn
+ reader *bufio.Reader
}
type args struct {
ctx context.Context
@@ -214,6 +228,8 @@ func TestTransportInstance_ConnectWithContext(t *testing.T) {
LocalAddress: tt.fields.LocalAddress,
ConnectTimeout: tt.fields.ConnectTimeout,
transport: tt.fields.transport,
+ tcpConn: tt.fields.tcpConn,
+ reader: tt.fields.reader,
}
if err := m.ConnectWithContext(tt.args.ctx); (err != nil) != tt.wantErr {
t.Errorf("ConnectWithContext() error = %v, wantErr %v", err, tt.wantErr)
@@ -229,11 +245,13 @@ func TestTransportInstance_GetReader(t *testing.T) {
LocalAddress *net.TCPAddr
ConnectTimeout uint32
transport *Transport
+ tcpConn net.Conn
+ reader *bufio.Reader
}
tests := []struct {
name string
fields fields
- want transports.ExtendedReader
+ want *bufio.Reader
}{
{
name: "get it",
@@ -247,6 +265,8 @@ func TestTransportInstance_GetReader(t *testing.T) {
LocalAddress: tt.fields.LocalAddress,
ConnectTimeout: tt.fields.ConnectTimeout,
transport: tt.fields.transport,
+ tcpConn: tt.fields.tcpConn,
+ reader: tt.fields.reader,
}
if got := m.GetReader(); !assert.Equal(t, tt.want, got) {
t.Errorf("GetReader() = %v, want %v", got, tt.want)
@@ -262,6 +282,8 @@ func TestTransportInstance_IsConnected(t *testing.T) {
LocalAddress *net.TCPAddr
ConnectTimeout uint32
transport *Transport
+ tcpConn net.Conn
+ reader *bufio.Reader
}
tests := []struct {
name string
@@ -280,6 +302,8 @@ func TestTransportInstance_IsConnected(t *testing.T) {
LocalAddress: tt.fields.LocalAddress,
ConnectTimeout: tt.fields.ConnectTimeout,
transport: tt.fields.transport,
+ tcpConn: tt.fields.tcpConn,
+ reader: tt.fields.reader,
}
if got := m.IsConnected(); got != tt.want {
t.Errorf("IsConnected() = %v, want %v", got, tt.want)
@@ -295,6 +319,8 @@ func TestTransportInstance_String(t *testing.T) {
LocalAddress *net.TCPAddr
ConnectTimeout uint32
transport *Transport
+ tcpConn net.Conn
+ reader *bufio.Reader
}
tests := []struct {
name string
@@ -322,6 +348,8 @@ func TestTransportInstance_String(t *testing.T) {
LocalAddress: tt.fields.LocalAddress,
ConnectTimeout: tt.fields.ConnectTimeout,
transport: tt.fields.transport,
+ tcpConn: tt.fields.tcpConn,
+ reader: tt.fields.reader,
}
if got := m.String(); got != tt.want {
t.Errorf("String() = %v, want %v", got, tt.want)
@@ -337,6 +365,8 @@ func TestTransportInstance_Write(t *testing.T) {
LocalAddress *net.TCPAddr
ConnectTimeout uint32
transport *Transport
+ tcpConn net.Conn
+ reader *bufio.Reader
}
type args struct {
data []byte
@@ -345,7 +375,8 @@ func TestTransportInstance_Write(t *testing.T) {
name string
fields fields
args args
- manipulator func(t *testing.T, ti *TransportInstance)
+ setup func(t *testing.T, fields *fields, args *args)
+ manipulator func(t *testing.T, instance *TransportInstance)
wantErr bool
}{
{
@@ -354,15 +385,14 @@ func TestTransportInstance_Write(t *testing.T) {
},
{
name: "write it (failing with con)",
- manipulator: func(t *testing.T, ti *TransportInstance) {
- var tcpConn net.Conn = &net.TCPConn{}
- ti.tcpConn.Store(&tcpConn)
+ fields: fields{
+ tcpConn: &net.TCPConn{},
},
wantErr: true,
},
{
name: "write it",
- manipulator: func(t *testing.T, ti *TransportInstance) {
+ setup: func(t *testing.T, fields *fields, args *args) {
listener, err := nettest.NewLocalListener("tcp")
require.NoError(t, err)
t.Cleanup(func() {
@@ -376,19 +406,26 @@ func TestTransportInstance_Write(t *testing.T) {
t.Cleanup(func() {
assert.NoError(t, tcp.Close())
})
- var tcpConn net.Conn = tcp
- ti.tcpConn.Store(&tcpConn)
+ fields.tcpConn = tcp
+ },
+ manipulator: func(t *testing.T, instance *TransportInstance) {
+ instance.connected.Store(true)
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
+ if tt.setup != nil {
+ tt.setup(t, &tt.fields, &tt.args)
+ }
m := &TransportInstance{
DefaultBufferedTransportInstance: tt.fields.DefaultBufferedTransportInstance,
RemoteAddress: tt.fields.RemoteAddress,
LocalAddress: tt.fields.LocalAddress,
ConnectTimeout: tt.fields.ConnectTimeout,
transport: tt.fields.transport,
+ tcpConn: tt.fields.tcpConn,
+ reader: tt.fields.reader,
}
if tt.manipulator != nil {
tt.manipulator(t, m)