mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-02-22 22:25:24 +01:00
lntest: add HtlcModifier
support to node RPC harness
This commit enhances the itest LND node harness to include support for the new `HtlcModifier` RPC endpoint. At the same time we move another method to the correct file.
This commit is contained in:
parent
1975fa60e2
commit
0c6a1558d5
3 changed files with 65 additions and 14 deletions
|
@ -16,6 +16,7 @@ import (
|
||||||
"github.com/lightningnetwork/lnd/fn"
|
"github.com/lightningnetwork/lnd/fn"
|
||||||
"github.com/lightningnetwork/lnd/kvdb/etcd"
|
"github.com/lightningnetwork/lnd/kvdb/etcd"
|
||||||
"github.com/lightningnetwork/lnd/lnrpc"
|
"github.com/lightningnetwork/lnd/lnrpc"
|
||||||
|
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
|
||||||
"github.com/lightningnetwork/lnd/lnrpc/routerrpc"
|
"github.com/lightningnetwork/lnd/lnrpc/routerrpc"
|
||||||
"github.com/lightningnetwork/lnd/lnrpc/walletrpc"
|
"github.com/lightningnetwork/lnd/lnrpc/walletrpc"
|
||||||
"github.com/lightningnetwork/lnd/lntest/miner"
|
"github.com/lightningnetwork/lnd/lntest/miner"
|
||||||
|
@ -2071,8 +2072,42 @@ func (h *HarnessTest) ReceiveHtlcInterceptor(
|
||||||
require.Fail(h, "timeout", "timeout intercepting htlc")
|
require.Fail(h, "timeout", "timeout intercepting htlc")
|
||||||
|
|
||||||
case err := <-errChan:
|
case err := <-errChan:
|
||||||
require.Failf(h, "err from stream",
|
require.Failf(h, "err from HTLC interceptor stream",
|
||||||
"received err from stream: %v", err)
|
"received err from HTLC interceptor stream: %v", err)
|
||||||
|
|
||||||
|
case updateMsg := <-chanMsg:
|
||||||
|
return updateMsg
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReceiveInvoiceHtlcModification waits until a message is received on the
|
||||||
|
// invoice HTLC modifier stream or the timeout is reached.
|
||||||
|
func (h *HarnessTest) ReceiveInvoiceHtlcModification(
|
||||||
|
stream rpc.InvoiceHtlcModifierClient) *invoicesrpc.HtlcModifyRequest {
|
||||||
|
|
||||||
|
chanMsg := make(chan *invoicesrpc.HtlcModifyRequest)
|
||||||
|
errChan := make(chan error)
|
||||||
|
go func() {
|
||||||
|
// Consume one message. This will block until the message is
|
||||||
|
// received.
|
||||||
|
resp, err := stream.Recv()
|
||||||
|
if err != nil {
|
||||||
|
errChan <- err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
chanMsg <- resp
|
||||||
|
}()
|
||||||
|
|
||||||
|
select {
|
||||||
|
case <-time.After(DefaultTimeout):
|
||||||
|
require.Fail(h, "timeout", "timeout invoice HTLC modifier")
|
||||||
|
|
||||||
|
case err := <-errChan:
|
||||||
|
require.Failf(h, "err from invoice HTLC modifier stream",
|
||||||
|
"received err from invoice HTLC modifier stream: %v",
|
||||||
|
err)
|
||||||
|
|
||||||
case updateMsg := <-chanMsg:
|
case updateMsg := <-chanMsg:
|
||||||
return updateMsg
|
return updateMsg
|
||||||
|
|
|
@ -5,7 +5,6 @@ import (
|
||||||
|
|
||||||
"github.com/lightningnetwork/lnd/lnrpc"
|
"github.com/lightningnetwork/lnd/lnrpc"
|
||||||
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
|
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
|
||||||
"github.com/lightningnetwork/lnd/lnrpc/routerrpc"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// =====================
|
// =====================
|
||||||
|
@ -84,18 +83,19 @@ func (h *HarnessRPC) SubscribeSingleInvoice(rHash []byte) SingleInvoiceClient {
|
||||||
return client
|
return client
|
||||||
}
|
}
|
||||||
|
|
||||||
type TrackPaymentClient routerrpc.Router_TrackPaymentV2Client
|
type InvoiceHtlcModifierClient invoicesrpc.Invoices_HtlcModifierClient
|
||||||
|
|
||||||
// TrackPaymentV2 creates a subscription client for given invoice and
|
// InvoiceHtlcModifier makes an RPC call to the node's RouterClient and asserts.
|
||||||
// asserts its creation.
|
func (h *HarnessRPC) InvoiceHtlcModifier() (InvoiceHtlcModifierClient,
|
||||||
func (h *HarnessRPC) TrackPaymentV2(payHash []byte) TrackPaymentClient {
|
context.CancelFunc) {
|
||||||
req := &routerrpc.TrackPaymentRequest{PaymentHash: payHash}
|
|
||||||
|
|
||||||
// TrackPaymentV2 needs to have the context alive for the entire test
|
// InvoiceHtlcModifier needs to have the context alive for the entire
|
||||||
// case as the returned client will be used for send and receive events
|
// test case as the returned client will be used for send and receive
|
||||||
// stream. Thus we use runCtx here instead of a timeout context.
|
// events stream. Therefore, we use cancel context here instead of a
|
||||||
client, err := h.Router.TrackPaymentV2(h.runCtx, req)
|
// timeout context.
|
||||||
h.NoError(err, "TrackPaymentV2")
|
ctxt, cancel := context.WithCancel(h.runCtx)
|
||||||
|
resp, err := h.Invoice.HtlcModifier(ctxt)
|
||||||
|
h.NoError(err, "InvoiceHtlcModifier")
|
||||||
|
|
||||||
return client
|
return resp, cancel
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,3 +267,19 @@ func (h *HarnessRPC) TrackPayments(
|
||||||
|
|
||||||
return resp
|
return resp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type TrackPaymentClient routerrpc.Router_TrackPaymentV2Client
|
||||||
|
|
||||||
|
// TrackPaymentV2 creates a subscription client for given invoice and
|
||||||
|
// asserts its creation.
|
||||||
|
func (h *HarnessRPC) TrackPaymentV2(payHash []byte) TrackPaymentClient {
|
||||||
|
req := &routerrpc.TrackPaymentRequest{PaymentHash: payHash}
|
||||||
|
|
||||||
|
// TrackPaymentV2 needs to have the context alive for the entire test
|
||||||
|
// case as the returned client will be used for send and receive events
|
||||||
|
// stream. Thus we use runCtx here instead of a timeout context.
|
||||||
|
client, err := h.Router.TrackPaymentV2(h.runCtx, req)
|
||||||
|
h.NoError(err, "TrackPaymentV2")
|
||||||
|
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue