mirror of
https://github.com/libp2p/go-libp2p-peerstore.git
synced 2025-03-13 11:30:09 +08:00
Rename AddrManagerBadger -> BadgerAddrManager
This commit is contained in:
parent
8fba05add1
commit
d06a57e781
@ -12,7 +12,7 @@ import (
|
||||
"bytes"
|
||||
)
|
||||
|
||||
type AddrManagerBadger struct {
|
||||
type BadgerAddrManager struct {
|
||||
DB *badger.DB
|
||||
addrSubs map[peer.ID][]*addrSub
|
||||
}
|
||||
@ -22,7 +22,7 @@ type addrentry struct {
|
||||
TTL time.Duration
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) sendSubscriptionUpdates(p *peer.ID, addrs []ma.Multiaddr) {
|
||||
func (mgr *BadgerAddrManager) sendSubscriptionUpdates(p *peer.ID, addrs []ma.Multiaddr) {
|
||||
subs := mgr.addrSubs[*p]
|
||||
for _, sub := range subs {
|
||||
for _, addr := range addrs {
|
||||
@ -31,13 +31,13 @@ func (mgr *AddrManagerBadger) sendSubscriptionUpdates(p *peer.ID, addrs []ma.Mul
|
||||
}
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) Close() {
|
||||
func (mgr *BadgerAddrManager) Close() {
|
||||
if err := mgr.DB.Close(); err != nil {
|
||||
log.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func NewBadgerAddrManager(dataPath string) (*AddrManagerBadger, error) {
|
||||
func NewBadgerAddrManager(dataPath string) (*BadgerAddrManager, error) {
|
||||
opts := badger.DefaultOptions
|
||||
opts.Dir = dataPath
|
||||
opts.ValueDir = dataPath
|
||||
@ -45,10 +45,10 @@ func NewBadgerAddrManager(dataPath string) (*AddrManagerBadger, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &AddrManagerBadger{DB: db}, nil
|
||||
return &BadgerAddrManager{DB: db}, nil
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) AddAddr(p peer.ID, addr ma.Multiaddr, ttl time.Duration) {
|
||||
func (mgr *BadgerAddrManager) AddAddr(p peer.ID, addr ma.Multiaddr, ttl time.Duration) {
|
||||
mgr.AddAddrs(p, []ma.Multiaddr{addr}, ttl)
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ func addAddrs(p peer.ID, addrs []ma.Multiaddr, ttl time.Duration, txn *badger.Tx
|
||||
}
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) AddAddrs(p peer.ID, addrs []ma.Multiaddr, ttl time.Duration) {
|
||||
func (mgr *BadgerAddrManager) AddAddrs(p peer.ID, addrs []ma.Multiaddr, ttl time.Duration) {
|
||||
if ttl <= 0 {
|
||||
log.Debugf("short circuiting AddAddrs with ttl %d", ttl)
|
||||
return
|
||||
@ -106,11 +106,11 @@ func (mgr *AddrManagerBadger) AddAddrs(p peer.ID, addrs []ma.Multiaddr, ttl time
|
||||
txn.Commit(nil)
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) SetAddr(p peer.ID, addr ma.Multiaddr, ttl time.Duration) {
|
||||
func (mgr *BadgerAddrManager) SetAddr(p peer.ID, addr ma.Multiaddr, ttl time.Duration) {
|
||||
mgr.SetAddrs(p, []ma.Multiaddr{addr}, ttl)
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) SetAddrs(p peer.ID, addrs []ma.Multiaddr, ttl time.Duration) {
|
||||
func (mgr *BadgerAddrManager) SetAddrs(p peer.ID, addrs []ma.Multiaddr, ttl time.Duration) {
|
||||
txn := mgr.DB.NewTransaction(true)
|
||||
defer txn.Discard()
|
||||
|
||||
@ -142,7 +142,7 @@ func (mgr *AddrManagerBadger) SetAddrs(p peer.ID, addrs []ma.Multiaddr, ttl time
|
||||
txn.Commit(nil)
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) UpdateAddrs(p peer.ID, oldTTL time.Duration, newTTL time.Duration) {
|
||||
func (mgr *BadgerAddrManager) UpdateAddrs(p peer.ID, oldTTL time.Duration, newTTL time.Duration) {
|
||||
prefix := []byte(p)
|
||||
txn := mgr.DB.NewTransaction(true)
|
||||
defer txn.Discard()
|
||||
@ -181,7 +181,7 @@ func (mgr *AddrManagerBadger) UpdateAddrs(p peer.ID, oldTTL time.Duration, newTT
|
||||
txn.Commit(nil)
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) Addrs(p peer.ID) []ma.Multiaddr {
|
||||
func (mgr *BadgerAddrManager) Addrs(p peer.ID) []ma.Multiaddr {
|
||||
txn := mgr.DB.NewTransaction(false)
|
||||
defer txn.Discard()
|
||||
|
||||
@ -220,7 +220,7 @@ func (mgr *AddrManagerBadger) Addrs(p peer.ID) []ma.Multiaddr {
|
||||
return addrs
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) AddrStream(ctx context.Context, p peer.ID) <-chan ma.Multiaddr {
|
||||
func (mgr *BadgerAddrManager) AddrStream(ctx context.Context, p peer.ID) <-chan ma.Multiaddr {
|
||||
addrs := make(chan ma.Multiaddr)
|
||||
|
||||
// TODO: impl
|
||||
@ -228,7 +228,7 @@ func (mgr *AddrManagerBadger) AddrStream(ctx context.Context, p peer.ID) <-chan
|
||||
return addrs
|
||||
}
|
||||
|
||||
func (mgr *AddrManagerBadger) ClearAddrs(p peer.ID) {
|
||||
func (mgr *BadgerAddrManager) ClearAddrs(p peer.ID) {
|
||||
txn := mgr.DB.NewTransaction(true)
|
||||
defer txn.Discard()
|
||||
it := txn.NewIterator(badger.DefaultIteratorOptions)
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"github.com/libp2p/go-libp2p-peer"
|
||||
ma "github.com/multiformats/go-multiaddr"
|
||||
"os"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
func IDS(t *testing.T, ids string) peer.ID {
|
||||
@ -49,6 +50,22 @@ func testHas(t *testing.T, exp, act []ma.Multiaddr) {
|
||||
}
|
||||
}
|
||||
|
||||
func setupBadgerAddrManager(t *testing.T) (*BadgerAddrManager, func ()) {
|
||||
dataPath, err := ioutil.TempDir(os.TempDir(), "badger")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
mgr, err := NewBadgerAddrManager(dataPath)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
closer := func () {
|
||||
mgr.Close()
|
||||
os.RemoveAll(dataPath)
|
||||
}
|
||||
return mgr, closer
|
||||
}
|
||||
|
||||
func testAddresses(t *testing.T, m AddrBook) {
|
||||
id1 := IDS(t, "QmcNstKuwBBoVTpSCSDrwzjgrRcaYXK833Psuz2EMHwyQN")
|
||||
id2 := IDS(t, "QmRmPL3FDZKE3Qiwv1RosLdwdvbvg17b2hB39QPScgWKKZ")
|
||||
@ -99,28 +116,14 @@ func testAddresses(t *testing.T, m AddrBook) {
|
||||
testHas(t, []ma.Multiaddr{ma51, ma52, ma53, ma54, ma55}, m.Addrs(id5))
|
||||
}
|
||||
|
||||
func setupBadgerAddrManager(t *testing.T) (*AddrManagerBadger, func ()) {
|
||||
dataPath := os.TempDir()
|
||||
mgr, err := NewBadgerAddrManager(dataPath)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
closer := func () {
|
||||
mgr.Close()
|
||||
os.RemoveAll(dataPath)
|
||||
}
|
||||
return mgr, closer
|
||||
}
|
||||
|
||||
func TestAddresses(t *testing.T) {
|
||||
t.Log("AddrManager")
|
||||
mgr1 := AddrManager{}
|
||||
testAddresses(t, &mgr1)
|
||||
|
||||
t.Log("AddrManager")
|
||||
|
||||
mgr2, closer := setupBadgerAddrManager(t)
|
||||
defer closer()
|
||||
t.Log("BadgerAddrManager")
|
||||
mgr2, closer2 := setupBadgerAddrManager(t)
|
||||
defer closer2()
|
||||
testAddresses(t, mgr2)
|
||||
}
|
||||
|
||||
@ -152,27 +155,27 @@ func testAddressesExpire(t *testing.T, m AddrBook) {
|
||||
testHas(t, []ma.Multiaddr{ma24, ma25}, m.Addrs(id2))
|
||||
|
||||
m.SetAddr(id1, ma11, time.Millisecond)
|
||||
<-time.After(time.Millisecond)
|
||||
<-time.After(time.Millisecond * 2)
|
||||
testHas(t, []ma.Multiaddr{ma12, ma13}, m.Addrs(id1))
|
||||
testHas(t, []ma.Multiaddr{ma24, ma25}, m.Addrs(id2))
|
||||
|
||||
m.SetAddr(id1, ma13, time.Millisecond)
|
||||
<-time.After(time.Millisecond)
|
||||
<-time.After(time.Millisecond * 2)
|
||||
testHas(t, []ma.Multiaddr{ma12}, m.Addrs(id1))
|
||||
testHas(t, []ma.Multiaddr{ma24, ma25}, m.Addrs(id2))
|
||||
|
||||
m.SetAddr(id2, ma24, time.Millisecond)
|
||||
<-time.After(time.Millisecond)
|
||||
<-time.After(time.Millisecond * 2)
|
||||
testHas(t, []ma.Multiaddr{ma12}, m.Addrs(id1))
|
||||
testHas(t, []ma.Multiaddr{ma25}, m.Addrs(id2))
|
||||
|
||||
m.SetAddr(id2, ma25, time.Millisecond)
|
||||
<-time.After(time.Millisecond)
|
||||
<-time.After(time.Millisecond * 2)
|
||||
testHas(t, []ma.Multiaddr{ma12}, m.Addrs(id1))
|
||||
testHas(t, nil, m.Addrs(id2))
|
||||
|
||||
m.SetAddr(id1, ma12, time.Millisecond)
|
||||
<-time.After(time.Millisecond)
|
||||
<-time.After(time.Millisecond * 2)
|
||||
testHas(t, nil, m.Addrs(id1))
|
||||
testHas(t, nil, m.Addrs(id2))
|
||||
}
|
||||
@ -182,9 +185,9 @@ func TestAddressesExpire(t *testing.T) {
|
||||
m1 := &AddrManager{}
|
||||
testAddressesExpire(t, m1)
|
||||
|
||||
t.Log("AddrManagerBadger")
|
||||
m2, closer := setupBadgerAddrManager(t)
|
||||
defer closer()
|
||||
t.Log("BadgerAddrManager")
|
||||
m2, closer2 := setupBadgerAddrManager(t)
|
||||
defer closer2()
|
||||
testAddressesExpire(t, m2)
|
||||
}
|
||||
|
||||
@ -218,9 +221,9 @@ func TestClearWorks(t *testing.T) {
|
||||
m1 := &AddrManager{}
|
||||
testClearWorks(t, m1)
|
||||
|
||||
t.Log("AddrManagerBadger")
|
||||
m2, closer := setupBadgerAddrManager(t)
|
||||
defer closer()
|
||||
t.Log("BadgerAddrManager")
|
||||
m2, closer2 := setupBadgerAddrManager(t)
|
||||
defer closer2()
|
||||
testClearWorks(t, m2)
|
||||
}
|
||||
|
||||
@ -241,9 +244,9 @@ func TestSetNegativeTTLClears(t *testing.T) {
|
||||
m1 := &AddrManager{}
|
||||
testSetNegativeTTLClears(t, m1)
|
||||
|
||||
t.Log("AddrManagerBadger")
|
||||
m2, closer := setupBadgerAddrManager(t)
|
||||
defer closer()
|
||||
t.Log("BadgerAddrManager")
|
||||
m2, closer2 := setupBadgerAddrManager(t)
|
||||
defer closer2()
|
||||
testSetNegativeTTLClears(t, m2)
|
||||
}
|
||||
|
||||
@ -275,7 +278,7 @@ func testUpdateTTLs(t *testing.T, m AddrBook) {
|
||||
testHas(t, []ma.Multiaddr{ma11, ma12}, m.Addrs(id1))
|
||||
testHas(t, []ma.Multiaddr{ma21, ma22}, m.Addrs(id2))
|
||||
|
||||
time.Sleep(time.Second)
|
||||
time.Sleep(1200 * time.Millisecond)
|
||||
|
||||
testHas(t, []ma.Multiaddr{ma12}, m.Addrs(id1))
|
||||
testHas(t, []ma.Multiaddr{ma21, ma22}, m.Addrs(id2))
|
||||
@ -285,7 +288,7 @@ func testUpdateTTLs(t *testing.T, m AddrBook) {
|
||||
testHas(t, []ma.Multiaddr{ma12}, m.Addrs(id1))
|
||||
testHas(t, []ma.Multiaddr{ma21, ma22}, m.Addrs(id2))
|
||||
|
||||
time.Sleep(time.Second)
|
||||
time.Sleep(1200 * time.Millisecond)
|
||||
|
||||
testHas(t, []ma.Multiaddr{ma12}, m.Addrs(id1))
|
||||
testHas(t, []ma.Multiaddr{ma22}, m.Addrs(id2))
|
||||
@ -296,9 +299,9 @@ func TestUpdateTTLs(t *testing.T) {
|
||||
m1 := &AddrManager{}
|
||||
testUpdateTTLs(t, m1)
|
||||
|
||||
t.Log("AddrManagerBadger")
|
||||
m2, closer := setupBadgerAddrManager(t)
|
||||
defer closer()
|
||||
t.Log("BadgerAddrManager")
|
||||
m2, closer2 := setupBadgerAddrManager(t)
|
||||
defer closer2()
|
||||
testUpdateTTLs(t, m2)
|
||||
}
|
||||
|
||||
@ -313,9 +316,10 @@ func TestNilAddrsDontBreak(t *testing.T) {
|
||||
m1 := &AddrManager{}
|
||||
testNilAddrsDontBreak(t, m1)
|
||||
t.Log("OK")
|
||||
t.Log("AddrManagerBadger")
|
||||
m2, closer := setupBadgerAddrManager(t)
|
||||
defer closer()
|
||||
|
||||
t.Log("BadgerAddrManager")
|
||||
m2, closer2 := setupBadgerAddrManager(t)
|
||||
defer closer2()
|
||||
testNilAddrsDontBreak(t, m2)
|
||||
t.Log("OK")
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ import (
|
||||
type PeerstoreBadger struct {
|
||||
*keybook
|
||||
*metrics
|
||||
*AddrManagerBadger
|
||||
*BadgerAddrManager
|
||||
|
||||
ds map[string]interface{}
|
||||
dslock sync.Mutex
|
||||
@ -27,20 +27,20 @@ func NewPeerstoreBadger(dataPath string) *PeerstoreBadger {
|
||||
return &PeerstoreBadger{
|
||||
keybook: newKeybook(),
|
||||
metrics: NewMetrics(),
|
||||
AddrManagerBadger: mgr,
|
||||
BadgerAddrManager: mgr,
|
||||
ds: make(map[string]interface{}),
|
||||
}
|
||||
}
|
||||
|
||||
func (ps *PeerstoreBadger) Close() error {
|
||||
ps.AddrManagerBadger.Close()
|
||||
ps.BadgerAddrManager.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ps *PeerstoreBadger) PeerInfo(p peer.ID) PeerInfo {
|
||||
return PeerInfo{
|
||||
ID: p,
|
||||
Addrs: ps.AddrManagerBadger.Addrs(p),
|
||||
Addrs: ps.BadgerAddrManager.Addrs(p),
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user