diff --git a/itest/lnd_amp_test.go b/itest/lnd_amp_test.go index 61b6d194a..a96911319 100644 --- a/itest/lnd_amp_test.go +++ b/itest/lnd_amp_test.go @@ -89,7 +89,14 @@ func testSendPaymentAMPInvoiceCase(ht *lntest.HarnessTest, // Increase Dave's fee to make the test deterministic. Otherwise it // would be unpredictable whether pathfinding would go through Charlie // or Dave for the first shard. - expectedPolicy := mts.updateDaveGlobalPolicy() + expectedPolicy := &lnrpc.RoutingPolicy{ + FeeBaseMsat: 500_000, + FeeRateMilliMsat: int64(0.001 * 1_000_000), + TimeLockDelta: 40, + MinHtlc: 1000, // default value + MaxHtlcMsat: 133_650_000, + } + mts.dave.UpdateGlobalPolicy(expectedPolicy) // Make sure Alice has heard it for both Dave's channels. ht.AssertChannelPolicyUpdate( @@ -382,10 +389,17 @@ func testSendPaymentAMP(ht *lntest.HarnessTest) { mts.openChannels(mppReq) chanPointAliceDave := mts.channelPoints[1] - // Increase Dave's fee to make the test deterministic. Otherwise it + // Increase Dave's fee to make the test deterministic. Otherwise, it // would be unpredictable whether pathfinding would go through Charlie // or Dave for the first shard. - expectedPolicy := mts.updateDaveGlobalPolicy() + expectedPolicy := &lnrpc.RoutingPolicy{ + FeeBaseMsat: 500_000, + FeeRateMilliMsat: int64(0.001 * 1_000_000), + TimeLockDelta: 40, + MinHtlc: 1000, // default value + MaxHtlcMsat: 133_650_000, + } + mts.dave.UpdateGlobalPolicy(expectedPolicy) // Make sure Alice has heard it. ht.AssertChannelPolicyUpdate( @@ -493,7 +507,7 @@ func testSendToRouteAMP(ht *lntest.HarnessTest) { // Alice -- Carol ---- Bob // \ / // \__ Dave ____/ - /// + // mppReq := &mppOpenChannelRequest{ // Since the channel Alice-> Carol will have to carry two // shards, we make it larger. diff --git a/itest/lnd_mpp_test.go b/itest/lnd_mpp_test.go index 9a28846dc..960626500 100644 --- a/itest/lnd_mpp_test.go +++ b/itest/lnd_mpp_test.go @@ -347,33 +347,3 @@ func (m *mppTestScenario) buildRoute(amt btcutil.Amount, return routeResp.Route } - -// updatePolicy updates a Dave's global channel policy and returns the expected -// policy for further check. It changes Dave's `FeeBaseMsat` from 1000 msat to -// 500,000 msat, and `FeeProportionalMillonths` from 1 msat to 1000 msat. -func (m *mppTestScenario) updateDaveGlobalPolicy() *lnrpc.RoutingPolicy { - const ( - baseFeeMsat = 500_000 - feeRate = 0.001 - maxHtlcMsat = 133_650_000 - ) - - expectedPolicy := &lnrpc.RoutingPolicy{ - FeeBaseMsat: baseFeeMsat, - FeeRateMilliMsat: feeRate * testFeeBase, - TimeLockDelta: 40, - MinHtlc: 1000, // default value - MaxHtlcMsat: maxHtlcMsat, - } - - updateFeeReq := &lnrpc.PolicyUpdateRequest{ - BaseFeeMsat: baseFeeMsat, - FeeRate: feeRate, - TimeLockDelta: 40, - Scope: &lnrpc.PolicyUpdateRequest_Global{Global: true}, - MaxHtlcMsat: maxHtlcMsat, - } - m.dave.RPC.UpdateChannelPolicy(updateFeeReq) - - return expectedPolicy -} diff --git a/itest/lnd_send_multi_path_payment_test.go b/itest/lnd_send_multi_path_payment_test.go index 10ad3f4a2..935997c8d 100644 --- a/itest/lnd_send_multi_path_payment_test.go +++ b/itest/lnd_send_multi_path_payment_test.go @@ -38,10 +38,17 @@ func testSendMultiPathPayment(ht *lntest.HarnessTest) { mts.openChannels(req) chanPointAliceDave := mts.channelPoints[1] - // Increase Dave's fee to make the test deterministic. Otherwise it + // Increase Dave's fee to make the test deterministic. Otherwise, it // would be unpredictable whether pathfinding would go through Charlie // or Dave for the first shard. - expectedPolicy := mts.updateDaveGlobalPolicy() + expectedPolicy := &lnrpc.RoutingPolicy{ + FeeBaseMsat: 500_000, + FeeRateMilliMsat: int64(0.001 * 1_000_000), + TimeLockDelta: 40, + MinHtlc: 1000, // default value + MaxHtlcMsat: 133_650_000, + } + mts.dave.UpdateGlobalPolicy(expectedPolicy) // Make sure Alice has heard it. ht.AssertChannelPolicyUpdate( diff --git a/lntest/harness.go b/lntest/harness.go index 23f5a8b43..c0a5da7f0 100644 --- a/lntest/harness.go +++ b/lntest/harness.go @@ -1614,8 +1614,8 @@ func (h *HarnessTest) mineTillForceCloseResolved(hn *node.HarnessNode) { // CreatePayReqs is a helper method that will create a slice of payment // requests for the given node. func (h *HarnessTest) CreatePayReqs(hn *node.HarnessNode, - paymentAmt btcutil.Amount, numInvoices int) ([]string, - [][]byte, []*lnrpc.Invoice) { + paymentAmt btcutil.Amount, numInvoices int, + routeHints ...*lnrpc.RouteHint) ([]string, [][]byte, []*lnrpc.Invoice) { payReqs := make([]string, numInvoices) rHashes := make([][]byte, numInvoices) @@ -1624,9 +1624,10 @@ func (h *HarnessTest) CreatePayReqs(hn *node.HarnessNode, preimage := h.Random32Bytes() invoice := &lnrpc.Invoice{ - Memo: "testing", - RPreimage: preimage, - Value: int64(paymentAmt), + Memo: "testing", + RPreimage: preimage, + Value: int64(paymentAmt), + RouteHints: routeHints, } resp := hn.RPC.AddInvoice(invoice) diff --git a/lntest/node/harness_node.go b/lntest/node/harness_node.go index 64c5eb9b6..71d55d9ea 100644 --- a/lntest/node/harness_node.go +++ b/lntest/node/harness_node.go @@ -876,6 +876,19 @@ func (hn *HarnessNode) RestoreDB() error { return nil } +// UpdateGlobalPolicy updates a node's global channel policy. +func (hn *HarnessNode) UpdateGlobalPolicy(policy *lnrpc.RoutingPolicy) { + updateFeeReq := &lnrpc.PolicyUpdateRequest{ + BaseFeeMsat: policy.FeeBaseMsat, + FeeRate: float64(policy.FeeRateMilliMsat) / + float64(1_000_000), + TimeLockDelta: policy.TimeLockDelta, + Scope: &lnrpc.PolicyUpdateRequest_Global{Global: true}, + MaxHtlcMsat: policy.MaxHtlcMsat, + } + hn.RPC.UpdateChannelPolicy(updateFeeReq) +} + func postgresDatabaseDsn(dbName string) string { return fmt.Sprintf(postgresDsn, dbName) }