lntest/itest: add new test for wumbo channels
This commit is contained in:
parent
6c322c5eb2
commit
f61e1ac568
@ -15200,6 +15200,10 @@ var testsCases = []*testCase{
|
|||||||
name: "intercept forwarded htlc packets",
|
name: "intercept forwarded htlc packets",
|
||||||
test: testForwardInterceptor,
|
test: testForwardInterceptor,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "wumbo channels",
|
||||||
|
test: testWumboChannels,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestLightningNetworkDaemon performs a series of integration tests amongst a
|
// TestLightningNetworkDaemon performs a series of integration tests amongst a
|
||||||
|
92
lntest/itest/lnd_wumbo_channels_test.go
Normal file
92
lntest/itest/lnd_wumbo_channels_test.go
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
// +build rpctest
|
||||||
|
|
||||||
|
package itest
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/btcsuite/btcutil"
|
||||||
|
"github.com/lightningnetwork/lnd"
|
||||||
|
"github.com/lightningnetwork/lnd/lntest"
|
||||||
|
)
|
||||||
|
|
||||||
|
// testWumboChannels tests that only a node that signals wumbo channel
|
||||||
|
// acceptances will allow a wumbo channel to be created. Additionally, if a
|
||||||
|
// node is running with mini channels only enabled, then they should reject any
|
||||||
|
// inbound wumbo channel requests.
|
||||||
|
func testWumboChannels(net *lntest.NetworkHarness, t *harnessTest) {
|
||||||
|
// With all the channel types exercised, we'll now make sure the wumbo
|
||||||
|
// signalling support works properly.
|
||||||
|
//
|
||||||
|
// We'll make two new nodes, with one of them signalling support for
|
||||||
|
// wumbo channels while the other doesn't.
|
||||||
|
wumboNode, err := net.NewNode(
|
||||||
|
"wumbo", []string{"--protocol.wumbo-channels"},
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to create new node: %v", err)
|
||||||
|
}
|
||||||
|
defer shutdownAndAssert(net, t, wumboNode)
|
||||||
|
miniNode, err := net.NewNode("mini", nil)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to create new node: %v", err)
|
||||||
|
}
|
||||||
|
defer shutdownAndAssert(net, t, miniNode)
|
||||||
|
|
||||||
|
// We'll send coins to the wumbo node, as it'll be the one imitating
|
||||||
|
// the channel funding.
|
||||||
|
ctxb := context.Background()
|
||||||
|
err = net.SendCoins(ctxb, btcutil.SatoshiPerBitcoin, wumboNode)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to send coins to carol: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next we'll connect both nodes, then attempt to make a wumbo channel
|
||||||
|
// funding request to the mini node we created above. The wumbo request
|
||||||
|
// should fail as the node isn't advertising wumbo channels.
|
||||||
|
err = net.EnsureConnected(ctxb, wumboNode, miniNode)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to connect peers: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
chanAmt := lnd.MaxBtcFundingAmount + 1
|
||||||
|
_, err = net.OpenChannel(
|
||||||
|
ctxb, wumboNode, miniNode, lntest.OpenChannelParams{
|
||||||
|
Amt: chanAmt,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("expected wumbo channel funding to fail")
|
||||||
|
}
|
||||||
|
|
||||||
|
// The test should indicate a failure due to the channel being too
|
||||||
|
// large.
|
||||||
|
if !strings.Contains(err.Error(), "channel too large") {
|
||||||
|
t.Fatalf("channel should be rejected due to size, instead "+
|
||||||
|
"error was: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// We'll now make another wumbo node to accept our wumbo channel
|
||||||
|
// funding.
|
||||||
|
wumboNode2, err := net.NewNode(
|
||||||
|
"wumbo2", []string{"--protocol.wumbo-channels"},
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to create new node: %v", err)
|
||||||
|
}
|
||||||
|
defer shutdownAndAssert(net, t, wumboNode2)
|
||||||
|
|
||||||
|
// Creating a wumbo channel between these two nodes should succeed.
|
||||||
|
err = net.EnsureConnected(ctxb, wumboNode, wumboNode2)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unable to connect peers: %v", err)
|
||||||
|
}
|
||||||
|
chanPoint := openChannelAndAssert(
|
||||||
|
ctxb, t, net, wumboNode, wumboNode2,
|
||||||
|
lntest.OpenChannelParams{
|
||||||
|
Amt: chanAmt,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
closeChannelAndAssert(ctxb, t, net, wumboNode, chanPoint, false)
|
||||||
|
}
|
@ -192,3 +192,6 @@
|
|||||||
<time> [ERR] PEER: unable to close channel, ChannelID(<hex>) is unknown
|
<time> [ERR] PEER: unable to close channel, ChannelID(<hex>) is unknown
|
||||||
<time> [ERR] HSWC: ChannelLink(<chan>): unable to update signals
|
<time> [ERR] HSWC: ChannelLink(<chan>): unable to update signals
|
||||||
<time> [ERR] RPCS: [/routerrpc.Router/HtlcInterceptor]: rpc error: code = Canceled desc = context canceled
|
<time> [ERR] RPCS: [/routerrpc.Router/HtlcInterceptor]: rpc error: code = Canceled desc = context canceled
|
||||||
|
<time> [ERR] FNDG: received funding error from <hex>: chan_id=<hex>, err=channel too large
|
||||||
|
<time> [ERR] RPCS: [/lnrpc.Lightning/OpenChannel]: received funding error from <hex>: chan_id=<hex>, err=channel too large
|
||||||
|
<time> [ERR] RPCS: unable to open channel to NodeKey(<hex>): received funding error from <hex>: chan_id=<hex>, err=channel too large
|
||||||
|
Loading…
Reference in New Issue
Block a user