channeldb: add DeleteLinkNode method
This commit is contained in:
parent
daf4a25fd9
commit
044e81bbd4
@ -127,6 +127,24 @@ func putLinkNode(nodeMetaBucket *bolt.Bucket, l *LinkNode) error {
|
||||
return nodeMetaBucket.Put(nodePub, b.Bytes())
|
||||
}
|
||||
|
||||
// DeleteLinkNode removes the link node with the given identity from the
|
||||
// database.
|
||||
func (d *DB) DeleteLinkNode(identity *btcec.PublicKey) error {
|
||||
return d.Update(func(tx *bolt.Tx) error {
|
||||
return d.deleteLinkNode(tx, identity)
|
||||
})
|
||||
}
|
||||
|
||||
func (d *DB) deleteLinkNode(tx *bolt.Tx, identity *btcec.PublicKey) error {
|
||||
nodeMetaBucket := tx.Bucket(nodeInfoBucket)
|
||||
if nodeMetaBucket == nil {
|
||||
return ErrLinkNodesNotFound
|
||||
}
|
||||
|
||||
pubKey := identity.SerializeCompressed()
|
||||
return nodeMetaBucket.Delete(pubKey)
|
||||
}
|
||||
|
||||
// FetchLinkNode attempts to lookup the data for a LinkNode based on a target
|
||||
// identity public key. If a particular LinkNode for the passed identity public
|
||||
// key cannot be found, then ErrNodeNotFound if returned.
|
||||
|
@ -106,3 +106,35 @@ func TestLinkNodeEncodeDecode(t *testing.T) {
|
||||
addr2.String(), node1DB.Addresses[1].String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteLinkNode(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
cdb, cleanUp, err := makeTestDB()
|
||||
if err != nil {
|
||||
t.Fatalf("unable to make test database: %v", err)
|
||||
}
|
||||
defer cleanUp()
|
||||
|
||||
_, pubKey := btcec.PrivKeyFromBytes(btcec.S256(), key[:])
|
||||
addr := &net.TCPAddr{
|
||||
IP: net.ParseIP("127.0.0.1"),
|
||||
Port: 1337,
|
||||
}
|
||||
linkNode := cdb.NewLinkNode(wire.TestNet3, pubKey, addr)
|
||||
if err := linkNode.Sync(); err != nil {
|
||||
t.Fatalf("unable to write link node to db: %v", err)
|
||||
}
|
||||
|
||||
if _, err := cdb.FetchLinkNode(pubKey); err != nil {
|
||||
t.Fatalf("unable to find link node: %v", err)
|
||||
}
|
||||
|
||||
if err := cdb.DeleteLinkNode(pubKey); err != nil {
|
||||
t.Fatalf("unable to delete link node from db: %v", err)
|
||||
}
|
||||
|
||||
if _, err := cdb.FetchLinkNode(pubKey); err == nil {
|
||||
t.Fatal("should not have found link node in db, but did")
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user