itest: fix channel backup tests

This commit is contained in:
yyforyongyu 2024-04-07 16:02:07 +08:00
parent f68c14321b
commit 30c2b9f2df
No known key found for this signature in database
GPG Key ID: 9BCD95C4FF296868
2 changed files with 42 additions and 37 deletions

View File

@ -442,7 +442,8 @@ func (h *htlcTimeoutResolver) Resolve() (ContractResolver, error) {
log.Infof("%T(%v): HTLC has been swept with pre-image by "+ log.Infof("%T(%v): HTLC has been swept with pre-image by "+
"remote party during timeout flow! Adding pre-image to "+ "remote party during timeout flow! Adding pre-image to "+
"witness cache", h.htlcResolution.ClaimOutpoint) "witness cache", h, h.htlc.RHash[:],
h.htlcResolution.ClaimOutpoint)
return h.claimCleanUp(commitSpend) return h.claimCleanUp(commitSpend)
} }

View File

@ -1417,15 +1417,16 @@ func chanRestoreViaRPC(ht *lntest.HarnessTest, password []byte,
func assertTimeLockSwept(ht *lntest.HarnessTest, carol, dave *node.HarnessNode, func assertTimeLockSwept(ht *lntest.HarnessTest, carol, dave *node.HarnessNode,
carolStartingBalance, daveStartingBalance int64) { carolStartingBalance, daveStartingBalance int64) {
// We expect Carol to sweep her funds and also the anchor tx. In
// addition, Dave will also sweep his anchor output.
expectedTxes := 3
// Carol should sweep her funds immediately, as they are not // Carol should sweep her funds immediately, as they are not
// timelocked. // timelocked.
ht.AssertNumPendingSweeps(carol, 2) ht.AssertNumPendingSweeps(carol, 2)
ht.AssertNumPendingSweeps(dave, 1) ht.AssertNumPendingSweeps(dave, 1)
// We expect Carol to sweep her funds and her anchor in a single sweep
// tx. In addition, Dave will attempt to sweep his anchor output but
// fail due to the sweeping tx being uneconomical.
expectedTxes := 1
// Mine a block to trigger the sweeps. // Mine a block to trigger the sweeps.
ht.MineBlocks(1) ht.MineBlocks(1)
ht.Miner.AssertNumTxsInMempool(expectedTxes) ht.Miner.AssertNumTxsInMempool(expectedTxes)
@ -1457,11 +1458,11 @@ func assertTimeLockSwept(ht *lntest.HarnessTest, carol, dave *node.HarnessNode,
// The commit sweep resolver publishes the sweep tx at defaultCSV-1 and // The commit sweep resolver publishes the sweep tx at defaultCSV-1 and
// we already mined one block after the commitment was published, and // we already mined one block after the commitment was published, and
// one block to trigger Carol's sweeps, so take that into account. // one block to trigger Carol's sweeps, so take that into account.
ht.MineBlocks(1) ht.MineEmptyBlocks(1)
ht.AssertNumPendingSweeps(dave, 1) ht.AssertNumPendingSweeps(dave, 2)
// Mine a block to trigger the sweeps. // Mine a block to trigger the sweeps.
ht.MineBlocks(1) ht.MineEmptyBlocks(1)
daveSweep := ht.Miner.AssertNumTxsInMempool(1)[0] daveSweep := ht.Miner.AssertNumTxsInMempool(1)[0]
block := ht.MineBlocksAndAssertNumTxes(1, 1)[0] block := ht.MineBlocksAndAssertNumTxes(1, 1)[0]
ht.Miner.AssertTxInBlock(block, daveSweep) ht.Miner.AssertTxInBlock(block, daveSweep)
@ -1541,29 +1542,27 @@ func assertDLPExecuted(ht *lntest.HarnessTest,
// Dave should sweep his anchor only, since he still has the // Dave should sweep his anchor only, since he still has the
// lease CLTV constraint on his commitment output. We'd also // lease CLTV constraint on his commitment output. We'd also
// see Carol's anchor sweep here. // see Carol's anchor sweep here.
// Both Dave and Carol should have an anchor sweep request.
// Note that they cannot sweep them as these anchor sweepings
// are uneconomical.
ht.AssertNumPendingSweeps(dave, 1) ht.AssertNumPendingSweeps(dave, 1)
ht.AssertNumPendingSweeps(carol, 1) ht.AssertNumPendingSweeps(carol, 1)
// Mine a block to trigger the sweeps.
ht.MineBlocks(1)
blocksMined++
ht.Miner.AssertNumTxsInMempool(2)
// Mine anchor sweep txes for Carol and Dave.
ht.MineBlocksAndAssertNumTxes(1, 2)
blocksMined++
// After Carol's output matures, she should also reclaim her // After Carol's output matures, she should also reclaim her
// funds. // funds.
// //
// The commit sweep resolver publishes the sweep tx at // The commit sweep resolver publishes the sweep tx at
// defaultCSV-1 and we already mined one block after the // defaultCSV-1 and we already mined one block after the
// commitmment was published, so take that into account. // commitmment was published, so take that into account.
ht.MineBlocks(defaultCSV - blocksMined) ht.MineEmptyBlocks(int(defaultCSV - blocksMined))
ht.AssertNumPendingSweeps(carol, 1)
// Carol should have two sweep requests - one for her commit
// output and the other for her anchor.
ht.AssertNumPendingSweeps(carol, 2)
// Mine a block to trigger the sweep. // Mine a block to trigger the sweep.
ht.MineBlocks(1) ht.MineEmptyBlocks(1)
ht.MineBlocksAndAssertNumTxes(1, 1) ht.MineBlocksAndAssertNumTxes(1, 1)
// Now the channel should be fully closed also from Carol's POV. // Now the channel should be fully closed also from Carol's POV.
@ -1576,11 +1575,14 @@ func assertDLPExecuted(ht *lntest.HarnessTest,
resp.PendingForceClosingChannels[0].BlocksTilMaturity resp.PendingForceClosingChannels[0].BlocksTilMaturity
require.Positive(ht, blocksTilMaturity) require.Positive(ht, blocksTilMaturity)
ht.MineBlocks(uint32(blocksTilMaturity)) ht.MineEmptyBlocks(int(blocksTilMaturity))
ht.AssertNumPendingSweeps(dave, 1)
// Dave should have two sweep requests - one for his commit
// output and the other for his anchor.
ht.AssertNumPendingSweeps(dave, 2)
// Mine a block to trigger the sweep. // Mine a block to trigger the sweep.
ht.MineBlocks(1) ht.MineEmptyBlocks(1)
ht.MineBlocksAndAssertNumTxes(1, 1) ht.MineBlocksAndAssertNumTxes(1, 1)
// Now Dave should consider the channel fully closed. // Now Dave should consider the channel fully closed.
@ -1597,19 +1599,13 @@ func assertDLPExecuted(ht *lntest.HarnessTest,
} }
// Mine one block to trigger the sweeper to sweep. // Mine one block to trigger the sweeper to sweep.
ht.MineBlocks(1) ht.MineEmptyBlocks(1)
blocksMined++ blocksMined++
// For anchor channels, we expect three txns, // Expect one tx - the commitment sweep from Dave. For anchor
// 1. the anchor sweeping tx from Dave. // channels, we expect the two anchor sweeping txns to be
// 2. the anchor sweeping tx from Carol. // failed due they are uneconomical.
// 3. the commitment sweep from Dave. ht.MineBlocksAndAssertNumTxes(1, 1)
if lntest.CommitTypeHasAnchors(commitType) {
ht.MineBlocksAndAssertNumTxes(1, 3)
} else {
ht.MineBlocksAndAssertNumTxes(1, 1)
}
blocksMined++ blocksMined++
// Now Dave should consider the channel fully closed. // Now Dave should consider the channel fully closed.
@ -1621,11 +1617,19 @@ func assertDLPExecuted(ht *lntest.HarnessTest,
// The commit sweep resolver publishes the sweep tx at // The commit sweep resolver publishes the sweep tx at
// defaultCSV-1 and we already have blocks mined after the // defaultCSV-1 and we already have blocks mined after the
// commitmment was published, so take that into account. // commitmment was published, so take that into account.
ht.MineBlocks(defaultCSV - blocksMined) ht.MineEmptyBlocks(int(defaultCSV - blocksMined))
// Mine one block to trigger the sweeper to sweep. // Mine one block to trigger the sweeper to sweep.
ht.MineBlocks(1) ht.MineEmptyBlocks(1)
ht.AssertNumPendingSweeps(carol, 1)
// Carol should have two pending sweeps:
// 1. her commit output.
// 2. her anchor output, if this is anchor channel.
if lntest.CommitTypeHasAnchors(commitType) {
ht.AssertNumPendingSweeps(carol, 2)
} else {
ht.AssertNumPendingSweeps(carol, 1)
}
// Assert the sweeping tx is mined. // Assert the sweeping tx is mined.
ht.MineBlocksAndAssertNumTxes(1, 1) ht.MineBlocksAndAssertNumTxes(1, 1)