diff --git a/net/id_test.go b/net/id_test.go index 751e02c15695fb84003df87fc4099975d6d89925..14deb319fc1110aff909fad1d7443fa26236696e 100644 --- a/net/id_test.go +++ b/net/id_test.go @@ -39,60 +39,61 @@ func TestIDService(t *testing.T) { n1 := GenNetwork(t, ctx) n2 := GenNetwork(t, ctx) - testKnowsAddrs := func(n inet.Network, p peer.ID, expected []ma.Multiaddr) { - actual := n.Peerstore().Addresses(p) - - if len(actual) != len(expected) { - t.Error("dont have the same addresses") - } - - have := map[string]struct{}{} - for _, addr := range actual { - have[addr.String()] = struct{}{} - } - for _, addr := range expected { - if _, found := have[addr.String()]; !found { - t.Errorf("%s did not have addr for %s: %s", n.LocalPeer(), p, addr) - panic("ahhhhhhh") - } - } - } - - testHasProtocolVersions := func(n inet.Network, p peer.ID) { - v, err := n.Peerstore().Get(p, "ProtocolVersion") - if v.(string) != handshake.IpfsVersion.String() { - t.Fatal("protocol mismatch", err) - } - v, err = n.Peerstore().Get(p, "AgentVersion") - if v.(string) != handshake.ClientVersion { - t.Fatal("agent version mismatch", err) - } - } - n1p := n1.LocalPeer() n2p := n2.LocalPeer() - testKnowsAddrs(n1, n2p, []ma.Multiaddr{}) // nothing - testKnowsAddrs(n2, n1p, []ma.Multiaddr{}) // nothing + testKnowsAddrs(t, n1, n2p, []ma.Multiaddr{}) // nothing + testKnowsAddrs(t, n2, n1p, []ma.Multiaddr{}) // nothing // have n2 tell n1, so we can dial... DivulgeAddresses(n2, n1) - testKnowsAddrs(n1, n2p, n2.Peerstore().Addresses(n2p)) // has them - testKnowsAddrs(n2, n1p, []ma.Multiaddr{}) // nothing + testKnowsAddrs(t, n1, n2p, n2.Peerstore().Addresses(n2p)) // has them + testKnowsAddrs(t, n2, n1p, []ma.Multiaddr{}) // nothing if err := n1.DialPeer(ctx, n2p); err != nil { t.Fatalf("Failed to dial:", err) } + // this is shitty. dial should wait for connecting to end <-time.After(100 * time.Millisecond) // the IDService should be opened automatically, by the network. // what we should see now is that both peers know about each others listen addresses. - testKnowsAddrs(n1, n2p, n2.Peerstore().Addresses(n2p)) // has them - testKnowsAddrs(n2, n1p, n1.Peerstore().Addresses(n1p)) // has them + testKnowsAddrs(t, n1, n2p, n2.Peerstore().Addresses(n2p)) // has them + testKnowsAddrs(t, n2, n1p, n1.Peerstore().Addresses(n1p)) // has them // and the protocol versions. - testHasProtocolVersions(n1, n2p) - testHasProtocolVersions(n2, n1p) + testHasProtocolVersions(t, n1, n2p) + testHasProtocolVersions(t, n2, n1p) +} + +func testKnowsAddrs(t *testing.T, n inet.Network, p peer.ID, expected []ma.Multiaddr) { + actual := n.Peerstore().Addresses(p) + + if len(actual) != len(expected) { + t.Error("dont have the same addresses") + } + + have := map[string]struct{}{} + for _, addr := range actual { + have[addr.String()] = struct{}{} + } + for _, addr := range expected { + if _, found := have[addr.String()]; !found { + t.Errorf("%s did not have addr for %s: %s", n.LocalPeer(), p, addr) + panic("ahhhhhhh") + } + } +} + +func testHasProtocolVersions(t *testing.T, n inet.Network, p peer.ID) { + v, err := n.Peerstore().Get(p, "ProtocolVersion") + if v.(string) != handshake.IpfsVersion.String() { + t.Fatal("protocol mismatch", err) + } + v, err = n.Peerstore().Get(p, "AgentVersion") + if v.(string) != handshake.ClientVersion { + t.Fatal("agent version mismatch", err) + } }