Skip to content

Commit beb30a3

Browse files
speed up the autorelay test
1 parent 9bb973c commit beb30a3

File tree

1 file changed

+30
-63
lines changed

1 file changed

+30
-63
lines changed

p2p/host/autorelay/autorelay_test.go

+30-63
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/ipfs/go-cid"
2525
ma "github.com/multiformats/go-multiaddr"
2626
manet "github.com/multiformats/go-multiaddr/net"
27+
"github.com/stretchr/testify/require"
2728
)
2829

2930
// test specific parameters
@@ -106,13 +107,9 @@ func (m *mockRouting) FindProvidersAsync(ctx context.Context, cid cid.Cid, limit
106107
return ch
107108
}
108109

109-
// connector
110110
func connect(t *testing.T, a, b host.Host) {
111111
pinfo := peer.AddrInfo{ID: a.ID(), Addrs: a.Addrs()}
112-
err := b.Connect(context.Background(), pinfo)
113-
if err != nil {
114-
t.Fatal(err)
115-
}
112+
require.NoError(t, b.Connect(context.Background(), pinfo))
116113
}
117114

118115
// and the actual test!
@@ -135,9 +132,6 @@ func isRelayAddr(addr ma.Multiaddr) bool {
135132
}
136133

137134
func testAutoRelay(t *testing.T, useRelayv2 bool) {
138-
ctx, cancel := context.WithCancel(context.Background())
139-
defer cancel()
140-
141135
mtab := newMockRoutingTable()
142136
makeRouting := func(h host.Host) (*mockRouting, error) {
143137
mr := newMockRouting(h, mtab)
@@ -162,51 +156,34 @@ func testAutoRelay(t *testing.T, useRelayv2 bool) {
162156
}
163157
return addrs
164158
}))
165-
if err != nil {
166-
t.Fatal(err)
167-
}
159+
require.NoError(t, err)
168160
defer relayHost.Close()
169161

170162
// instantiate the relay
171163
if useRelayv2 {
172164
r, err := relayv2.New(relayHost)
173-
if err != nil {
174-
t.Fatal(err)
175-
}
165+
require.NoError(t, err)
176166
defer r.Close()
177167
} else {
178168
r, err := relayv1.NewRelay(relayHost)
179-
if err != nil {
180-
t.Fatal(err)
181-
}
169+
require.NoError(t, err)
182170
defer r.Close()
183171
}
184172

185173
// advertise the relay
186174
relayRouting, err := makeRouting(relayHost)
187-
if err != nil {
188-
t.Fatal(err)
189-
}
175+
require.NoError(t, err)
190176
relayDiscovery := discovery.NewRoutingDiscovery(relayRouting)
191-
autorelay.Advertise(ctx, relayDiscovery)
177+
autorelay.Advertise(context.Background(), relayDiscovery)
192178

193179
// the client hosts
194180
h1, err := libp2p.New(libp2p.EnableRelay())
195-
if err != nil {
196-
t.Fatal(err)
197-
}
181+
require.NoError(t, err)
198182
defer h1.Close()
199183

200184
h2, err := libp2p.New(libp2p.EnableRelay(), libp2p.EnableAutoRelay(), libp2p.Routing(makePeerRouting))
201-
if err != nil {
202-
t.Fatal(err)
203-
}
185+
require.NoError(t, err)
204186
defer h2.Close()
205-
h3, err := libp2p.New(libp2p.EnableRelay())
206-
if err != nil {
207-
t.Fatal(err)
208-
}
209-
defer h3.Close()
210187

211188
// verify that we don't advertise relay addrs initially
212189
for _, addr := range h2.Addrs() {
@@ -217,24 +194,27 @@ func testAutoRelay(t *testing.T, useRelayv2 bool) {
217194

218195
// connect to AutoNAT, have it resolve to private.
219196
connect(t, h1, h2)
220-
time.Sleep(300 * time.Millisecond)
197+
221198
privEmitter, _ := h2.EventBus().Emitter(new(event.EvtLocalReachabilityChanged))
222199
privEmitter.Emit(event.EvtLocalReachabilityChanged{Reachability: network.ReachabilityPrivate})
223-
// Wait for detection to do its magic
224-
time.Sleep(3000 * time.Millisecond)
225200

226-
// verify that we now advertise relay addrs (but not unspecific relay addrs)
227-
unspecificRelay := ma.StringCast("/p2p-circuit")
228-
var haveRelay bool
229-
for _, addr := range h2.Addrs() {
230-
if addr.Equal(unspecificRelay) {
231-
t.Fatal("unspecific relay addr advertised")
232-
}
233-
if isRelayAddr(addr) {
234-
haveRelay = true
201+
hasRelayAddrs := func(t *testing.T, addrs []ma.Multiaddr) bool {
202+
unspecificRelay := ma.StringCast("/p2p-circuit")
203+
for _, addr := range addrs {
204+
if addr.Equal(unspecificRelay) {
205+
t.Fatal("unspecific relay addr advertised")
206+
}
207+
if isRelayAddr(addr) {
208+
return true
209+
}
235210
}
211+
return false
236212
}
237-
if !haveRelay {
213+
// Wait for detection to do its magic
214+
require.Eventually(t, func() bool { return hasRelayAddrs(t, h2.Addrs()) }, 3*time.Second, 30*time.Millisecond)
215+
216+
// verify that we now advertise relay addrs (but not unspecific relay addrs)
217+
if !hasRelayAddrs(t, h2.Addrs()) {
238218
t.Fatal("No relay addrs advertised")
239219
}
240220

@@ -245,26 +225,13 @@ func testAutoRelay(t *testing.T, useRelayv2 bool) {
245225
raddrs = append(raddrs, addr)
246226
}
247227
}
248-
249-
err = h3.Connect(ctx, peer.AddrInfo{ID: h2.ID(), Addrs: raddrs})
250-
if err != nil {
251-
t.Fatal(err)
252-
}
228+
h3, err := libp2p.New(libp2p.EnableRelay())
229+
require.NoError(t, err)
230+
defer h3.Close()
231+
require.NoError(t, h3.Connect(context.Background(), peer.AddrInfo{ID: h2.ID(), Addrs: raddrs}))
253232

254233
// verify that we have pushed relay addrs to connected peers
255-
haveRelay = false
256-
for _, addr := range h1.Peerstore().Addrs(h2.ID()) {
257-
if addr.Equal(unspecificRelay) {
258-
t.Fatal("unspecific relay addr advertised")
259-
}
260-
261-
_, err := addr.ValueForProtocol(ma.P_CIRCUIT)
262-
if err == nil {
263-
haveRelay = true
264-
}
265-
}
266-
267-
if !haveRelay {
234+
if !hasRelayAddrs(t, h1.Peerstore().Addrs(h2.ID())) {
268235
t.Fatal("No relay addrs pushed")
269236
}
270237
}

0 commit comments

Comments
 (0)