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/05/05 11:00:34 UTC

[plc4x] 02/03: fix(plc4go/spi): avoid test transport getting stuck on a endless loop when filling

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 6b8da79620d81a54dff7531c5ceddb14e6e219b3
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri May 5 12:20:17 2023 +0200

    fix(plc4go/spi): avoid test transport getting stuck on a endless loop when filling
---
 plc4go/internal/cbus/MessageCodec.go      |  2 +-
 plc4go/internal/cbus/MessageCodec_test.go | 14 +++++++-------
 plc4go/spi/transports/test/Transport.go   |  4 ++--
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/plc4go/internal/cbus/MessageCodec.go b/plc4go/internal/cbus/MessageCodec.go
index 53535522c6..1085eb8ca1 100644
--- a/plc4go/internal/cbus/MessageCodec.go
+++ b/plc4go/internal/cbus/MessageCodec.go
@@ -116,7 +116,7 @@ func (m *MessageCodec) Receive() (spi.Message, error) {
 				return true
 			}
 		}); err != nil {
-			return nil, errors.Wrap(err, "error filling buffer")
+			log.Debug().Err(err).Msg("Error filling buffer")
 		}
 	}
 	log.Trace().Msg("Buffer filled")
diff --git a/plc4go/internal/cbus/MessageCodec_test.go b/plc4go/internal/cbus/MessageCodec_test.go
index 3d403b9172..130d8957d0 100644
--- a/plc4go/internal/cbus/MessageCodec_test.go
+++ b/plc4go/internal/cbus/MessageCodec_test.go
@@ -120,7 +120,7 @@ func TestMessageCodec_Receive(t *testing.T) {
 				hashEncountered:               0,
 				currentlyReportedServerErrors: 0,
 			},
-			wantErr: assert.Error,
+			wantErr: assert.NoError,
 		},
 		{
 			name: "checksum error",
@@ -547,8 +547,8 @@ func TestMessageCodec_Receive_Delayed_Response(t *testing.T) {
 		var msg spi.Message
 		var err error
 		msg, err = codec.Receive()
-		// No data yet so this should error
-		assert.Error(t, err)
+		// No data yet so this should return no error and no data
+		assert.NoError(t, err)
 		assert.Nil(t, msg)
 		// Now we add a confirmation
 		transportInstance.FillReadBuffer([]byte("i."))
@@ -578,8 +578,8 @@ func TestMessageCodec_Receive_Delayed_Response(t *testing.T) {
 		var msg spi.Message
 		var err error
 		msg, err = codec.Receive()
-		// No data yet so this should error
-		assert.Error(t, err)
+		// No data yet so this should return no error and no data
+		assert.NoError(t, err)
 		assert.Nil(t, msg)
 		// Now we add a confirmation
 		transportInstance.FillReadBuffer([]byte("i."))
@@ -612,8 +612,8 @@ func TestMessageCodec_Receive_Delayed_Response(t *testing.T) {
 		var msg spi.Message
 		var err error
 		msg, err = codec.Receive()
-		// No data yet so this should error
-		assert.Error(t, err)
+		// No data yet so this should return no error and no data
+		assert.NoError(t, err)
 		assert.Nil(t, msg)
 		// Now we add a confirmation
 		transportInstance.FillReadBuffer([]byte("i."))
diff --git a/plc4go/spi/transports/test/Transport.go b/plc4go/spi/transports/test/Transport.go
index 63c776e6d8..995bd969dc 100644
--- a/plc4go/spi/transports/test/Transport.go
+++ b/plc4go/spi/transports/test/Transport.go
@@ -128,8 +128,8 @@ func (m *TransportInstance) FillBuffer(until func(pos uint, currentByte byte, re
 }
 
 func (m *TransportInstance) PeekReadableBytes(numBytes uint32) ([]byte, error) {
-	log.Trace().Msgf("Peek %d readable bytes", numBytes)
 	availableBytes := uint32(math.Min(float64(numBytes), float64(len(m.readBuffer))))
+	log.Trace().Msgf("Peek %d readable bytes (%d available bytes)", numBytes, availableBytes)
 	var err error
 	if availableBytes != numBytes {
 		err = errors.New("not enough bytes available")
@@ -137,7 +137,7 @@ func (m *TransportInstance) PeekReadableBytes(numBytes uint32) ([]byte, error) {
 	if availableBytes == 0 {
 		return nil, err
 	}
-	return m.readBuffer[0:availableBytes], nil
+	return m.readBuffer[0:availableBytes], err
 }
 
 func (m *TransportInstance) Read(numBytes uint32) ([]byte, error) {