Skip to content

Commit

Permalink
fix(plc4go/cbus): remove some remaining global logs
Browse files Browse the repository at this point in the history
  • Loading branch information
sruehl committed May 31, 2023
1 parent b330c7c commit 0025f9f
Show file tree
Hide file tree
Showing 10 changed files with 680 additions and 419 deletions.
33 changes: 32 additions & 1 deletion plc4go/internal/cbus/Browser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,11 @@ package cbus
import (
"context"
"fmt"
"github.com/apache/plc4x/plc4go/spi/utils"
"net/url"
"sync/atomic"
"testing"
"time"

plc4go "github.com/apache/plc4x/plc4go/pkg/api"
apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
Expand Down Expand Up @@ -101,6 +103,9 @@ func TestBrowser_BrowseQuery(t *testing.T) {
t.Error(err)
t.FailNow()
}
t.Cleanup(func() {
assert.NoError(t, transportInstance.Close())
})
type MockState uint8
const (
RESET MockState = iota
Expand Down Expand Up @@ -161,12 +166,24 @@ func TestBrowser_BrowseQuery(t *testing.T) {
t.Error(err)
t.FailNow()
}
connectionConnectResult := <-NewDriver(loggerOption).GetConnection(transportUrl, map[string]transports.Transport{"test": transport}, map[string][]string{})
driver := NewDriver(loggerOption)
connectionConnectResult := <-driver.GetConnection(transportUrl, map[string]transports.Transport{"test": transport}, map[string][]string{})
if err := connectionConnectResult.GetErr(); err != nil {
t.Error(err)
t.FailNow()
}
fields.connection = connectionConnectResult.GetConnection()
t.Cleanup(func() {
timer := time.NewTimer(1 * time.Second)
t.Cleanup(func() {
utils.CleanupTimer(timer)
})
select {
case <-fields.connection.Close():
case <-timer.C:
t.Error("timeout")
}
})
},
want: apiModel.PlcResponseCode_OK,
want1: []apiModel.PlcBrowseItem{
Expand Down Expand Up @@ -367,6 +384,9 @@ func TestBrowser_getInstalledUnitAddressBytes(t *testing.T) {
t.Error(err)
t.FailNow()
}
t.Cleanup(func() {
assert.NoError(t, transportInstance.Close())
})
type MockState uint8
const (
RESET MockState = iota
Expand Down Expand Up @@ -428,6 +448,17 @@ func TestBrowser_getInstalledUnitAddressBytes(t *testing.T) {
t.FailNow()
}
fields.connection = connectionConnectResult.GetConnection()
t.Cleanup(func() {
timer := time.NewTimer(1 * time.Second)
t.Cleanup(func() {
utils.CleanupTimer(timer)
})
select {
case <-fields.connection.Close():
case <-timer.C:
t.Error("timeout")
}
})
},
want: map[byte]any{
1: true,
Expand Down
10 changes: 4 additions & 6 deletions plc4go/internal/cbus/Discoverer.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@ import (
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/transports"
"github.com/apache/plc4x/plc4go/spi/utils"

"github.com/rs/zerolog/log"
)

type Discoverer struct {
Expand Down Expand Up @@ -70,7 +68,7 @@ func (d *Discoverer) Discover(ctx context.Context, callback func(event apiModel.
if err != nil {
return errors.Wrap(err, "error getting addresses")
}
if log.Debug().Enabled() {
if d.log.Debug().Enabled() {
for _, provider := range interfaces {
d.log.Debug().Msgf("Discover on %s", provider)
d.log.Trace().Msgf("Discover on %#v", provider.containedInterface())
Expand All @@ -82,7 +80,7 @@ func (d *Discoverer) Discover(ctx context.Context, callback func(event apiModel.
tcpTransport := tcp.NewTransport()
// Iterate over all network devices of this system.
for _, netInterface := range interfaces {
interfaceLog := log.With().Stringer("interface", netInterface).Logger()
interfaceLog := d.log.With().Stringer("interface", netInterface).Logger()
interfaceLog.Debug().Msg("Scanning")
addrs, err := netInterface.Addrs()
if err != nil {
Expand Down Expand Up @@ -117,7 +115,7 @@ func (d *Discoverer) Discover(ctx context.Context, callback func(event apiModel.
if ipv4Addr == nil || ipv4Addr.IsLoopback() {
continue
}
addresses, err := utils.GetIPAddresses(ctx, netInterface.containedInterface(), false)
addresses, err := utils.GetIPAddresses(d.log, ctx, netInterface.containedInterface(), false)
if err != nil {
addressLogger.Warn().Err(err).Msgf("Can't get addresses for %v", netInterface)
continue
Expand Down Expand Up @@ -206,7 +204,7 @@ func (d *Discoverer) createTransportInstanceDispatcher(ctx context.Context, wg *

func (d *Discoverer) createDeviceScanDispatcher(tcpTransportInstance *tcp.TransportInstance, callback func(event apiModel.PlcDiscoveryItem)) pool.Runnable {
return func() {
transportInstanceLogger := log.With().Stringer("transportInstance", tcpTransportInstance).Logger()
transportInstanceLogger := d.log.With().Stringer("transportInstance", tcpTransportInstance).Logger()
transportInstanceLogger.Debug().Msgf("Scanning %v", tcpTransportInstance)
// Create a codec for sending and receiving messages.
codec := NewMessageCodec(tcpTransportInstance, options.WithCustomLogger(d.log))
Expand Down
99 changes: 60 additions & 39 deletions plc4go/internal/cbus/Discoverer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,22 +22,25 @@ package cbus
import (
"context"
"fmt"
"net"
"net/url"
"strconv"
"sync"
"testing"
"time"

apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
readWriteModel "github.com/apache/plc4x/plc4go/protocols/cbus/readwrite/model"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/pool"
"github.com/apache/plc4x/plc4go/spi/testutils"
"github.com/apache/plc4x/plc4go/spi/transports"
"github.com/apache/plc4x/plc4go/spi/transports/tcp"
"github.com/apache/plc4x/plc4go/spi/utils"

"github.com/rs/zerolog"
"github.com/stretchr/testify/assert"
"golang.org/x/net/nettest"
"net"
"net/url"
"strconv"
"sync"
"testing"
"time"
)

func TestNewDiscoverer(t *testing.T) {
Expand Down Expand Up @@ -151,55 +154,67 @@ func TestDiscoverer_createDeviceScanDispatcher(t *testing.T) {
name string
fields fields
args args
setup func(t *testing.T, fields *fields, args *args)
}{
{
name: "create a dispatcher",
args: args{
tcpTransportInstance: func() *tcp.TransportInstance {
listen, err := net.Listen("tcp", "127.0.0.1:0")
callback: func(t *testing.T, event apiModel.PlcDiscoveryItem) {
assert.NotNil(t, event)
},
},
setup: func(t *testing.T, fields *fields, args *args) {
listen, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
t.Error(err)
t.FailNow()
}
go func() {
conn, err := listen.Accept()
if err != nil {
t.Error(err)
t.FailNow()
return
}
go func() {
conn, err := listen.Accept()
if err != nil {
t.Error(err)
return
}
write, err := conn.Write([]byte("x.890050435F434E49454422\r\n"))
if err != nil {
t.Error(err)
return
}
t.Logf("%d written", write)
}()
t.Cleanup(func() {
if err := listen.Close(); err != nil {
t.Error(err)
}
})
transport := tcp.NewTransport()
parse, err := url.Parse("tcp://" + listen.Addr().String())
write, err := conn.Write([]byte("x.890050435F434E49454422\r\n"))
if err != nil {
t.Error(err)
t.FailNow()
return
}
instance, err := transport.CreateTransportInstance(*parse, nil)
if err != nil {
t.Logf("%d written", write)
}()
t.Cleanup(func() {
if err := listen.Close(); err != nil {
t.Error(err)
t.FailNow()
}
return instance.(*tcp.TransportInstance)
}(),
callback: func(t *testing.T, event apiModel.PlcDiscoveryItem) {
assert.NotNil(t, event)
},
})

// Setup logger
logger := testutils.ProduceTestingLogger(t)

// Set the model logger to the logger above
testutils.SetToTestingLogger(t, readWriteModel.Plc4xModelLog)

loggerOption := options.WithCustomLogger(logger)
transport := tcp.NewTransport(loggerOption)
parse, err := url.Parse("tcp://" + listen.Addr().String())
if err != nil {
t.Error(err)
t.FailNow()
}
instance, err := transport.CreateTransportInstance(*parse, nil, loggerOption)
if err != nil {
t.Error(err)
t.FailNow()
}
args.tcpTransportInstance = instance.(*tcp.TransportInstance)
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.setup != nil {
tt.setup(t, &tt.fields, &tt.args)
}
d := &Discoverer{
transportInstanceCreationQueue: tt.fields.transportInstanceCreationQueue,
deviceScanningQueue: tt.fields.deviceScanningQueue,
Expand Down Expand Up @@ -232,6 +247,7 @@ func TestDiscoverer_createTransportInstanceDispatcher(t *testing.T) {
name string
fields fields
args args
setup func(t *testing.T, fields *fields, args *args)
}{
{
name: "create a dispatcher",
Expand All @@ -242,7 +258,6 @@ func TestDiscoverer_createTransportInstanceDispatcher(t *testing.T) {
return &wg
}(),
ip: net.IPv4(127, 0, 0, 1),
tcpTransport: tcp.NewTransport(),
transportInstances: make(chan transports.TransportInstance, 1),
cBusPort: func() uint16 {
listen, err := net.Listen("tcp", "127.0.0.1:0")
Expand Down Expand Up @@ -278,10 +293,16 @@ func TestDiscoverer_createTransportInstanceDispatcher(t *testing.T) {
return uint16(port)
}(),
},
setup: func(t *testing.T, fields *fields, args *args) {
args.tcpTransport = tcp.NewTransport(options.WithCustomLogger(testutils.ProduceTestingLogger(t)))
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.setup != nil {
tt.setup(t, &tt.fields, &tt.args)
}
d := &Discoverer{
transportInstanceCreationQueue: tt.fields.transportInstanceCreationQueue,
deviceScanningQueue: tt.fields.deviceScanningQueue,
Expand Down
6 changes: 6 additions & 0 deletions plc4go/internal/cbus/Driver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
apiModel "github.com/apache/plc4x/plc4go/pkg/api/model"
_default "github.com/apache/plc4x/plc4go/spi/default"
"github.com/apache/plc4x/plc4go/spi/options"
"github.com/apache/plc4x/plc4go/spi/testutils"
"github.com/apache/plc4x/plc4go/spi/transactions"
"github.com/apache/plc4x/plc4go/spi/transports"
"github.com/apache/plc4x/plc4go/spi/transports/test"
Expand Down Expand Up @@ -53,6 +54,7 @@ func TestDriver_DiscoverWithContext(t *testing.T) {
name string
fields fields
args args
setup func(t *testing.T, fields *fields, args *args)
wantErr assert.ErrorAssertionFunc
}{
{
Expand All @@ -69,12 +71,16 @@ func TestDriver_DiscoverWithContext(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.setup != nil {
tt.setup(t, &tt.fields, &tt.args)
}
m := &Driver{
DefaultDriver: tt.fields.DefaultDriver,
tm: tt.fields.tm,
awaitSetupComplete: tt.fields.awaitSetupComplete,
awaitDisconnectComplete: tt.fields.awaitDisconnectComplete,
}
m.log = testutils.ProduceTestingLogger(t)
tt.wantErr(t, m.DiscoverWithContext(tt.args.ctx, tt.args.callback, tt.args.discoveryOptions...), fmt.Sprintf("DiscoverWithContext(%v, func()*, %v)", tt.args.ctx, tt.args.discoveryOptions))
})
}
Expand Down
Loading

0 comments on commit 0025f9f

Please sign in to comment.