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)