routing: add private key attribute in router test
This commit is contained in:
parent
9062ab1671
commit
fc113c7508
@ -118,10 +118,13 @@ type testGraph struct {
|
||||
|
||||
// testNode represents a node within the test graph above. We skip certain
|
||||
// information such as the node's IP address as that information isn't needed
|
||||
// for our tests.
|
||||
// for our tests. Private keys are optional. If set, they should be consistent
|
||||
// with the public key. The private key is used to sign error messages
|
||||
// sent from the node.
|
||||
type testNode struct {
|
||||
Source bool `json:"source"`
|
||||
PubKey string `json:"pubkey"`
|
||||
PrivKey string `json:"privkey"`
|
||||
Alias string `json:"alias"`
|
||||
}
|
||||
|
||||
@ -200,6 +203,7 @@ func parseTestGraph(path string) (*testGraphInstance, error) {
|
||||
}
|
||||
|
||||
aliasMap := make(map[string]route.Vertex)
|
||||
privKeyMap := make(map[string]*btcec.PrivateKey)
|
||||
var source *channeldb.LightningNode
|
||||
|
||||
// First we insert all the nodes within the graph as vertexes.
|
||||
@ -230,6 +234,33 @@ func parseTestGraph(path string) (*testGraphInstance, error) {
|
||||
// alias map for easy lookup.
|
||||
aliasMap[node.Alias] = dbNode.PubKeyBytes
|
||||
|
||||
// private keys are needed for signing error messages. If set
|
||||
// check the consistency with the public key.
|
||||
privBytes, err := hex.DecodeString(node.PrivKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(privBytes) > 0 {
|
||||
key, derivedPub := btcec.PrivKeyFromBytes(
|
||||
btcec.S256(), privBytes,
|
||||
)
|
||||
|
||||
if !bytes.Equal(
|
||||
pubBytes, derivedPub.SerializeCompressed(),
|
||||
) {
|
||||
|
||||
return nil, fmt.Errorf("%s public key and "+
|
||||
"private key are inconsistent\n"+
|
||||
"got %x\nwant %x\n",
|
||||
node.Alias,
|
||||
derivedPub.SerializeCompressed(),
|
||||
pubBytes,
|
||||
)
|
||||
}
|
||||
|
||||
privKeyMap[node.Alias] = key
|
||||
}
|
||||
|
||||
// If the node is tagged as the source, then we create a
|
||||
// pointer to is so we can mark the source in the graph
|
||||
// properly.
|
||||
@ -240,7 +271,8 @@ func parseTestGraph(path string) (*testGraphInstance, error) {
|
||||
// node can be the source in the graph.
|
||||
if source != nil {
|
||||
return nil, errors.New("JSON is invalid " +
|
||||
"multiple nodes are tagged as the source")
|
||||
"multiple nodes are tagged as the " +
|
||||
"source")
|
||||
}
|
||||
|
||||
source = dbNode
|
||||
@ -330,6 +362,7 @@ func parseTestGraph(path string) (*testGraphInstance, error) {
|
||||
graph: graph,
|
||||
cleanUp: cleanUp,
|
||||
aliasMap: aliasMap,
|
||||
privKeyMap: privKeyMap,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,8 @@ type testCtx struct {
|
||||
|
||||
aliases map[string]route.Vertex
|
||||
|
||||
privKeys map[string]*btcec.PrivateKey
|
||||
|
||||
chain *mockChain
|
||||
|
||||
chainView *mockChainView
|
||||
@ -151,6 +153,7 @@ func createTestCtxFromGraphInstanceAssumeValid(startingHeight uint32,
|
||||
router: router,
|
||||
graph: graphInstance.graph,
|
||||
aliases: graphInstance.aliasMap,
|
||||
privKeys: graphInstance.privKeyMap,
|
||||
chain: chain,
|
||||
chainView: chainView,
|
||||
}
|
||||
|
11
routing/testdata/basic_graph.json
vendored
11
routing/testdata/basic_graph.json
vendored
@ -39,7 +39,8 @@
|
||||
},
|
||||
{
|
||||
"source": false,
|
||||
"pubkey": "032b480de5d002f1a8fd1fe1bbf0a0f1b07760f65f052e66d56f15d71097c01add",
|
||||
"pubkey": "026c43a8ac1cd8519985766e90748e1e06871dab0ff6b8af27e8c1a61640481318",
|
||||
"privkey": "82b266f659bd83a976bac11b2cc442baec5508e84e61085d7ec2b0fc52156c87",
|
||||
"alias": "songoku"
|
||||
},
|
||||
{
|
||||
@ -154,7 +155,7 @@
|
||||
"capacity": 120000
|
||||
},
|
||||
{
|
||||
"node_1": "032b480de5d002f1a8fd1fe1bbf0a0f1b07760f65f052e66d56f15d71097c01add",
|
||||
"node_1": "026c43a8ac1cd8519985766e90748e1e06871dab0ff6b8af27e8c1a61640481318",
|
||||
"node_2": "0367cec75158a4129177bfb8b269cb586efe93d751b43800d456485e81c2620ca6",
|
||||
"channel_id": 12345,
|
||||
"channel_point": "89dc56859c6a082d15ba1a7f6cb6be3fea62e1746e2cb8497b1189155c21a233:0",
|
||||
@ -168,7 +169,7 @@
|
||||
"capacity": 100000
|
||||
},
|
||||
{
|
||||
"node_1": "032b480de5d002f1a8fd1fe1bbf0a0f1b07760f65f052e66d56f15d71097c01add",
|
||||
"node_1": "026c43a8ac1cd8519985766e90748e1e06871dab0ff6b8af27e8c1a61640481318",
|
||||
"node_2": "0367cec75158a4129177bfb8b269cb586efe93d751b43800d456485e81c2620ca6",
|
||||
"channel_id": 12345,
|
||||
"channel_point": "89dc56859c6a082d15ba1a7f6cb6be3fea62e1746e2cb8497b1189155c21a233:0",
|
||||
@ -182,7 +183,7 @@
|
||||
"capacity": 100000
|
||||
},
|
||||
{
|
||||
"node_1": "032b480de5d002f1a8fd1fe1bbf0a0f1b07760f65f052e66d56f15d71097c01add",
|
||||
"node_1": "026c43a8ac1cd8519985766e90748e1e06871dab0ff6b8af27e8c1a61640481318",
|
||||
"node_2": "036264734b40c9e91d3d990a8cdfbbe23b5b0b7ad3cd0e080a25dcd05d39eeb7eb",
|
||||
"channel_id": 3495345,
|
||||
"channel_point": "9f155756b33a0a6827713965babbd561b55f9520444ac5db0cf7cb2eb0deb5bc:0",
|
||||
@ -196,7 +197,7 @@
|
||||
"capacity": 110000
|
||||
},
|
||||
{
|
||||
"node_1": "032b480de5d002f1a8fd1fe1bbf0a0f1b07760f65f052e66d56f15d71097c01add",
|
||||
"node_1": "026c43a8ac1cd8519985766e90748e1e06871dab0ff6b8af27e8c1a61640481318",
|
||||
"node_2": "036264734b40c9e91d3d990a8cdfbbe23b5b0b7ad3cd0e080a25dcd05d39eeb7eb",
|
||||
"channel_id": 3495345,
|
||||
"channel_point": "9f155756b33a0a6827713965babbd561b55f9520444ac5db0cf7cb2eb0deb5bc:0",
|
||||
|
Loading…
Reference in New Issue
Block a user