mirror of
https://github.com/lightningnetwork/lnd.git
synced 2024-11-19 01:43:16 +01:00
102 lines
3.4 KiB
Go
102 lines
3.4 KiB
Go
package rpc
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/btcsuite/btcd/wire"
|
|
"github.com/lightningnetwork/lnd/lnrpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/chainrpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/devrpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/neutrinorpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/peersrpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/routerrpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/signrpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/walletrpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/watchtowerrpc"
|
|
"github.com/lightningnetwork/lnd/lnrpc/wtclientrpc"
|
|
"github.com/lightningnetwork/lnd/lntest/wait"
|
|
"github.com/stretchr/testify/require"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
const (
|
|
DefaultTimeout = wait.DefaultTimeout
|
|
)
|
|
|
|
// HarnessRPC wraps all lnd's RPC clients into a single struct for easier
|
|
// access.
|
|
type HarnessRPC struct {
|
|
*testing.T
|
|
|
|
LN lnrpc.LightningClient
|
|
WalletUnlocker lnrpc.WalletUnlockerClient
|
|
Invoice invoicesrpc.InvoicesClient
|
|
Signer signrpc.SignerClient
|
|
Router routerrpc.RouterClient
|
|
WalletKit walletrpc.WalletKitClient
|
|
Watchtower watchtowerrpc.WatchtowerClient
|
|
WatchtowerClient wtclientrpc.WatchtowerClientClient
|
|
State lnrpc.StateClient
|
|
ChainClient chainrpc.ChainNotifierClient
|
|
ChainKit chainrpc.ChainKitClient
|
|
NeutrinoKit neutrinorpc.NeutrinoKitClient
|
|
Peer peersrpc.PeersClient
|
|
DevRPC devrpc.DevClient
|
|
|
|
// Name is the HarnessNode's name.
|
|
Name string
|
|
|
|
// runCtx is a context with cancel method. It's used to signal when the
|
|
// node needs to quit, and used as the parent context when spawning
|
|
// children contexts for RPC requests.
|
|
runCtx context.Context //nolint:containedctx
|
|
cancel context.CancelFunc
|
|
}
|
|
|
|
// NewHarnessRPC creates a new HarnessRPC with its own context inherted from
|
|
// the pass context.
|
|
func NewHarnessRPC(ctxt context.Context, t *testing.T, c *grpc.ClientConn,
|
|
name string) *HarnessRPC {
|
|
|
|
h := &HarnessRPC{
|
|
T: t,
|
|
LN: lnrpc.NewLightningClient(c),
|
|
Invoice: invoicesrpc.NewInvoicesClient(c),
|
|
Router: routerrpc.NewRouterClient(c),
|
|
WalletKit: walletrpc.NewWalletKitClient(c),
|
|
WalletUnlocker: lnrpc.NewWalletUnlockerClient(c),
|
|
Watchtower: watchtowerrpc.NewWatchtowerClient(c),
|
|
WatchtowerClient: wtclientrpc.NewWatchtowerClientClient(c),
|
|
Signer: signrpc.NewSignerClient(c),
|
|
State: lnrpc.NewStateClient(c),
|
|
ChainClient: chainrpc.NewChainNotifierClient(c),
|
|
ChainKit: chainrpc.NewChainKitClient(c),
|
|
NeutrinoKit: neutrinorpc.NewNeutrinoKitClient(c),
|
|
Peer: peersrpc.NewPeersClient(c),
|
|
DevRPC: devrpc.NewDevClient(c),
|
|
Name: name,
|
|
}
|
|
|
|
// Inherit parent context.
|
|
h.runCtx, h.cancel = context.WithCancel(ctxt)
|
|
return h
|
|
}
|
|
|
|
// MakeOutpoint returns the outpoint of the channel's funding transaction.
|
|
func (h *HarnessRPC) MakeOutpoint(cp *lnrpc.ChannelPoint) wire.OutPoint {
|
|
fundingTxID, err := lnrpc.GetChanPointFundingTxid(cp)
|
|
require.NoErrorf(h, err, "failed to make chanPoint", h.Name)
|
|
|
|
return wire.OutPoint{
|
|
Hash: *fundingTxID,
|
|
Index: cp.OutputIndex,
|
|
}
|
|
}
|
|
|
|
// NoError is a helper method to format the error message used in calling RPCs.
|
|
func (h *HarnessRPC) NoError(err error, operation string) {
|
|
require.NoErrorf(h, err, "%s: failed to call %s", h.Name, operation)
|
|
}
|