Skip to content

Commit

Permalink
Merge pull request #648 from libp2p/feat/put-back-test
Browse files Browse the repository at this point in the history
Put back TestSelfWalkOnAddressChange
  • Loading branch information
aschmahmann committed May 19, 2020
2 parents 2851c88 + ef3c037 commit 1fc99d5
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions dht_bootstrap_test.go
@@ -0,0 +1,48 @@
package dht

import (
"context"
"testing"
"time"

"github.com/libp2p/go-libp2p-core/event"
kb "github.com/libp2p/go-libp2p-kbucket"

"github.com/stretchr/testify/require"
)

func TestSelfWalkOnAddressChange(t *testing.T) {
ctx := context.Background()
// create three DHT instances with auto refresh disabled
d1 := setupDHT(ctx, t, false, DisableAutoRefresh())
d2 := setupDHT(ctx, t, false, DisableAutoRefresh())
d3 := setupDHT(ctx, t, false, DisableAutoRefresh())

var connectedTo *IpfsDHT
// connect d1 to whoever is "further"
if kb.CommonPrefixLen(kb.ConvertPeerID(d1.self), kb.ConvertPeerID(d2.self)) <=
kb.CommonPrefixLen(kb.ConvertPeerID(d1.self), kb.ConvertPeerID(d3.self)) {
connect(t, ctx, d1, d3)
connectedTo = d3
} else {
connect(t, ctx, d1, d2)
connectedTo = d2
}

// then connect d2 AND d3
connect(t, ctx, d2, d3)

// d1 should have ONLY 1 peer in it's RT
waitForWellFormedTables(t, []*IpfsDHT{d1}, 1, 1, 2*time.Second)
require.Equal(t, connectedTo.self, d1.routingTable.ListPeers()[0])

// now emit the address change event
em, err := d1.host.EventBus().Emitter(&event.EvtLocalAddressesUpdated{})
require.NoError(t, err)
require.NoError(t, em.Emit(event.EvtLocalAddressesUpdated{}))
waitForWellFormedTables(t, []*IpfsDHT{d1}, 2, 2, 2*time.Second)
// it should now have both peers in the RT
ps := d1.routingTable.ListPeers()
require.Contains(t, ps, d2.self)
require.Contains(t, ps, d3.self)
}

0 comments on commit 1fc99d5

Please sign in to comment.