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/04/11 08:09:31 UTC

[plc4x] 05/07: refactor(plc4go/test): simplify test TransportInstance signature

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

commit 1ad4fc756f281f96d6bf42244344224be7ff7e01
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Apr 6 15:39:17 2023 +0200

    refactor(plc4go/test): simplify test TransportInstance signature
---
 plc4go/internal/cbus/MessageCodec_test.go | 53 ++++++++-----------------------
 plc4go/spi/default/DefaultCodec.go        |  1 +
 plc4go/spi/testutils/DriverTestRunner.go  | 26 ++++-----------
 plc4go/spi/transports/test/Transport.go   |  7 ++--
 4 files changed, 24 insertions(+), 63 deletions(-)

diff --git a/plc4go/internal/cbus/MessageCodec_test.go b/plc4go/internal/cbus/MessageCodec_test.go
index dcec75f184..99e0b9a22b 100644
--- a/plc4go/internal/cbus/MessageCodec_test.go
+++ b/plc4go/internal/cbus/MessageCodec_test.go
@@ -128,10 +128,7 @@ func TestMessageCodec_Receive(t *testing.T) {
 				DefaultCodec: NewMessageCodec(func() transports.TransportInstance {
 					transport := test.NewTransport()
 					transportInstance := test.NewTransportInstance(transport)
-					if err := transportInstance.FillReadBuffer([]byte("!")); err != nil {
-						t.Error(err)
-						return nil
-					}
+					transportInstance.FillReadBuffer([]byte("!"))
 					return transportInstance
 				}()),
 				requestContext:                requestContext,
@@ -156,10 +153,7 @@ func TestMessageCodec_Receive(t *testing.T) {
 				DefaultCodec: NewMessageCodec(func() transports.TransportInstance {
 					transport := test.NewTransport()
 					transportInstance := test.NewTransportInstance(transport)
-					if err := transportInstance.FillReadBuffer([]byte("@A62120\r@A62120\r")); err != nil {
-						t.Error(err)
-						return nil
-					}
+					transportInstance.FillReadBuffer([]byte("@A62120\r@A62120\r"))
 					return transportInstance
 				}()),
 				requestContext:                requestContext,
@@ -178,10 +172,7 @@ func TestMessageCodec_Receive(t *testing.T) {
 				DefaultCodec: NewMessageCodec(func() transports.TransportInstance {
 					transport := test.NewTransport()
 					transportInstance := test.NewTransportInstance(transport)
-					if err := transportInstance.FillReadBuffer([]byte("what on earth\n\r")); err != nil {
-						t.Error(err)
-						return nil
-					}
+					transportInstance.FillReadBuffer([]byte("what on earth\n\r"))
 					return transportInstance
 				}()),
 				requestContext:                requestContext,
@@ -200,10 +191,7 @@ func TestMessageCodec_Receive(t *testing.T) {
 				DefaultCodec: NewMessageCodec(func() transports.TransportInstance {
 					transport := test.NewTransport()
 					transportInstance := test.NewTransportInstance(transport)
-					if err := transportInstance.FillReadBuffer([]byte("AFFE!!!\r")); err != nil {
-						t.Error(err)
-						return nil
-					}
+					transportInstance.FillReadBuffer([]byte("AFFE!!!\r"))
 					return transportInstance
 				}()),
 				requestContext:                requestContext,
@@ -228,10 +216,7 @@ func TestMessageCodec_Receive(t *testing.T) {
 				DefaultCodec: NewMessageCodec(func() transports.TransportInstance {
 					transport := test.NewTransport()
 					transportInstance := test.NewTransportInstance(transport)
-					if err := transportInstance.FillReadBuffer([]byte("@1A2001!!!\r")); err != nil {
-						t.Error(err)
-						return nil
-					}
+					transportInstance.FillReadBuffer([]byte("@1A2001!!!\r"))
 					return transportInstance
 				}()),
 				requestContext:                requestContext,
@@ -269,10 +254,7 @@ func TestMessageCodec_Receive(t *testing.T) {
 				DefaultCodec: NewMessageCodec(func() transports.TransportInstance {
 					transport := test.NewTransport()
 					transportInstance := test.NewTransportInstance(transport)
-					if err := transportInstance.FillReadBuffer([]byte("86040200F940380001000000000000000008000000000000000000000000FA\r\n")); err != nil {
-						t.Error(err)
-						return nil
-					}
+					transportInstance.FillReadBuffer([]byte("86040200F940380001000000000000000008000000000000000000000000FA\r\n"))
 					return transportInstance
 				}()),
 				requestContext:                requestContext,
@@ -468,10 +450,7 @@ func TestMessageCodec_Receive(t *testing.T) {
 				DefaultCodec: NewMessageCodec(func() transports.TransportInstance {
 					transport := test.NewTransport()
 					transportInstance := test.NewTransportInstance(transport)
-					if err := transportInstance.FillReadBuffer([]byte("0531AC0079042F0401430316000011\r\n")); err != nil {
-						t.Error(err)
-						return nil
-					}
+					transportInstance.FillReadBuffer([]byte("0531AC0079042F0401430316000011\r\n"))
 					return transportInstance
 				}()),
 				requestContext:                requestContext,
@@ -572,8 +551,7 @@ func TestMessageCodec_Receive_Delayed_Response(t *testing.T) {
 		assert.Error(t, err)
 		assert.Nil(t, msg)
 		// Now we add a confirmation
-		err = transportInstance.FillReadBuffer([]byte("i."))
-		assert.NoError(t, err)
+		transportInstance.FillReadBuffer([]byte("i."))
 
 		// We should wait for more data, so no error, no message
 		msg, err = codec.Receive()
@@ -581,8 +559,7 @@ func TestMessageCodec_Receive_Delayed_Response(t *testing.T) {
 		assert.Nil(t, msg)
 
 		// Now we fill in the payload
-		err = transportInstance.FillReadBuffer([]byte("86FD0201078900434C495053414C20C2\r\n"))
-		assert.NoError(t, err)
+		transportInstance.FillReadBuffer([]byte("86FD0201078900434C495053414C20C2\r\n"))
 
 		// We should wait for more data, so no error, no message
 		msg, err = codec.Receive()
@@ -605,8 +582,7 @@ func TestMessageCodec_Receive_Delayed_Response(t *testing.T) {
 		assert.Error(t, err)
 		assert.Nil(t, msg)
 		// Now we add a confirmation
-		err = transportInstance.FillReadBuffer([]byte("i."))
-		assert.NoError(t, err)
+		transportInstance.FillReadBuffer([]byte("i."))
 
 		for i := 0; i < 8; i++ {
 			t.Logf("%d try", i+1)
@@ -617,8 +593,7 @@ func TestMessageCodec_Receive_Delayed_Response(t *testing.T) {
 		}
 
 		// Now we fill in the payload
-		err = transportInstance.FillReadBuffer([]byte("86FD0201078900434C495053414C20C2\r\n"))
-		assert.NoError(t, err)
+		transportInstance.FillReadBuffer([]byte("86FD0201078900434C495053414C20C2\r\n"))
 
 		// We should wait for more data, so no error, no message
 		msg, err = codec.Receive()
@@ -641,8 +616,7 @@ func TestMessageCodec_Receive_Delayed_Response(t *testing.T) {
 		assert.Error(t, err)
 		assert.Nil(t, msg)
 		// Now we add a confirmation
-		err = transportInstance.FillReadBuffer([]byte("i."))
-		assert.NoError(t, err)
+		transportInstance.FillReadBuffer([]byte("i."))
 
 		for i := 0; i < 16; i++ {
 			t.Logf("%d try", i+1)
@@ -663,8 +637,7 @@ func TestMessageCodec_Receive_Delayed_Response(t *testing.T) {
 		}
 
 		// Now we fill in the payload
-		err = transportInstance.FillReadBuffer([]byte("86FD0201078900434C495053414C20C2\r\n"))
-		assert.NoError(t, err)
+		transportInstance.FillReadBuffer([]byte("86FD0201078900434C495053414C20C2\r\n"))
 
 		// We should wait for more data, so no error, no message
 		msg, err = codec.Receive()
diff --git a/plc4go/spi/default/DefaultCodec.go b/plc4go/spi/default/DefaultCodec.go
index ec70c0ef9a..c564aedd3e 100644
--- a/plc4go/spi/default/DefaultCodec.go
+++ b/plc4go/spi/default/DefaultCodec.go
@@ -227,6 +227,7 @@ func (m *defaultCodec) TimeoutExpectations(now time.Time) {
 
 func (m *defaultCodec) HandleMessages(message spi.Message) bool {
 	messageHandled := false
+	log.Trace().Msgf("Current number of expectations: %d", len(m.expectations))
 	for index, expectation := range m.expectations {
 		// Check if the current message matches the expectations
 		// If it does, let it handle the message.
diff --git a/plc4go/spi/testutils/DriverTestRunner.go b/plc4go/spi/testutils/DriverTestRunner.go
index 9ee445e7cc..e854ec9465 100644
--- a/plc4go/spi/testutils/DriverTestRunner.go
+++ b/plc4go/spi/testutils/DriverTestRunner.go
@@ -78,9 +78,9 @@ func WithRootTypeParser(rootTypeParser func(utils.ReadBufferByteBased) (interfac
 
 type TestTransportInstance interface {
 	transports.TransportInstance
-	FillReadBuffer(data []uint8) error
+	FillReadBuffer(data []byte)
 	GetNumDrainableBytes() uint32
-	DrainWriteBuffer(numBytes uint32) ([]uint8, error)
+	DrainWriteBuffer(numBytes uint32) []byte
 }
 
 type withRootTypeParser struct {
@@ -305,19 +305,16 @@ func (m DriverTestsuite) ExecuteStep(connection plc4go.PlcConnection, testcase *
 		for testTransportInstance.GetNumDrainableBytes() < expectedRawOutputLength {
 			if time.Now().Sub(now) > 2*time.Second {
 				drainableBytes := testTransportInstance.GetNumDrainableBytes()
-				actualRawOutput, _ := testTransportInstance.DrainWriteBuffer(drainableBytes)
+				actualRawOutput := testTransportInstance.DrainWriteBuffer(drainableBytes)
 				return errors.Errorf("error getting bytes from transport. Not enough data available: actual(%d)<expected(%d), \nactual:   0x%X\nexpected: 0x%X\nHexdumps:\n%s",
 					drainableBytes, expectedRawOutputLength, actualRawOutput, expectedRawOutput, utils.DiffHex(expectedRawOutput, actualRawOutput))
 			}
 			time.Sleep(2 * time.Millisecond)
 		}
-		actualRawOutput, err := testTransportInstance.DrainWriteBuffer(expectedRawOutputLength)
+		actualRawOutput := testTransportInstance.DrainWriteBuffer(expectedRawOutputLength)
 		if testTransportInstance.GetNumDrainableBytes() != 0 {
 			//panic(fmt.Sprintf("leftover drainable bytes (%d)", testTransportInstance.GetNumDrainableBytes()))
 		}
-		if err != nil {
-			return errors.Wrap(err, "error getting bytes from transport")
-		}
 
 		var bufferFactory func([]byte, ...utils.ReadBufferByteBasedOptions) utils.ReadBufferByteBased
 		if m.byteOrder == binary.BigEndian {
@@ -347,10 +344,7 @@ func (m DriverTestsuite) ExecuteStep(connection plc4go.PlcConnection, testcase *
 		if err != nil {
 			return errors.Wrap(err, "error decoding hex-encoded byte data")
 		}
-		rawInput, err := testTransportInstance.DrainWriteBuffer(uint32(len(expectedRawInput)))
-		if err != nil {
-			return errors.Wrap(err, "error getting bytes from transport")
-		}
+		rawInput := testTransportInstance.DrainWriteBuffer(uint32(len(expectedRawInput)))
 
 		// Compare the bytes read with the ones we expect
 		log.Trace().Msg("Comparing bytes")
@@ -390,10 +384,7 @@ func (m DriverTestsuite) ExecuteStep(connection plc4go.PlcConnection, testcase *
 
 		// Send these bytes to the transport
 		log.Trace().Msg("Writing to transport")
-		err = testTransportInstance.FillReadBuffer(wb.GetBytes())
-		if err != nil {
-			return errors.Wrap(err, "error writing data to transport")
-		}
+		testTransportInstance.FillReadBuffer(wb.GetBytes())
 	case StepTypeIncomingPlcBytes:
 		// Get the raw hex-data.
 		log.Trace().Msg("Get hex data")
@@ -404,10 +395,7 @@ func (m DriverTestsuite) ExecuteStep(connection plc4go.PlcConnection, testcase *
 
 		// Send these bytes to the transport
 		log.Trace().Msg("Writing bytes to transport")
-		err = testTransportInstance.FillReadBuffer(rawInput)
-		if err != nil {
-			return errors.Wrap(err, "error writing data to transport")
-		}
+		testTransportInstance.FillReadBuffer(rawInput)
 	case StepTypeDelay:
 		// Get the number of milliseconds
 		log.Trace().Msg("Getting millis")
diff --git a/plc4go/spi/transports/test/Transport.go b/plc4go/spi/transports/test/Transport.go
index 070c1e0d18..cb211a235e 100644
--- a/plc4go/spi/transports/test/Transport.go
+++ b/plc4go/spi/transports/test/Transport.go
@@ -149,10 +149,9 @@ func (m *TransportInstance) Write(data []uint8) error {
 	return nil
 }
 
-func (m *TransportInstance) FillReadBuffer(data []uint8) error {
+func (m *TransportInstance) FillReadBuffer(data []byte) {
 	log.Trace().Msgf("FillReadBuffer with 0x%x", data)
 	m.readBuffer = append(m.readBuffer, data...)
-	return nil
 }
 
 func (m *TransportInstance) GetNumDrainableBytes() uint32 {
@@ -160,11 +159,11 @@ func (m *TransportInstance) GetNumDrainableBytes() uint32 {
 	return uint32(len(m.writeBuffer))
 }
 
-func (m *TransportInstance) DrainWriteBuffer(numBytes uint32) ([]uint8, error) {
+func (m *TransportInstance) DrainWriteBuffer(numBytes uint32) []byte {
 	log.Trace().Msgf("Drain write buffer with number of bytes %d", numBytes)
 	data := m.writeBuffer[0:int(numBytes)]
 	m.writeBuffer = m.writeBuffer[int(numBytes):]
-	return data, nil
+	return data
 }
 
 func (m *TransportInstance) String() string {