MCPcopy Create free account
hub / github.com/CPChain/chain / TestNodeIteratorCoverage

Function TestNodeIteratorCoverage

core/state/iterator_test.go:28–62  ·  view source on GitHub ↗

Tests that the node iterator indeed walks over the entire database contents.

(t *testing.T)

Source from the content-addressed store, hash-verified

26
27// Tests that the node iterator indeed walks over the entire database contents.
28func TestNodeIteratorCoverage(t *testing.T) {
29 // Create some arbitrary test state to iterate
30 db, root, _ := makeTestState()
31
32 state, err := New(root, db)
33 if err != nil {
34 t.Fatalf("failed to create state trie at %x: %v", root, err)
35 }
36 // Gather all the node hashes found by the iterator
37 hashes := make(map[common.Hash]struct{})
38 for it := NewNodeIterator(state); it.Next(); {
39 if it.Hash != (common.Hash{}) {
40 hashes[it.Hash] = struct{}{}
41 }
42 }
43 // Cross check the iterated hashes and the database/nodepool content
44 for hash := range hashes {
45 if _, err := db.TrieDB().Node(hash); err != nil {
46 t.Errorf("failed to retrieve reported node %x", hash)
47 }
48 }
49 for _, hash := range db.TrieDB().Nodes() {
50 if _, ok := hashes[hash]; !ok {
51 t.Errorf("state entry not reported %x", hash)
52 }
53 }
54 for _, key := range db.TrieDB().DiskDB().(*database.MemDatabase).Keys() {
55 if bytes.HasPrefix(key, []byte("secure-key-")) {
56 continue
57 }
58 if _, ok := hashes[common.BytesToHash(key)]; !ok {
59 t.Errorf("state entry not reported %x", key)
60 }
61 }
62}

Callers

nothing calls this directly

Calls 6

NextMethod · 0.95
makeTestStateFunction · 0.85
NewNodeIteratorFunction · 0.85
NewFunction · 0.70
TrieDBMethod · 0.65
KeysMethod · 0.45

Tested by

no test coverage detected