• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lightningnetwork / lnd / 13566028875

27 Feb 2025 12:09PM UTC coverage: 49.396% (-9.4%) from 58.748%
13566028875

Pull #9555

github

ellemouton
graph/db: populate the graph cache in Start instead of during construction

In this commit, we move the graph cache population logic out of the
ChannelGraph constructor and into its Start method instead.
Pull Request #9555: graph: extract cache from CRUD [6]

34 of 54 new or added lines in 4 files covered. (62.96%)

27464 existing lines in 436 files now uncovered.

101095 of 204664 relevant lines covered (49.4%)

1.54 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

63.04
/shachain/utils.go
1
package shachain
2

3
import (
4
        "encoding/hex"
5

6
        "github.com/btcsuite/btcd/chaincfg/chainhash"
7
)
8

9
// getBit return bit on index at position.
10
func getBit(index index, position uint8) uint8 {
3✔
11
        return uint8((uint64(index) >> position) & 1)
3✔
12
}
3✔
13

14
func getPrefix(index index, position uint8) uint64 {
3✔
15
        //        + -------------------------- +
3✔
16
        //         | №  | value | mask | return |
3✔
17
        //        + -- + ----- + ---- + ------ +
3✔
18
        //        | 63 |         1   |  0   |         0   |
3✔
19
        //        | 62 |         0   |  0   |         0   |
3✔
20
        //        | 61 |   1   |  0   |         0   |
3✔
21
        //                ....
3✔
22
        //        |  4 |         1   |  0   |         0   |
3✔
23
        //        |  3 |   1   |  0   |         0   |
3✔
24
        //        |  2 |   1   |  1   |         1   | <--- position
3✔
25
        //        |  1 |   0   |  1   |         0   |
3✔
26
        //        |  0 |   1   |  1   |         1   |
3✔
27
        //        + -- + ----- + ---- + ------ +
3✔
28

3✔
29
        var zero uint64
3✔
30
        mask := (zero - 1) - uint64((1<<position)-1)
3✔
31
        return (uint64(index) & mask)
3✔
32
}
3✔
33

34
// countTrailingZeros counts number of trailing zero bits, this function is
35
// used to determine the number of element bucket.
36
func countTrailingZeros(index index) uint8 {
3✔
37
        var zeros uint8
3✔
38
        for ; zeros < maxHeight; zeros++ {
6✔
39

3✔
40
                if getBit(index, zeros) != 0 {
6✔
41
                        break
3✔
42
                }
43
        }
44

45
        return zeros
3✔
46
}
47

48
// hashFromString takes a hex-encoded string as input and creates an instance of
49
// chainhash.Hash. The chainhash.NewHashFromStr function not suitable because
50
// it reverse the given hash.
UNCOV
51
func hashFromString(s string) (*chainhash.Hash, error) {
×
UNCOV
52
        // Return an error if hash string is too long.
×
UNCOV
53
        if len(s) > chainhash.MaxHashStringSize {
×
54
                return nil, chainhash.ErrHashStrSize
×
55
        }
×
56

57
        // Hex decoder expects the hash to be a multiple of two.
UNCOV
58
        if len(s)%2 != 0 {
×
59
                s = "0" + s
×
60
        }
×
61

62
        // Convert string hash to bytes.
UNCOV
63
        buf, err := hex.DecodeString(s)
×
UNCOV
64
        if err != nil {
×
65
                return nil, err
×
66
        }
×
67

UNCOV
68
        hash, err := chainhash.NewHash(buf)
×
UNCOV
69
        if err != nil {
×
70
                return nil, err
×
71
        }
×
72

UNCOV
73
        return hash, nil
×
74
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc