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 8b3a1f149e fix(plc4go/bacnetip): hook up loggers correctly
8b3a1f149e is described below
commit 8b3a1f149e32f837f73f9577e3145474e016661d
Author: Sebastian Rühl <[email protected]>
AuthorDate: Thu Jul 2 09:27:27 2026 +0200
fix(plc4go/bacnetip): hook up loggers correctly
---
plc4go/internal/bacnetip/Connection.go | 1 +
plc4go/internal/bacnetip/Driver.go | 2 +-
plc4go/internal/bacnetip/ReadRoundtrip_test.go | 42 ++++++++++++++------------
3 files changed, 25 insertions(+), 20 deletions(-)
diff --git a/plc4go/internal/bacnetip/Connection.go
b/plc4go/internal/bacnetip/Connection.go
index d995a7d329..952b48b4a6 100644
--- a/plc4go/internal/bacnetip/Connection.go
+++ b/plc4go/internal/bacnetip/Connection.go
@@ -88,6 +88,7 @@ func NewConnection(messageCodec spi.MessageCodec, tagHandler
spi.PlcTagHandler,
connection.DefaultConnection = _default.NewDefaultConnection(connection,
_default.WithPlcTagHandler(tagHandler),
_default.WithPlcValueHandler(NewValueHandler()),
+ options.WithCustomLogger(customLogger),
)
return connection
}
diff --git a/plc4go/internal/bacnetip/Driver.go
b/plc4go/internal/bacnetip/Driver.go
index 312ddf9793..9c507f7f5f 100644
--- a/plc4go/internal/bacnetip/Driver.go
+++ b/plc4go/internal/bacnetip/Driver.go
@@ -57,7 +57,7 @@ func NewDriver(_options ...options.WithOption)
plc4go.PlcDriver {
customLogger :=
options.ExtractCustomLoggerOrDefaultToGlobal(_options...)
driver := &Driver{
discoverer: NewDiscoverer(_options...),
- tm:
transactions.NewRequestTransactionManager(math.MaxInt),
+ tm:
transactions.NewRequestTransactionManager(math.MaxInt,
options.WithCustomLogger(customLogger)),
awaitSetupComplete: true,
awaitDisconnectComplete: true,
diff --git a/plc4go/internal/bacnetip/ReadRoundtrip_test.go
b/plc4go/internal/bacnetip/ReadRoundtrip_test.go
index 28af60378d..870687893f 100644
--- a/plc4go/internal/bacnetip/ReadRoundtrip_test.go
+++ b/plc4go/internal/bacnetip/ReadRoundtrip_test.go
@@ -27,6 +27,7 @@ import (
"testing"
"time"
+ "github.com/apache/plc4x/plc4go/spi/testutils"
"github.com/rs/zerolog"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -48,6 +49,7 @@ type fakeBacnetDevice struct {
wg sync.WaitGroup
log zerolog.Logger
gotReqs int
+ ctx context.Context
mu sync.Mutex
}
@@ -56,7 +58,7 @@ func startFakeBacnetDevice(t *testing.T, log zerolog.Logger)
*fakeBacnetDevice {
addr := &net.UDPAddr{IP: net.IPv4(127, 0, 0, 1), Port: 0}
conn, err := net.ListenUDP("udp4", addr)
require.NoError(t, err)
- d := &fakeBacnetDevice{conn: conn, log: log}
+ d := &fakeBacnetDevice{conn: conn, log: log, ctx: t.Context()}
d.wg.Add(1)
go d.serve()
return d
@@ -106,7 +108,7 @@ func (d *fakeBacnetDevice) serve() {
}
func (d *fakeBacnetDevice) extractInvokeId(data []byte) (uint8, bool) {
- bvlc, err := model.BVLCParse[model.BVLC](context.Background(), data)
+ bvlc, err := model.BVLCParse[model.BVLC](d.ctx, data)
if err != nil {
d.log.Error().Err(err).Msg("fake device: parse BVLC")
return 0, false
@@ -141,18 +143,14 @@ func (d *fakeBacnetDevice) stop() {
d.wg.Wait()
}
-func traceLogger(t *testing.T) zerolog.Logger {
- return
zerolog.New(zerolog.NewTestWriter(t)).Level(zerolog.TraceLevel).With().Timestamp().Logger()
-}
-
// readPresentValue issues a single ReadRequest for
ANALOG_INPUT,1/PRESENT_VALUE
// against the given connection and returns the response code + float value.
func readPresentValue(t *testing.T, conn plc4go.PlcConnection)
(apiModel.PlcResponseCode, float32, bool) {
t.Helper()
rr, err := conn.ReadRequestBuilder().AddTagAddress("pv",
"ANALOG_INPUT,1/PRESENT_VALUE").Build()
require.NoError(t, err)
- ctx, cancel := context.WithTimeout(context.Background(), 8*time.Second)
- defer cancel()
+ ctx, cancel := context.WithTimeout(t.Context(), 8*time.Second)
+ t.Cleanup(cancel)
select {
case <-ctx.Done():
return 0, 0, false
@@ -172,20 +170,22 @@ func readPresentValue(t *testing.T, conn
plc4go.PlcConnection) (apiModel.PlcResp
}
func TestNativeBacnetRead_DirectConnection(t *testing.T) {
- log := traceLogger(t)
+ log := testutils.ProduceTestingLogger(t)
device := startFakeBacnetDevice(t, log)
- defer device.stop()
+ t.Cleanup(device.stop)
dm := plc4go.NewPlcDriverManager(options.WithCustomLogger(log))
dm.RegisterDriver(NewDriver(options.WithCustomLogger(log)))
apiTransports.RegisterUdpTransport(dm)
connStr :=
fmt.Sprintf("bacnet-ip:udp://127.0.0.1:%d?local-port=0&ApduTimeoutMs=3000",
device.port())
- ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
- defer cancel()
+ ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second)
+ t.Cleanup(cancel)
conn, err := dm.GetConnection(ctx, connStr)
require.NoError(t, err)
- defer conn.Close()
+ t.Cleanup(func() {
+ assert.NoError(t, conn.Close())
+ })
code, val, ok := readPresentValue(t, conn)
t.Logf("device received %d request(s)", device.requestCount())
@@ -195,22 +195,26 @@ func TestNativeBacnetRead_DirectConnection(t *testing.T) {
}
func TestNativeBacnetRead_ViaCache(t *testing.T) {
- log := traceLogger(t)
+ log := testutils.ProduceTestingLogger(t)
device := startFakeBacnetDevice(t, log)
- defer device.stop()
+ t.Cleanup(device.stop)
dm := plc4go.NewPlcDriverManager(options.WithCustomLogger(log))
dm.RegisterDriver(NewDriver(options.WithCustomLogger(log)))
apiTransports.RegisterUdpTransport(dm)
connCache := cache.NewPlcConnectionCache(dm,
cache.WithCustomLogger(log))
- defer connCache.Close()
+ t.Cleanup(func() {
+ assert.NoError(t, connCache.Close())
+ })
connStr :=
fmt.Sprintf("bacnet-ip:udp://127.0.0.1:%d?local-port=0&ApduTimeoutMs=3000",
device.port())
- ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
- defer cancel()
+ ctx, cancel := context.WithTimeout(t.Context(), 10*time.Second)
+ t.Cleanup(cancel)
conn, err := connCache.GetConnection(ctx, connStr)
require.NoError(t, err)
- defer conn.Close()
+ t.Cleanup(func() {
+ assert.NoError(t, conn.Close())
+ })
code, val, ok := readPresentValue(t, conn)
t.Logf("device received %d request(s)", device.requestCount())