graph/db: version edge info and policy update tests

Convert testEdgeInfoUpdates and testBatchedUpdateEdgePolicy to run
against both v1 and v2 gossip versions, exercising the versioned
Store methods added in prior commits.
This commit is contained in:
Elle Mouton committed 2026-02-20 09:19:23 +02:00
1 parent 28fe3585ac
commit 672b999d22
3 files changed
+31 -33

No files matched your search

-7
View File
@@ -685,13 +685,6 @@ func (c *ChannelGraph) AddEdgeProof(chanID lnwire.ShortChannelID,
return c.db.AddEdgeProof(chanID, proof) return c.db.AddEdgeProof(chanID, proof)
} }
// ChannelID attempts to lookup the 8-byte compact channel ID.
func (c *ChannelGraph) ChannelID(v lnwire.GossipVersion,
chanPoint *wire.OutPoint) (uint64, error) {
return c.db.ChannelID(v, chanPoint)
}
// HighestChanID returns the "highest" known channel ID in the channel graph. // HighestChanID returns the "highest" known channel ID in the channel graph.
func (c *ChannelGraph) HighestChanID(ctx context.Context) (uint64, error) { func (c *ChannelGraph) HighestChanID(ctx context.Context) (uint64, error) {
return c.db.HighestChanID(ctx) return c.db.HighestChanID(ctx)
+29 -23
View File
@@ -178,6 +178,14 @@ var versionedTests = []versionedTest{
name: "node is public empty channel signature", name: "node is public empty channel signature",
test: testIsPublicNodeEmptyChannelSignature, test: testIsPublicNodeEmptyChannelSignature,
}, },
{
name: "edge info updates",
test: testEdgeInfoUpdates,
},
{
name: "batched update edge policy",
test: testBatchedUpdateEdgePolicy,
},
} }
// TestVersionedDBs runs various tests against both v1 and v2 versioned // TestVersionedDBs runs various tests against both v1 and v2 versioned
@@ -1173,29 +1181,27 @@ func createChannelEdge(node1, node2 *models.Node,
return edgeInfo, edge1, edge2 return edgeInfo, edge1, edge2
} }
func TestEdgeInfoUpdates(t *testing.T) { func testEdgeInfoUpdates(t *testing.T, v lnwire.GossipVersion) {
t.Parallel() t.Parallel()
ctx := t.Context() ctx := t.Context()
graph := MakeTestGraph(t) graph := NewVersionedGraph(MakeTestGraph(t), v)
// We'd like to test the update of edges inserted into the database, so // We'd like to test the update of edges inserted into the database, so
// we create two vertexes to connect. // we create two vertexes to connect.
node1 := createTestVertex(t, lnwire.GossipVersion1) node1 := createTestVertex(t, v)
if err := graph.AddNode(ctx, node1); err != nil { if err := graph.AddNode(ctx, node1); err != nil {
t.Fatalf("unable to add node: %v", err) t.Fatalf("unable to add node: %v", err)
} }
assertNodeInCache(t, graph, node1, testFeatures) assertNodeInCache(t, graph.ChannelGraph, node1, testFeatures)
node2 := createTestVertex(t, lnwire.GossipVersion1) node2 := createTestVertex(t, v)
if err := graph.AddNode(ctx, node2); err != nil { if err := graph.AddNode(ctx, node2); err != nil {
t.Fatalf("unable to add node: %v", err) t.Fatalf("unable to add node: %v", err)
} }
assertNodeInCache(t, graph, node2, testFeatures) assertNodeInCache(t, graph.ChannelGraph, node2, testFeatures)
// Create an edge and add it to the db. // Create an edge and add it to the db.
edgeInfo, edge1, edge2 := createChannelEdge( edgeInfo, edge1, edge2 := createChannelEdge(node1, node2, v)
node1, node2, lnwire.GossipVersion1,
)
// Make sure inserting the policy at this point, before the edge info // Make sure inserting the policy at this point, before the edge info
// is added, will fail. // is added, will fail.
@@ -1207,7 +1213,7 @@ func TestEdgeInfoUpdates(t *testing.T) {
if err := graph.AddChannelEdge(ctx, edgeInfo); err != nil { if err := graph.AddChannelEdge(ctx, edgeInfo); err != nil {
t.Fatalf("unable to create channel edge: %v", err) t.Fatalf("unable to create channel edge: %v", err)
} }
assertEdgeWithNoPoliciesInCache(t, graph, edgeInfo) assertEdgeWithNoPoliciesInCache(t, graph.ChannelGraph, edgeInfo)
chanID := edgeInfo.ChannelID chanID := edgeInfo.ChannelID
outpoint := edgeInfo.ChannelPoint outpoint := edgeInfo.ChannelPoint
@@ -1217,17 +1223,19 @@ func TestEdgeInfoUpdates(t *testing.T) {
if err := graph.UpdateEdgePolicy(ctx, edge1); err != nil { if err := graph.UpdateEdgePolicy(ctx, edge1); err != nil {
t.Fatalf("unable to update edge: %v", err) t.Fatalf("unable to update edge: %v", err)
} }
assertEdgeWithPolicyInCache(t, graph, edgeInfo, edge1, true) assertEdgeWithPolicyInCache(
t, graph.ChannelGraph, edgeInfo, edge1, true,
)
if err := graph.UpdateEdgePolicy(ctx, edge2); err != nil { if err := graph.UpdateEdgePolicy(ctx, edge2); err != nil {
t.Fatalf("unable to update edge: %v", err) t.Fatalf("unable to update edge: %v", err)
} }
assertEdgeWithPolicyInCache(t, graph, edgeInfo, edge2, false) assertEdgeWithPolicyInCache(
t, graph.ChannelGraph, edgeInfo, edge2, false,
)
// Check for existence of the edge within the database, it should be // Check for existence of the edge within the database, it should be
// found. // found.
found, isZombie, err := graph.HasChannelEdge( found, isZombie, err := graph.HasChannelEdge(chanID)
lnwire.GossipVersion1, chanID,
)
require.NoError(t, err, "unable to query for edge") require.NoError(t, err, "unable to query for edge")
if !found { if !found {
t.Fatalf("graph should have of inserted edge") t.Fatalf("graph should have of inserted edge")
@@ -1238,7 +1246,7 @@ func TestEdgeInfoUpdates(t *testing.T) {
// We should also be able to retrieve the channelID only knowing the // We should also be able to retrieve the channelID only knowing the
// channel point of the channel. // channel point of the channel.
dbChanID, err := graph.ChannelID(lnwire.GossipVersion1, &outpoint) dbChanID, err := graph.ChannelID(&outpoint)
require.NoError(t, err, "unable to retrieve channel ID") require.NoError(t, err, "unable to retrieve channel ID")
if dbChanID != chanID { if dbChanID != chanID {
t.Fatalf("chan ID's mismatch, expected %v got %v", dbChanID, t.Fatalf("chan ID's mismatch, expected %v got %v", dbChanID,
@@ -5067,23 +5075,21 @@ func TestBatchedAddChannelEdge(t *testing.T) {
// TestBatchedUpdateEdgePolicy asserts that BatchedUpdateEdgePolicy properly // TestBatchedUpdateEdgePolicy asserts that BatchedUpdateEdgePolicy properly
// executes multiple UpdateEdgePolicy requests in a single txn. // executes multiple UpdateEdgePolicy requests in a single txn.
func TestBatchedUpdateEdgePolicy(t *testing.T) { func testBatchedUpdateEdgePolicy(t *testing.T, v lnwire.GossipVersion) {
t.Parallel() t.Parallel()
ctx := t.Context() ctx := t.Context()
graph := MakeTestGraph(t) graph := NewVersionedGraph(MakeTestGraph(t), v)
// We'd like to test the update of edges inserted into the database, so // We'd like to test the update of edges inserted into the database, so
// we create two vertexes to connect. // we create two vertexes to connect.
node1 := createTestVertex(t, lnwire.GossipVersion1) node1 := createTestVertex(t, v)
require.NoError(t, graph.AddNode(ctx, node1)) require.NoError(t, graph.AddNode(ctx, node1))
node2 := createTestVertex(t, lnwire.GossipVersion1) node2 := createTestVertex(t, v)
require.NoError(t, graph.AddNode(ctx, node2)) require.NoError(t, graph.AddNode(ctx, node2))
// Create an edge and add it to the db. // Create an edge and add it to the db.
edgeInfo, edge1, edge2 := createChannelEdge( edgeInfo, edge1, edge2 := createChannelEdge(node1, node2, v)
node1, node2, lnwire.GossipVersion1,
)
// Make sure inserting the policy at this point, before the edge info // Make sure inserting the policy at this point, before the edge info
// is added, will fail. // is added, will fail.
+2 -3
View File
@@ -4895,16 +4895,15 @@ func getAndBuildChanPolicies(ctx context.Context, cfg *sqldb.QueryConfig,
return nil, nil, nil return nil, nil, nil
} }
// TODO(elle): update to support v2 policies.
if dbPol1 != nil && if dbPol1 != nil &&
lnwire.GossipVersion(dbPol1.Version) != gossipV1 { !isKnownGossipVersion(lnwire.GossipVersion(dbPol1.Version)) {
return nil, nil, fmt.Errorf("unsupported policy1 version: %d", return nil, nil, fmt.Errorf("unsupported policy1 version: %d",
dbPol1.Version) dbPol1.Version)
} }
if dbPol2 != nil && if dbPol2 != nil &&
lnwire.GossipVersion(dbPol2.Version) != gossipV1 { !isKnownGossipVersion(lnwire.GossipVersion(dbPol2.Version)) {
return nil, nil, fmt.Errorf("unsupported policy2 version: %d", return nil, nil, fmt.Errorf("unsupported policy2 version: %d",
dbPol2.Version) dbPol2.Version)