Skip to content

Commit cce6b5b

Browse files
add a test case
1 parent a7c46cb commit cce6b5b

File tree

1 file changed

+35
-19
lines changed

1 file changed

+35
-19
lines changed

p2p/net/swarm/swarm_dial_test.go

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -197,16 +197,9 @@ func TestAddrResolution(t *testing.T) {
197197
}
198198

199199
func TestAddrResolutionRecursive(t *testing.T) {
200-
ctx := context.Background()
200+
p1 := test.RandPeerIDFatal(t)
201+
p2 := test.RandPeerIDFatal(t)
201202

202-
p1, err := test.RandPeerID()
203-
if err != nil {
204-
t.Error(err)
205-
}
206-
p2, err := test.RandPeerID()
207-
if err != nil {
208-
t.Error(err)
209-
}
210203
addr1 := ma.StringCast("/dnsaddr/example.com")
211204
addr2 := ma.StringCast("/ip4/192.0.2.1/tcp/123")
212205
p2paddr1 := ma.StringCast("/dnsaddr/example.com/p2p/" + p1.String())
@@ -221,25 +214,19 @@ func TestAddrResolutionRecursive(t *testing.T) {
221214
"dnsaddr=" + p2paddr1i.String(),
222215
"dnsaddr=" + p2paddr2i.String(),
223216
},
224-
"_dnsaddr.foo.example.com": {
225-
"dnsaddr=" + p2paddr1f.String(),
226-
},
227-
"_dnsaddr.bar.example.com": {
228-
"dnsaddr=" + p2paddr2i.String(),
229-
},
217+
"_dnsaddr.foo.example.com": {"dnsaddr=" + p2paddr1f.String()},
218+
"_dnsaddr.bar.example.com": {"dnsaddr=" + p2paddr2i.String()},
230219
},
231220
}
232221
resolver, err := madns.NewResolver(madns.WithDefaultResolver(backend))
233-
if err != nil {
234-
t.Fatal(err)
235-
}
222+
require.NoError(t, err)
236223

237224
s := newTestSwarmWithResolver(t, resolver)
238225

239226
pi1, err := peer.AddrInfoFromP2pAddr(p2paddr1)
240227
require.NoError(t, err)
241228

242-
tctx, cancel := context.WithTimeout(ctx, time.Millisecond*100)
229+
tctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*100)
243230
defer cancel()
244231
s.Peerstore().AddAddrs(pi1.ID, pi1.Addrs, peerstore.TempAddrTTL)
245232
_, _, err = s.addrsForDial(tctx, p1)
@@ -263,6 +250,35 @@ func TestAddrResolutionRecursive(t *testing.T) {
263250
require.Contains(t, addrs2, addr1)
264251
}
265252

253+
// see https://github.com/libp2p/go-libp2p/issues/2562
254+
func TestAddrResolutionRecursiveTransportSpecific(t *testing.T) {
255+
p := test.RandPeerIDFatal(t)
256+
257+
backend := &madns.MockResolver{
258+
IP: map[string][]net.IPAddr{
259+
"sub.example.com": {net.IPAddr{IP: net.IPv4(1, 2, 3, 4)}},
260+
},
261+
TXT: map[string][]string{
262+
"_dnsaddr.example.com": {"dnsaddr=/dns4/sub.example.com/tcp/443/wss/p2p/" + p.String()},
263+
"_dnsaddr.am6.bootstrap.libp2p.io": {"dnsaddr=/ip4/1.2.3.4/tcp/443/wss"},
264+
},
265+
}
266+
resolver, err := madns.NewResolver(madns.WithDefaultResolver(backend))
267+
require.NoError(t, err)
268+
269+
s := newTestSwarmWithResolver(t, resolver)
270+
pi1, err := peer.AddrInfoFromP2pAddr(ma.StringCast("/dnsaddr/example.com/p2p/" + p.String()))
271+
require.NoError(t, err)
272+
273+
tctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*100)
274+
defer cancel()
275+
s.Peerstore().AddAddrs(pi1.ID, pi1.Addrs, peerstore.TempAddrTTL)
276+
addrs, _, err := s.addrsForDial(tctx, p)
277+
require.NoError(t, err)
278+
require.Len(t, addrs, 1)
279+
require.Equal(t, addrs[0].String(), "/ip4/1.2.3.4/tcp/443/tls/sni/sub.example.com/ws")
280+
}
281+
266282
func TestAddrsForDialFiltering(t *testing.T) {
267283
q1 := ma.StringCast("/ip4/1.2.3.4/udp/1/quic-v1")
268284
q1v1 := ma.StringCast("/ip4/1.2.3.4/udp/1/quic-v1")

0 commit comments

Comments
 (0)