forked from cerc-io/plugeth
p2p/discover: add support for counting findnode failures
This commit is contained in:
parent
6a674ffea5
commit
64174f196f
@ -47,6 +47,7 @@ var (
|
|||||||
nodeDBDiscoverRoot = ":discover"
|
nodeDBDiscoverRoot = ":discover"
|
||||||
nodeDBDiscoverPing = nodeDBDiscoverRoot + ":lastping"
|
nodeDBDiscoverPing = nodeDBDiscoverRoot + ":lastping"
|
||||||
nodeDBDiscoverPong = nodeDBDiscoverRoot + ":lastpong"
|
nodeDBDiscoverPong = nodeDBDiscoverRoot + ":lastpong"
|
||||||
|
nodeDBDiscoverFindFails = nodeDBDiscoverRoot + ":findfail"
|
||||||
)
|
)
|
||||||
|
|
||||||
// newNodeDB creates a new node database for storing and retrieving infos about
|
// newNodeDB creates a new node database for storing and retrieving infos about
|
||||||
@ -275,6 +276,16 @@ func (db *nodeDB) updateLastPong(id NodeID, instance time.Time) error {
|
|||||||
return db.storeInt64(makeKey(id, nodeDBDiscoverPong), instance.Unix())
|
return db.storeInt64(makeKey(id, nodeDBDiscoverPong), instance.Unix())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// findFails retrieves the number of findnode failures since bonding.
|
||||||
|
func (db *nodeDB) findFails(id NodeID) int {
|
||||||
|
return int(db.fetchInt64(makeKey(id, nodeDBDiscoverFindFails)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// updateFindFails updates the number of findnode failures since bonding.
|
||||||
|
func (db *nodeDB) updateFindFails(id NodeID, fails int) error {
|
||||||
|
return db.storeInt64(makeKey(id, nodeDBDiscoverFindFails), int64(fails))
|
||||||
|
}
|
||||||
|
|
||||||
// querySeeds retrieves a batch of nodes to be used as potential seed servers
|
// querySeeds retrieves a batch of nodes to be used as potential seed servers
|
||||||
// during bootstrapping the node into the network.
|
// during bootstrapping the node into the network.
|
||||||
//
|
//
|
||||||
|
@ -93,6 +93,7 @@ func TestNodeDBFetchStore(t *testing.T) {
|
|||||||
30303,
|
30303,
|
||||||
)
|
)
|
||||||
inst := time.Now()
|
inst := time.Now()
|
||||||
|
num := 314
|
||||||
|
|
||||||
db, _ := newNodeDB("", Version, NodeID{})
|
db, _ := newNodeDB("", Version, NodeID{})
|
||||||
defer db.close()
|
defer db.close()
|
||||||
@ -117,6 +118,16 @@ func TestNodeDBFetchStore(t *testing.T) {
|
|||||||
if stored := db.lastPong(node.ID); stored.Unix() != inst.Unix() {
|
if stored := db.lastPong(node.ID); stored.Unix() != inst.Unix() {
|
||||||
t.Errorf("pong: value mismatch: have %v, want %v", stored, inst)
|
t.Errorf("pong: value mismatch: have %v, want %v", stored, inst)
|
||||||
}
|
}
|
||||||
|
// Check fetch/store operations on a node findnode-failure object
|
||||||
|
if stored := db.findFails(node.ID); stored != 0 {
|
||||||
|
t.Errorf("find-node fails: non-existing object: %v", stored)
|
||||||
|
}
|
||||||
|
if err := db.updateFindFails(node.ID, num); err != nil {
|
||||||
|
t.Errorf("find-node fails: failed to update: %v", err)
|
||||||
|
}
|
||||||
|
if stored := db.findFails(node.ID); stored != num {
|
||||||
|
t.Errorf("find-node fails: value mismatch: have %v, want %v", stored, num)
|
||||||
|
}
|
||||||
// Check fetch/store operations on an actual node object
|
// Check fetch/store operations on an actual node object
|
||||||
if stored := db.node(node.ID); stored != nil {
|
if stored := db.node(node.ID); stored != nil {
|
||||||
t.Errorf("node: non-existing object: %v", stored)
|
t.Errorf("node: non-existing object: %v", stored)
|
||||||
|
Loading…
Reference in New Issue
Block a user