mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-02-22 06:21:40 +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/kvdb/etcd"
|
||||
"github.com/lightningnetwork/lnd/lnrpc"
|
||||
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
|
||||
"github.com/lightningnetwork/lnd/lnrpc/routerrpc"
|
||||
"github.com/lightningnetwork/lnd/lnrpc/walletrpc"
|
||||
"github.com/lightningnetwork/lnd/lntest/miner"
|
||||
|
@ -2071,8 +2072,42 @@ func (h *HarnessTest) ReceiveHtlcInterceptor(
|
|||
require.Fail(h, "timeout", "timeout intercepting htlc")
|
||||
|
||||
case err := <-errChan:
|
||||
require.Failf(h, "err from stream",
|
||||
"received err from stream: %v", err)
|
||||
require.Failf(h, "err from HTLC interceptor stream",
|
||||
"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:
|
||||
return updateMsg
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
|
||||
"github.com/lightningnetwork/lnd/lnrpc"
|
||||
"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
|
||||
}
|
||||
|
||||
type TrackPaymentClient routerrpc.Router_TrackPaymentV2Client
|
||||
type InvoiceHtlcModifierClient invoicesrpc.Invoices_HtlcModifierClient
|
||||
|
||||
// TrackPaymentV2 creates a subscription client for given invoice and
|
||||
// asserts its creation.
|
||||
func (h *HarnessRPC) TrackPaymentV2(payHash []byte) TrackPaymentClient {
|
||||
req := &routerrpc.TrackPaymentRequest{PaymentHash: payHash}
|
||||
// InvoiceHtlcModifier makes an RPC call to the node's RouterClient and asserts.
|
||||
func (h *HarnessRPC) InvoiceHtlcModifier() (InvoiceHtlcModifierClient,
|
||||
context.CancelFunc) {
|
||||
|
||||
// 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")
|
||||
// InvoiceHtlcModifier needs to have the context alive for the entire
|
||||
// test case as the returned client will be used for send and receive
|
||||
// events stream. Therefore, we use cancel context here instead of a
|
||||
// timeout context.
|
||||
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
|
||||
}
|
||||
|
||||
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