Make BasicHost.evtLocalAddrsUpdated event emitter stateful.
This commit is contained in:
parent
4cdc94dbe8
commit
fbcfca7ac3
|
@ -175,7 +175,7 @@ func NewHost(ctx context.Context, n network.Network, opts *HostOpts) (*BasicHost
|
|||
if h.emitters.evtLocalProtocolsUpdated, err = h.eventbus.Emitter(&event.EvtLocalProtocolsUpdated{}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if h.emitters.evtLocalAddrsUpdated, err = h.eventbus.Emitter(&event.EvtLocalAddressesUpdated{}); err != nil {
|
||||
if h.emitters.evtLocalAddrsUpdated, err = h.eventbus.Emitter(&event.EvtLocalAddressesUpdated{}, eventbus.Stateful); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ import (
|
|||
|
||||
ma "github.com/multiformats/go-multiaddr"
|
||||
madns "github.com/multiformats/go-multiaddr-dns"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
@ -728,6 +729,26 @@ func TestAddrChangeImmediatelyIfAddressNonEmpty(t *testing.T) {
|
|||
require.Equal(t, taddrs, rc.Addrs)
|
||||
}
|
||||
|
||||
func TestStatefulAddrEvents(t *testing.T) {
|
||||
ctx := context.Background()
|
||||
h := New(swarmt.GenSwarm(t, ctx))
|
||||
defer h.Close()
|
||||
|
||||
sub, err := h.EventBus().Subscribe(&event.EvtLocalAddressesUpdated{}, eventbus.BufSize(10))
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
defer sub.Close()
|
||||
|
||||
select {
|
||||
case v := <-sub.Out():
|
||||
assert.NotNil(t, v)
|
||||
|
||||
case <-time.After(time.Second * 5):
|
||||
t.Error("timed out waiting for event")
|
||||
}
|
||||
}
|
||||
|
||||
func TestHostAddrChangeDetection(t *testing.T) {
|
||||
// This test uses the address factory to provide several
|
||||
// sets of listen addresses for the host. It advances through
|
||||
|
|
Loading…
Reference in New Issue