Commit 4d9f1f0f authored by Juan Batiz-Benet's avatar Juan Batiz-Benet

net: Connectedness bugfix

Connectedness was totally incorrect. added a test case.
parent 7952d95b
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
package net package net
import ( import (
"fmt"
ic "github.com/jbenet/go-ipfs/crypto" ic "github.com/jbenet/go-ipfs/crypto"
swarm "github.com/jbenet/go-ipfs/net/swarm" swarm "github.com/jbenet/go-ipfs/net/swarm"
peer "github.com/jbenet/go-ipfs/peer" peer "github.com/jbenet/go-ipfs/peer"
...@@ -234,7 +236,7 @@ func (n *network) InterfaceListenAddresses() ([]ma.Multiaddr, error) { ...@@ -234,7 +236,7 @@ func (n *network) InterfaceListenAddresses() ([]ma.Multiaddr, error) {
// For now only returns Connected || NotConnected. Expand into more later. // For now only returns Connected || NotConnected. Expand into more later.
func (n *network) Connectedness(p peer.ID) Connectedness { func (n *network) Connectedness(p peer.ID) Connectedness {
c := n.swarm.ConnectionsToPeer(p) c := n.swarm.ConnectionsToPeer(p)
if c != nil && len(c) < 1 { if c != nil && len(c) > 0 {
return Connected return Connected
} }
return NotConnected return NotConnected
...@@ -266,6 +268,10 @@ func (n *network) SetHandler(p ProtocolID, h StreamHandler) { ...@@ -266,6 +268,10 @@ func (n *network) SetHandler(p ProtocolID, h StreamHandler) {
n.mux.SetHandler(p, h) n.mux.SetHandler(p, h)
} }
func (n *network) String() string {
return fmt.Sprintf("<Network %s>", n.LocalPeer())
}
func (n *network) IdentifyProtocol() *IDService { func (n *network) IdentifyProtocol() *IDService {
return n.ids return n.ids
} }
......
package net_test
import (
"testing"
context "github.com/jbenet/go-ipfs/Godeps/_workspace/src/code.google.com/p/go.net/context"
inet "github.com/jbenet/go-ipfs/net"
)
// TestConnectednessCorrect starts a few networks, connects a few
// and tests Connectedness value is correct.
func TestConnectednessCorrect(t *testing.T) {
ctx := context.Background()
nets := make([]inet.Network, 4)
for i := 0; i < 4; i++ {
nets[i] = GenNetwork(t, ctx)
}
// connect 0-1, 0-2, 0-3, 1-2, 2-3
dial := func(a, b inet.Network) {
DivulgeAddresses(b, a)
if err := a.DialPeer(ctx, b.LocalPeer()); err != nil {
t.Fatalf("Failed to dial: %s", err)
}
}
dial(nets[0], nets[1])
dial(nets[0], nets[3])
dial(nets[1], nets[2])
dial(nets[3], nets[2])
// test those connected show up correctly
testConnectedness := func(a, b inet.Network, c inet.Connectedness) {
if a.Connectedness(b.LocalPeer()) != c {
t.Error("%s is connected to %s, but Connectedness incorrect", a, b)
}
// test symmetric case
if b.Connectedness(a.LocalPeer()) != c {
t.Error("%s is connected to %s, but Connectedness incorrect", a, b)
}
}
// test connected
testConnectedness(nets[0], nets[1], inet.Connected)
testConnectedness(nets[0], nets[3], inet.Connected)
testConnectedness(nets[1], nets[2], inet.Connected)
testConnectedness(nets[3], nets[2], inet.Connected)
// test not connected
testConnectedness(nets[0], nets[2], inet.NotConnected)
testConnectedness(nets[1], nets[3], inet.NotConnected)
for _, n := range nets {
n.Close()
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment