net/mocknet: fixed listenaddrs (misrepresenting)
some dht tests signaled "sending peer empty addresses" which would then cause a failure. this was a misrepresentation on the part of mocknet. it has been corrected.
Juan Batiz-Benet committed
Dec 22, 2014 at 21:07 UTC
497297b243c9d5ddfa3aab73af27bd62a2bfe934
3 files changed
+12
-4
net/id.go
+1
@@ -117,6 +117,7 @@ func (ids *IDService) populateMessage(mes *pb.Handshake3, c Conn) {
117
for i, addr := range laddrs {
118
mes.ListenAddrs[i] = addr.Bytes()
119
}
120
+ log.Debugf("%s sent listen addrs to %s: %s", c.LocalPeer(), c.RemotePeer(), laddrs)
121
122
// set protocol versions
123
mes.H1 = handshake.NewHandshake1("", "")
net/mock/mock_net.go
+6
@@ -62,6 +62,12 @@ func (mn *mocknet) AddPeer(k ic.PrivKey, a ma.Multiaddr) (inet.Network, error) {
62
return nil, err
63
}
64
65
+ // make sure to add listening address!
66
+ // this makes debugging things simpler as remembering to register
67
+ // an address may cause unexpected failure.
68
+ n.Peerstore().AddAddress(n.LocalPeer(), a)
69
+ log.Debugf("mocknet added listen addr for peer: %s -- %s", n.LocalPeer(), a)
70
+
71
mn.cg.AddChildGroup(n.cg)
72
73
mn.Lock()
net/mock/mock_peernet.go
+5
-4
@@ -1,6 +1,7 @@
1
package mocknet
2
3
import (
4
+ "errors"
5
"fmt"
6
"math/rand"
7
"sync"
@@ -121,8 +122,6 @@ func (pn *peernet) DialPeer(ctx context.Context, p peer.ID) error {
122
}
123
124
func (pn *peernet) connect(p peer.ID) error {
124
- log.Debugf("%s dialing %s", pn.peer, p)
125
-
125
// first, check if we already have live connections
126
pn.RLock()
127
cs, found := pn.connsByPeer[p]
@@ -131,6 +130,8 @@ func (pn *peernet) connect(p peer.ID) error {
130
return nil
131
}
132
133
+ log.Debugf("%s (newly) dialing %s", pn.peer, p)
134
+
135
// ok, must create a new connection. we need a link
136
links := pn.mocknet.LinksBetweenPeers(pn.peer, p)
137
if len(links) < 1 {
@@ -282,14 +283,14 @@ func (pn *peernet) BandwidthTotals() (in uint64, out uint64) {
283
284
// ListenAddresses returns a list of addresses at which this network listens.
285
func (pn *peernet) ListenAddresses() []ma.Multiaddr {
285
- return []ma.Multiaddr{}
286
+ return pn.Peerstore().Addresses(pn.LocalPeer())
287
}
288
289
// InterfaceListenAddresses returns a list of addresses at which this network
290
// listens. It expands "any interface" addresses (/ip4/0.0.0.0, /ip6/::) to
291
// use the known local interfaces.
292
func (pn *peernet) InterfaceListenAddresses() ([]ma.Multiaddr, error) {
292
- return []ma.Multiaddr{}, nil
293
+ return nil, errors.New("Mocknet does not have interfaces.")
294
}
295
296
// Connectedness returns a state signaling connection capabilities