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)
}