Skip to content

Commit 7cead01

Browse files
committed
make+perms: allow itest to run with dev build tag
The dev flag allows us to enable some of lnd's configuration flags that are only available for testing. To speed up any wallet interaction, we also add the lowscrypt build tag that chooses weak encryption for the wallet that is much faster (a couple of milliseconds vs. multiple seconds per wallet creation).
1 parent 9370c91 commit 7cead01

File tree

3 files changed

+98
-1
lines changed

3 files changed

+98
-1
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ DOCKER_TOOLS = docker run \
9494
-v $(shell bash -c "mkdir -p /tmp/go-lint-cache; echo /tmp/go-lint-cache"):/root/.cache/golangci-lint \
9595
-v $$(pwd):/build litd-tools
9696

97-
ITEST_TAGS := integration itest $(LND_RELEASE_TAGS)
97+
ITEST_TAGS := dev integration itest lowscrypt $(LND_RELEASE_TAGS)
9898
ITEST_LDFLAGS := $(call make_ldflags, $(ITEST_TAGS))
9999

100100
GREEN := "\\033[0;32m"

perms/mock.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
//go:build !dev
2+
// +build !dev
3+
14
package perms
25

36
import (

perms/mock_dev.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
//go:build dev
2+
// +build dev
3+
4+
package perms
5+
6+
import (
7+
"net"
8+
9+
"github.com/btcsuite/btcd/chaincfg"
10+
"github.com/lightningnetwork/lnd/autopilot"
11+
"github.com/lightningnetwork/lnd/chainreg"
12+
"github.com/lightningnetwork/lnd/channeldb"
13+
"github.com/lightningnetwork/lnd/lnrpc"
14+
"github.com/lightningnetwork/lnd/lnrpc/autopilotrpc"
15+
"github.com/lightningnetwork/lnd/lnrpc/chainrpc"
16+
"github.com/lightningnetwork/lnd/lnrpc/devrpc"
17+
"github.com/lightningnetwork/lnd/lnrpc/invoicesrpc"
18+
"github.com/lightningnetwork/lnd/lnrpc/neutrinorpc"
19+
"github.com/lightningnetwork/lnd/lnrpc/peersrpc"
20+
"github.com/lightningnetwork/lnd/lnrpc/routerrpc"
21+
"github.com/lightningnetwork/lnd/lnrpc/signrpc"
22+
"github.com/lightningnetwork/lnd/lnrpc/walletrpc"
23+
"github.com/lightningnetwork/lnd/lnrpc/watchtowerrpc"
24+
"github.com/lightningnetwork/lnd/lnrpc/wtclientrpc"
25+
"github.com/lightningnetwork/lnd/lntest/mock"
26+
"github.com/lightningnetwork/lnd/routing"
27+
"github.com/lightningnetwork/lnd/sweep"
28+
)
29+
30+
// mockConfig implements lnrpc.SubServerConfigDispatcher. It provides the
31+
// functionality required so that the lnrpc.GrpcHandler.CreateSubServer
32+
// function can be called without panicking.
33+
type mockConfig struct{}
34+
35+
var _ lnrpc.SubServerConfigDispatcher = (*mockConfig)(nil)
36+
37+
// FetchConfig is a mock implementation of lnrpc.SubServerConfigDispatcher. It
38+
// is used as a parameter to lnrpc.GrpcHandler.CreateSubServer and allows the
39+
// function to be called without panicking. This is useful because
40+
// CreateSubServer can be used to extract the permissions required by each
41+
// registered subserver.
42+
//
43+
// TODO(elle): remove this once the sub-server permission lists in LND have been
44+
// exported
45+
func (t *mockConfig) FetchConfig(subServerName string) (interface{}, bool) {
46+
switch subServerName {
47+
case "InvoicesRPC":
48+
return &invoicesrpc.Config{}, true
49+
case "WatchtowerClientRPC":
50+
return &wtclientrpc.Config{
51+
Resolver: func(_, _ string) (*net.TCPAddr, error) {
52+
return nil, nil
53+
},
54+
}, true
55+
case "AutopilotRPC":
56+
return &autopilotrpc.Config{
57+
Manager: &autopilot.Manager{},
58+
}, true
59+
case "ChainRPC":
60+
return &chainrpc.Config{
61+
ChainNotifier: &chainreg.NoChainBackend{},
62+
Chain: &mock.ChainIO{},
63+
}, true
64+
case "DevRPC":
65+
return &devrpc.Config{
66+
ActiveNetParams: &chaincfg.RegressionNetParams,
67+
GraphDB: &channeldb.ChannelGraph{},
68+
}, true
69+
case "NeutrinoKitRPC":
70+
return &neutrinorpc.Config{}, true
71+
case "PeersRPC":
72+
return &peersrpc.Config{}, true
73+
case "RouterRPC":
74+
return &routerrpc.Config{
75+
Router: &routing.ChannelRouter{},
76+
}, true
77+
case "SignRPC":
78+
return &signrpc.Config{
79+
Signer: &mock.DummySigner{},
80+
}, true
81+
case "WalletKitRPC":
82+
return &walletrpc.Config{
83+
FeeEstimator: &chainreg.NoChainBackend{},
84+
Wallet: &mock.WalletController{},
85+
KeyRing: &mock.SecretKeyRing{},
86+
Sweeper: &sweep.UtxoSweeper{},
87+
Chain: &mock.ChainIO{},
88+
}, true
89+
case "WatchtowerRPC":
90+
return &watchtowerrpc.Config{}, true
91+
default:
92+
return nil, false
93+
}
94+
}

0 commit comments

Comments
 (0)