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/07/12 09:15:42 UTC

[plc4x] branch develop updated: feat(plc4go/spi): add a uuid to expectations to better understand what is going on

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 3a5433de2e feat(plc4go/spi): add a uuid to expectations to better understand what is going on
3a5433de2e is described below

commit 3a5433de2ea93eb4c1b855ff2789dbb95e6183c2
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Wed Jul 12 11:15:35 2023 +0200

    feat(plc4go/spi): add a uuid to expectations to better understand what is going on
    
    + improved logs
---
 plc4go/go.mod                            |  1 +
 plc4go/go.sum                            |  1 +
 plc4go/spi/default/DefaultCodec.go       | 20 +++++++-------------
 plc4go/spi/default/DefaultCodec_test.go  | 25 +++++++++++++++++++++----
 plc4go/spi/default/defaultExpectation.go | 17 ++++++++++++++++-
 5 files changed, 46 insertions(+), 18 deletions(-)

diff --git a/plc4go/go.mod b/plc4go/go.mod
index a3a3158a1f..9b47e87d73 100644
--- a/plc4go/go.mod
+++ b/plc4go/go.mod
@@ -26,6 +26,7 @@ require (
 	github.com/ajankovic/xdiff v0.0.1
 	github.com/fatih/color v1.15.0
 	github.com/gdamore/tcell/v2 v2.6.0
+	github.com/google/uuid v1.1.2
 	github.com/gopacket/gopacket v1.1.1
 	github.com/icza/bitio v1.1.0
 	github.com/jacobsa/go-serial v0.0.0-20180131005756-15cf729a72d4
diff --git a/plc4go/go.sum b/plc4go/go.sum
index 45e849b971..c4029b17ab 100644
--- a/plc4go/go.sum
+++ b/plc4go/go.sum
@@ -127,6 +127,7 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe
 github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
+github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
diff --git a/plc4go/spi/default/DefaultCodec.go b/plc4go/spi/default/DefaultCodec.go
index 52a5d1d55e..626d346e1a 100644
--- a/plc4go/spi/default/DefaultCodec.go
+++ b/plc4go/spi/default/DefaultCodec.go
@@ -189,14 +189,7 @@ func (m *defaultCodec) IsRunning() bool {
 func (m *defaultCodec) Expect(ctx context.Context, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError, ttl time.Duration) error {
 	m.expectationsChangeMutex.Lock()
 	defer m.expectationsChangeMutex.Unlock()
-	expectation := &defaultExpectation{
-		Context:        ctx,
-		CreationTime:   time.Now(),
-		Expiration:     time.Now().Add(ttl),
-		AcceptsMessage: acceptsMessage,
-		HandleMessage:  handleMessage,
-		HandleError:    handleError,
-	}
+	expectation := newDefaultExpectation(ctx, ttl, acceptsMessage, handleMessage, handleError)
 	m.expectations = append(m.expectations, expectation)
 	return nil
 }
@@ -253,18 +246,19 @@ func (m *defaultCodec) HandleMessages(message spi.Message) bool {
 	m.log.Trace().Msgf("Current number of expectations: %d", len(m.expectations))
 	for i := 0; i < len(m.expectations); i++ {
 		expectation := m.expectations[i]
-		m.log.Trace().Msgf("Checking expectation %s", expectation)
+		expectationLog := m.log.With().Stringer("expectation", expectation).Logger()
+		expectationLog.Trace().Msgf("Checking expectation")
 		// Check if the current message matches the expectations
 		// If it does, let it handle the message.
 		if accepts := expectation.GetAcceptsMessage()(message); accepts {
-			m.log.Debug().Stringer("expectation", expectation).Msg("accepts message")
+			expectationLog.Debug().Msg("accepts message")
 			// TODO: decouple from worker thread
 			if err := expectation.GetHandleMessage()(message); err != nil {
-				m.log.Debug().Stringer("expectation", expectation).Err(err).Msg("errored handling the message")
+				expectationLog.Debug().Err(err).Msg("errored handling the message")
 				// Pass the error to the error handler.
 				// TODO: decouple from worker thread
 				if err := expectation.GetHandleError()(err); err != nil {
-					m.log.Error().Err(err).Msg("Got an error handling error on expectation")
+					expectationLog.Error().Err(err).Msg("Got an error handling error on expectation")
 				}
 				continue
 			}
@@ -278,7 +272,7 @@ func (m *defaultCodec) HandleMessages(message spi.Message) bool {
 				i--
 			}
 		} else {
-			m.log.Trace().Stringer("expectation", expectation).Msg("doesn't accept message")
+			expectationLog.Trace().Msg("doesn't accept message")
 		}
 	}
 	m.log.Trace().Msgf("handled message = %t", messageHandled)
diff --git a/plc4go/spi/default/DefaultCodec_test.go b/plc4go/spi/default/DefaultCodec_test.go
index a47f25e43c..81ae13d63e 100644
--- a/plc4go/spi/default/DefaultCodec_test.go
+++ b/plc4go/spi/default/DefaultCodec_test.go
@@ -22,18 +22,19 @@ package _default
 import (
 	"context"
 	"fmt"
-	"github.com/apache/plc4x/plc4go/spi/testutils"
-	"github.com/rs/zerolog/log"
 	"sync/atomic"
 	"testing"
 	"time"
 
 	"github.com/apache/plc4x/plc4go/spi"
 	"github.com/apache/plc4x/plc4go/spi/options"
+	"github.com/apache/plc4x/plc4go/spi/testutils"
 	"github.com/apache/plc4x/plc4go/spi/transports"
 	"github.com/apache/plc4x/plc4go/spi/transports/test"
-	"github.com/pkg/errors"
 
+	"github.com/google/uuid"
+	"github.com/pkg/errors"
+	"github.com/rs/zerolog/log"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
 )
@@ -220,7 +221,7 @@ func TestDefaultExpectation_String(t *testing.T) {
 	}{
 		{
 			name: "string it",
-			want: "Expectation(expires at 0001-01-01 00:00:00 +0000 UTC)",
+			want: "Expectation 00000000-0000-0000-0000-000000000000 (expires at 0001-01-01 00:00:00 +0000 UTC)",
 		},
 	}
 	for _, tt := range tests {
@@ -637,11 +638,13 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 			fields: fields{
 				expectations: []spi.Expectation{
 					&defaultExpectation{ // doesn't accept
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return false
 						},
 					},
 					&defaultExpectation{ // accepts but fails
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -653,6 +656,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // accepts but fails and fails to handle the error
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -664,6 +668,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // accepts
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -672,6 +677,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // accepts
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -680,6 +686,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // accepts
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -688,6 +695,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // not accept
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return false
 						},
@@ -696,6 +704,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // accepts
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -726,11 +735,13 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 				})
 				fields.expectations = []spi.Expectation{
 					&defaultExpectation{ // doesn't accept
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return false
 						},
 					},
 					&defaultExpectation{ // accepts but fails // accept1
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -743,6 +754,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // accepts but fails and fails to handle the error // accept2
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -755,6 +767,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // accepts // accept3
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -764,6 +777,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // accepts // accept4
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -773,6 +787,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // not accept // accept5
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
@@ -782,6 +797,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // not accept
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return false
 						},
@@ -790,6 +806,7 @@ func Test_defaultCodec_HandleMessages(t *testing.T) {
 						},
 					},
 					&defaultExpectation{ // accepts // accept6
+						uuid: uuid.New(),
 						AcceptsMessage: func(_ spi.Message) bool {
 							return true
 						},
diff --git a/plc4go/spi/default/defaultExpectation.go b/plc4go/spi/default/defaultExpectation.go
index fe11e0e081..1407e3a172 100644
--- a/plc4go/spi/default/defaultExpectation.go
+++ b/plc4go/spi/default/defaultExpectation.go
@@ -25,9 +25,12 @@ import (
 	"time"
 
 	"github.com/apache/plc4x/plc4go/spi"
+
+	"github.com/google/uuid"
 )
 
 type defaultExpectation struct {
+	uuid           uuid.UUID
 	Context        context.Context
 	CreationTime   time.Time
 	Expiration     time.Time
@@ -36,6 +39,18 @@ type defaultExpectation struct {
 	HandleError    spi.HandleError
 }
 
+func newDefaultExpectation(ctx context.Context, ttl time.Duration, acceptsMessage spi.AcceptsMessage, handleMessage spi.HandleMessage, handleError spi.HandleError) *defaultExpectation {
+	return &defaultExpectation{
+		uuid:           uuid.New(),
+		Context:        ctx,
+		CreationTime:   time.Now(),
+		Expiration:     time.Now().Add(ttl),
+		AcceptsMessage: acceptsMessage,
+		HandleMessage:  handleMessage,
+		HandleError:    handleError,
+	}
+}
+
 func (d *defaultExpectation) GetContext() context.Context {
 	return d.Context
 }
@@ -61,5 +76,5 @@ func (d *defaultExpectation) GetHandleError() spi.HandleError {
 }
 
 func (d *defaultExpectation) String() string {
-	return fmt.Sprintf("Expectation(expires at %v)", d.Expiration)
+	return fmt.Sprintf("Expectation %s (expires at %v)", d.uuid, d.Expiration)
 }