Skip to content

Commit

Permalink
test: add tests for backend down
Browse files Browse the repository at this point in the history
add tests for backend down scenarios in LWK.
Add tests to handle scenarios where the backend services
(LWK and Electrs) are down during swaps.
  • Loading branch information
YusukeShimizu committed Jun 19, 2024
1 parent cd24c35 commit 2a3b3f4
Showing 1 changed file with 160 additions and 0 deletions.
160 changes: 160 additions & 0 deletions test/lwk_cln_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1480,3 +1480,163 @@ func Test_ClnCln_LWKLiquid_SwapOut(t *testing.T) {
csvClaimTest(t, params)
})
}

func Test_ClnCln_LWKLiquid_BackendDown(t *testing.T) {
IsIntegrationTest(t)
t.Parallel()
t.Run("lwkdown", func(t *testing.T) {
t.Parallel()
require := require.New(t)

bitcoind, liquidd, lightningds, scid, electrs, lwk := clnclnLWKLiquidSetup(t, uint64(math.Pow10(9)))
defer func() {
if t.Failed() {
filter := os.Getenv("PEERSWAP_TEST_FILTER")
pprintFail(
tailableProcess{
p: bitcoind.DaemonProcess,
lines: defaultLines,
},
tailableProcess{
p: liquidd.DaemonProcess,
lines: defaultLines,
},
tailableProcess{
p: lightningds[0].DaemonProcess,
filter: filter,
lines: defaultLines,
},
tailableProcess{
p: lightningds[1].DaemonProcess,
filter: filter,
lines: defaultLines,
},
tailableProcess{
p: electrs.Process,
lines: defaultLines,
},
tailableProcess{
p: lwk.Process,
lines: defaultLines,
},
)
}
}()

var channelBalances []uint64
var walletBalances []uint64
for _, lightningd := range lightningds {
b, err := lightningd.GetBtcBalanceSat()
require.NoError(err)
walletBalances = append(walletBalances, b)

b, err = lightningd.GetChannelBalanceSat(scid)
require.NoError(err)
channelBalances = append(channelBalances, b)
}

params := &testParams{
swapAmt: channelBalances[0] / 2,
scid: scid,
origTakerWallet: walletBalances[0],
origMakerWallet: walletBalances[1],
origTakerBalance: channelBalances[0],
origMakerBalance: channelBalances[1],
takerNode: lightningds[0],
makerNode: lightningds[1],
takerPeerswap: lightningds[0].DaemonProcess,
makerPeerswap: lightningds[1].DaemonProcess,
chainRpc: liquidd.RpcProxy,
chaind: liquidd,
confirms: LiquidConfirms,
csv: LiquidCsv,
swapType: swap.SWAPTYPE_OUT,
}
asset := "lbtc"

lwk.Process.Kill()

// Do swap.
var response map[string]interface{}
err := lightningds[1].Rpc.Request(&clightning.SwapOut{SatAmt: params.swapAmt, ShortChannelId: params.scid, Asset: asset}, &response)
require.Error(err)
})
t.Run("electrsdown", func(t *testing.T) {
t.Parallel()
require := require.New(t)

bitcoind, liquidd, lightningds, scid, electrs, lwk := clnclnLWKLiquidSetup(t, uint64(math.Pow10(9)))
defer func() {
if t.Failed() {
filter := os.Getenv("PEERSWAP_TEST_FILTER")
pprintFail(
tailableProcess{
p: bitcoind.DaemonProcess,
lines: defaultLines,
},
tailableProcess{
p: liquidd.DaemonProcess,
lines: defaultLines,
},
tailableProcess{
p: lightningds[0].DaemonProcess,
filter: filter,
lines: defaultLines,
},
tailableProcess{
p: lightningds[1].DaemonProcess,
filter: filter,
lines: defaultLines,
},
tailableProcess{
p: electrs.Process,
lines: defaultLines,
},
tailableProcess{
p: lwk.Process,
lines: defaultLines,
},
)
}
}()

var channelBalances []uint64
var walletBalances []uint64
for _, lightningd := range lightningds {
b, err := lightningd.GetBtcBalanceSat()
require.NoError(err)
walletBalances = append(walletBalances, b)

b, err = lightningd.GetChannelBalanceSat(scid)
require.NoError(err)
channelBalances = append(channelBalances, b)
}

params := &testParams{
swapAmt: channelBalances[0] / 2,
scid: scid,
origTakerWallet: walletBalances[0],
origMakerWallet: walletBalances[1],
origTakerBalance: channelBalances[0],
origMakerBalance: channelBalances[1],
takerNode: lightningds[0],
makerNode: lightningds[1],
takerPeerswap: lightningds[0].DaemonProcess,
makerPeerswap: lightningds[1].DaemonProcess,
chainRpc: liquidd.RpcProxy,
chaind: liquidd,
confirms: LiquidConfirms,
csv: LiquidCsv,
swapType: swap.SWAPTYPE_OUT,
}
asset := "lbtc"

electrs.Process.Kill()

// Do swap.
var response map[string]interface{}
err := lightningds[1].Rpc.Request(&clightning.SwapOut{SatAmt: params.swapAmt, ShortChannelId: params.scid, Asset: asset}, &response)
require.Error(err)
})

}

0 comments on commit 2a3b3f4

Please sign in to comment.