mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-04 01:36:24 +01:00
channeldb: add failing test to demonstrate panic w/o graph cache
This test panics as is, since we assume the inbound edge is always there.
This commit is contained in:
parent
ea5d43a2a8
commit
fc2a29f717
2 changed files with 42 additions and 0 deletions
|
@ -60,6 +60,8 @@ func (n *node) ForEachChannel(tx kvdb.RTx,
|
|||
// TestGraphCacheAddNode tests that a channel going from node A to node B can be
|
||||
// cached correctly, independent of the direction we add the channel as.
|
||||
func TestGraphCacheAddNode(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
runTest := func(nodeA, nodeB route.Vertex) {
|
||||
t.Helper()
|
||||
|
||||
|
|
|
@ -3692,3 +3692,43 @@ func BenchmarkForEachChannel(b *testing.B) {
|
|||
require.NoError(b, err)
|
||||
}
|
||||
}
|
||||
|
||||
// TestGraphCacheForEachNodeChannel tests that the ForEachNodeChannel method
|
||||
// works as expected, and is able to handle nil self edges.
|
||||
func TestGraphCacheForEachNodeChannel(t *testing.T) {
|
||||
graph, cleanUp, err := MakeTestGraph()
|
||||
defer cleanUp()
|
||||
require.NoError(t, err)
|
||||
|
||||
// Unset the channel graph cache to simulate the user running with the
|
||||
// option turned off.
|
||||
graph.graphCache = nil
|
||||
|
||||
node1, err := createTestVertex(graph.db)
|
||||
require.Nil(t, err)
|
||||
err = graph.AddLightningNode(node1)
|
||||
require.Nil(t, err)
|
||||
node2, err := createTestVertex(graph.db)
|
||||
require.Nil(t, err)
|
||||
err = graph.AddLightningNode(node2)
|
||||
require.Nil(t, err)
|
||||
|
||||
// Create an edge and add it to the db.
|
||||
edgeInfo, _, _ := createChannelEdge(graph.db, node1, node2)
|
||||
|
||||
// Add the channel, but only insert a single edge into the graph.
|
||||
require.NoError(t, graph.AddChannelEdge(edgeInfo))
|
||||
|
||||
// We should be able to accumulate the single channel added, even
|
||||
// though we have a nil edge policy here.
|
||||
var numChans int
|
||||
err = graph.ForEachNodeChannel(nil, node1.PubKeyBytes,
|
||||
func(channel *DirectedChannel) error {
|
||||
|
||||
numChans++
|
||||
return nil
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
require.Equal(t, numChans, 1)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue