peerstore: PeerInfo func

This commit is contained in:
Juan Batiz-Benet 2014-12-20 14:23:33 -08:00
parent 238ee50110
commit e6923ad969
2 changed files with 24 additions and 7 deletions

View File

@ -15,6 +15,14 @@ type Peerstore interface {
KeyBook
AddressBook
Metrics
// Peers returns a list of all peer.IDs in this Peerstore
Peers() []ID
// PeerInfo returns a peer.PeerInfo struct for given peer.ID.
// This is a small slice of the information Peerstore has on
// that peer, useful to other services.
PeerInfo(ID) PeerInfo
}
// AddressBook tracks the addresses of Peers
@ -197,3 +205,10 @@ func (ps *peerstore) Peers() []ID {
}
return pps
}
func (ps *peerstore) PeerInfo(p ID) PeerInfo {
return PeerInfo{
ID: p,
Addrs: ps.addressbook.Addresses(p),
}
}

View File

@ -44,10 +44,6 @@ func TestAddresses(t *testing.T) {
ps.AddAddress(id3, ma32)
ps.AddAddress(id3, ma33)
a1 := ps.Addresses(id1)
a2 := ps.Addresses(id2)
a3 := ps.Addresses(id3)
test := func(exp, act []ma.Multiaddr) {
if len(exp) != len(act) {
t.Fatal("lengths not the same")
@ -69,7 +65,13 @@ func TestAddresses(t *testing.T) {
}
}
test([]ma.Multiaddr{ma11}, a1)
test([]ma.Multiaddr{ma21, ma22}, a2)
test([]ma.Multiaddr{ma31, ma32, ma33}, a3)
// test the Addresses return value
test([]ma.Multiaddr{ma11}, ps.Addresses(id1))
test([]ma.Multiaddr{ma21, ma22}, ps.Addresses(id2))
test([]ma.Multiaddr{ma31, ma32, ma33}, ps.Addresses(id3))
// test also the PeerInfo return
test([]ma.Multiaddr{ma11}, ps.PeerInfo(id1).Addrs)
test([]ma.Multiaddr{ma21, ma22}, ps.PeerInfo(id2).Addrs)
test([]ma.Multiaddr{ma31, ma32, ma33}, ps.PeerInfo(id3).Addrs)
}