Skip to content

Commit f87504c

Browse files
chore: adjust network testing API
This used to accept a context and a logger; now make it accept a testing.T and a context instead. The rationale here is that it is easy for a test to provides its own logger related to the T, but relying on context cancellation for cleanup is inferior to using T.Cleanup. The downside of this is that there is no way for a test to set attributes on the logger, but it doesn't look like any tests set any attributes so far anyway.
1 parent 71d1d31 commit f87504c

File tree

8 files changed

+27
-34
lines changed

8 files changed

+27
-34
lines changed

tm/tmintegration/daisychain.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package tmintegration
22

33
import (
44
"context"
5-
"log/slog"
5+
"testing"
66

77
"github.com/gordian-engine/gordian/gcrypto"
88
"github.com/gordian-engine/gordian/tm/tmgossip"
@@ -18,11 +18,11 @@ func NewDaisyChainFactory(e *Env) DaisyChainFactory {
1818
return DaisyChainFactory{e: e}
1919
}
2020

21-
func (f DaisyChainFactory) NewNetwork(ctx context.Context, log *slog.Logger, reg *gcrypto.Registry) (tmp2ptest.Network, error) {
21+
func (f DaisyChainFactory) NewNetwork(t *testing.T, ctx context.Context, reg *gcrypto.Registry) (tmp2ptest.Network, error) {
2222
// We don't need the gcrypto registry for the daisy chain network,
2323
// because we only transmit in-memory values,
2424
// without serializing and deserializing across the network.
25-
n := tmp2ptest.NewDaisyChainNetwork(ctx, log)
25+
n := tmp2ptest.NewDaisyChainNetwork(t, ctx)
2626

2727
return &tmp2ptest.GenericNetwork[*tmp2ptest.DaisyChainConnection]{
2828
Network: n,

tm/tmintegration/factory.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package tmintegration
33
import (
44
"context"
55
"log/slog"
6+
"testing"
67

78
"github.com/gordian-engine/gordian/gcrypto"
89
"github.com/gordian-engine/gordian/tm/tmconsensus"
@@ -46,7 +47,7 @@ type Factory interface {
4647
// NewNetwork will be called only once per test.
4748
// The implementer may assume that the context will be canceled
4849
// at or before the test's completion.
49-
NewNetwork(context.Context, *slog.Logger, *gcrypto.Registry) (tmp2ptest.Network, error)
50+
NewNetwork(*testing.T, context.Context, *gcrypto.Registry) (tmp2ptest.Network, error)
5051

5152
NewActionStore(context.Context, int) (tmstore.ActionStore, error)
5253
NewCommittedHeaderStore(context.Context, int) (tmstore.CommittedHeaderStore, error)

tm/tmintegration/integration.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func RunIntegrationTest(t *testing.T, nf NewFactoryFunc) {
3636
const netSize = 2
3737
fx := f.NewConsensusFixture(netSize)
3838

39-
n, err := f.NewNetwork(ctx, log, &fx.Registry)
39+
n, err := f.NewNetwork(t, ctx, &fx.Registry)
4040
require.NoError(t, err)
4141
defer n.Wait()
4242
defer cancel()
@@ -200,7 +200,7 @@ func RunIntegrationTest(t *testing.T, nf NewFactoryFunc) {
200200
const pickN = 4 // How many validators participate in rounds beyond initial height.
201201
fx := f.NewConsensusFixture(netSize)
202202

203-
n, err := f.NewNetwork(ctx, log, &fx.Registry)
203+
n, err := f.NewNetwork(t, ctx, &fx.Registry)
204204
require.NoError(t, err)
205205
defer n.Wait()
206206
defer cancel()

tm/tmintegration/libp2p.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package tmintegration
33
import (
44
"context"
55
"fmt"
6-
"log/slog"
6+
"testing"
77

88
"github.com/gordian-engine/gordian/gcrypto"
9+
"github.com/gordian-engine/gordian/internal/gtest"
910
"github.com/gordian-engine/gordian/tm/tmcodec/tmjson"
1011
"github.com/gordian-engine/gordian/tm/tmgossip"
1112
"github.com/gordian-engine/gordian/tm/tmp2p"
@@ -24,11 +25,11 @@ func NewLibp2pFactory(e *Env) Libp2pFactory {
2425
return Libp2pFactory{e: e}
2526
}
2627

27-
func (f Libp2pFactory) NewNetwork(ctx context.Context, log *slog.Logger, reg *gcrypto.Registry) (tmp2ptest.Network, error) {
28+
func (f Libp2pFactory) NewNetwork(t *testing.T, ctx context.Context, reg *gcrypto.Registry) (tmp2ptest.Network, error) {
2829
codec := tmjson.MarshalCodec{
2930
CryptoRegistry: reg,
3031
}
31-
n, err := tmlibp2ptest.NewNetwork(ctx, log, codec)
32+
n, err := tmlibp2ptest.NewNetwork(ctx, gtest.NewLogger(t), codec)
3233
if err != nil {
3334
return nil, fmt.Errorf("failed to build network: %w", err)
3435
}

tm/tmp2p/tmlibp2p/tmlibp2ptest/network_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ package tmlibp2ptest_test
22

33
import (
44
"context"
5-
"log/slog"
65
"testing"
76

87
"github.com/gordian-engine/gordian/gcrypto"
8+
"github.com/gordian-engine/gordian/internal/gtest"
99
"github.com/gordian-engine/gordian/tm/tmcodec/tmjson"
1010
"github.com/gordian-engine/gordian/tm/tmp2p/tmlibp2p"
1111
"github.com/gordian-engine/gordian/tm/tmp2p/tmlibp2p/tmlibp2ptest"
@@ -15,13 +15,13 @@ import (
1515
func TestLibp2pNetwork_Compliance(t *testing.T) {
1616
tmp2ptest.TestNetworkCompliance(
1717
t,
18-
func(ctx context.Context, log *slog.Logger) (tmp2ptest.Network, error) {
18+
func(t *testing.T, ctx context.Context) (tmp2ptest.Network, error) {
1919
reg := new(gcrypto.Registry)
2020
gcrypto.RegisterEd25519(reg)
2121
codec := tmjson.MarshalCodec{
2222
CryptoRegistry: reg,
2323
}
24-
n, err := tmlibp2ptest.NewNetwork(ctx, log, codec)
24+
n, err := tmlibp2ptest.NewNetwork(ctx, gtest.NewLogger(t), codec)
2525
if err != nil {
2626
return nil, err
2727
}

tm/tmp2p/tmp2ptest/daisychainnetwork.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import (
77
"log/slog"
88
"sync"
99
"sync/atomic"
10+
"testing"
1011

1112
"github.com/gordian-engine/gordian/gexchange"
1213
"github.com/gordian-engine/gordian/internal/gchan"
14+
"github.com/gordian-engine/gordian/internal/gtest"
1315
"github.com/gordian-engine/gordian/tm/tmconsensus"
1416
"github.com/gordian-engine/gordian/tm/tmp2p"
1517
)
@@ -46,9 +48,9 @@ type dcSetHandlerRequest struct {
4648

4749
// NewDaisyChainNetwork returns a new DaisyChainNetwork.
4850
// Cancelling the context will stop the network and disconnect all created connections.
49-
func NewDaisyChainNetwork(ctx context.Context, log *slog.Logger) *DaisyChainNetwork {
51+
func NewDaisyChainNetwork(t *testing.T, ctx context.Context) *DaisyChainNetwork {
5052
n := &DaisyChainNetwork{
51-
log: log.With("net_idx", atomic.AddUint64(&dcNetworkIdxCounter, 1)),
53+
log: gtest.NewLogger(t).With("net_idx", atomic.AddUint64(&dcNetworkIdxCounter, 1)),
5254

5355
newConnRequests: make(chan dcConnectRequest), // Unbuffered since this is effectively synchronous.
5456

tm/tmp2p/tmp2ptest/daisychainnetwork_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package tmp2ptest_test
22

33
import (
44
"context"
5-
"log/slog"
65
"testing"
76

87
"github.com/gordian-engine/gordian/tm/tmp2p/tmp2ptest"
@@ -11,8 +10,8 @@ import (
1110
func TestDaisyChainNetwork_Compliance(t *testing.T) {
1211
tmp2ptest.TestNetworkCompliance(
1312
t,
14-
func(ctx context.Context, log *slog.Logger) (tmp2ptest.Network, error) {
15-
n := tmp2ptest.NewDaisyChainNetwork(ctx, log)
13+
func(t *testing.T, ctx context.Context) (tmp2ptest.Network, error) {
14+
n := tmp2ptest.NewDaisyChainNetwork(t, ctx)
1615
return &tmp2ptest.GenericNetwork[*tmp2ptest.DaisyChainConnection]{
1716
Network: n,
1817
}, nil

tm/tmp2p/tmp2ptest/networkcompliance.go

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package tmp2ptest
22

33
import (
44
"context"
5-
"log/slog"
65
"testing"
76
"time"
87

@@ -37,7 +36,8 @@ type Network interface {
3736
}
3837

3938
// NetworkConstructor is used within [TestNetworkCompliance] to create a Network.
40-
type NetworkConstructor func(context.Context, *slog.Logger) (Network, error)
39+
// The testing.T parameter is available for tests to register cleanup.
40+
type NetworkConstructor func(*testing.T, context.Context) (Network, error)
4141

4242
// GenericNetwork is a convenience wrapper type that allows
4343
// a concrete network implementation to have a Connect method
@@ -82,9 +82,7 @@ func TestNetworkCompliance(t *testing.T, newNet NetworkConstructor) {
8282
ctx, cancel := context.WithCancel(context.Background())
8383
defer cancel()
8484

85-
log := gtest.NewLogger(t)
86-
87-
net, err := newNet(ctx, log)
85+
net, err := newNet(t, ctx)
8886
require.NoError(t, err)
8987
defer net.Wait()
9088
defer cancel()
@@ -136,9 +134,7 @@ func TestNetworkCompliance(t *testing.T, newNet NetworkConstructor) {
136134
ctx, cancel := context.WithCancel(context.Background())
137135
defer cancel()
138136

139-
log := gtest.NewLogger(t)
140-
141-
net, err := newNet(ctx, log)
137+
net, err := newNet(t, ctx)
142138
require.NoError(t, err)
143139
defer net.Wait()
144140
defer cancel()
@@ -178,9 +174,7 @@ func TestNetworkCompliance(t *testing.T, newNet NetworkConstructor) {
178174
ctx, cancel := context.WithCancel(context.Background())
179175
defer cancel()
180176

181-
log := gtest.NewLogger(t)
182-
183-
net, err := newNet(ctx, log)
177+
net, err := newNet(t, ctx)
184178
require.NoError(t, err)
185179
defer net.Wait()
186180
defer cancel()
@@ -247,9 +241,7 @@ func TestNetworkCompliance(t *testing.T, newNet NetworkConstructor) {
247241
ctx, cancel := context.WithCancel(context.Background())
248242
defer cancel()
249243

250-
log := gtest.NewLogger(t)
251-
252-
net, err := newNet(ctx, log)
244+
net, err := newNet(t, ctx)
253245
require.NoError(t, err)
254246
defer net.Wait()
255247
defer cancel()
@@ -309,9 +301,7 @@ func TestNetworkCompliance(t *testing.T, newNet NetworkConstructor) {
309301
ctx, cancel := context.WithCancel(context.Background())
310302
defer cancel()
311303

312-
log := gtest.NewLogger(t)
313-
314-
net, err := newNet(ctx, log)
304+
net, err := newNet(t, ctx)
315305
require.NoError(t, err)
316306
defer net.Wait()
317307
defer cancel()

0 commit comments

Comments
 (0)