diff --git a/routing/dht/dht_test.go b/routing/dht/dht_test.go index bedda1afc..9e8251a43 100644 --- a/routing/dht/dht_test.go +++ b/routing/dht/dht_test.go @@ -390,3 +390,47 @@ func TestFindPeer(t *testing.T) { t.Fatal("Didnt find expected peer.") } } + +func TestConnectCollision(t *testing.T) { + // t.Skip("skipping test to debug another") + + u.Debug = false + addrA, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/1235") + if err != nil { + t.Fatal(err) + } + addrB, err := ma.NewMultiaddr("/ip4/127.0.0.1/tcp/5679") + if err != nil { + t.Fatal(err) + } + + peerA := makePeer(addrA) + peerB := makePeer(addrB) + + dhtA := setupDHT(t, peerA) + dhtB := setupDHT(t, peerB) + + defer dhtA.Halt() + defer dhtB.Halt() + defer dhtA.network.Close() + defer dhtB.network.Close() + + done := make(chan struct{}) + go func() { + _, err = dhtA.Connect(context.Background(), peerB) + if err != nil { + t.Fatal(err) + } + done <- struct{}{} + }() + go func() { + _, err = dhtB.Connect(context.Background(), peerA) + if err != nil { + t.Fatal(err) + } + done <- struct{}{} + }() + + <-done + <-done +} diff --git a/routing/dht/ext_test.go b/routing/dht/ext_test.go index 88f512378..ca88a83f4 100644 --- a/routing/dht/ext_test.go +++ b/routing/dht/ext_test.go @@ -92,6 +92,10 @@ func (f *fauxNet) GetPeerList() []*peer.Peer { return nil } +func (f *fauxNet) GetBandwidthTotals() (uint64, uint64) { + return 0, 0 +} + // Close terminates all network operation func (f *fauxNet) Close() error { return nil }