Merge pull request #1582 from halseth/lnd-test-assert-waiting-close

[integration tests] assert waiting close also for force closes
This commit is contained in:
Olaoluwa Osuntokun authored and GitHub committed 2018-07-30 14:51:43 -04:00
commit 205a32380a
1 file changed
+37 -45
+37 -45
View File
@@ -220,25 +220,23 @@ func closeChannelAndAssert(ctx context.Context, t *harnessTest,
} }
chanPointStr := fmt.Sprintf("%v:%v", txid, fundingChanPoint.OutputIndex) chanPointStr := fmt.Sprintf("%v:%v", txid, fundingChanPoint.OutputIndex)
// If we didn't force close the transaction, at this point, the channel // At this point, the channel should now be marked as being in the
// should now be marked as being in the state of "waiting close". // state of "waiting close".
if !force { pendingChansRequest := &lnrpc.PendingChannelsRequest{}
pendingChansRequest := &lnrpc.PendingChannelsRequest{} pendingChanResp, err := node.PendingChannels(ctx, pendingChansRequest)
pendingChanResp, err := node.PendingChannels(ctx, pendingChansRequest) if err != nil {
if err != nil { t.Fatalf("unable to query for pending channels: %v", err)
t.Fatalf("unable to query for pending channels: %v", err) }
} var found bool
var found bool for _, pendingClose := range pendingChanResp.WaitingCloseChannels {
for _, pendingClose := range pendingChanResp.WaitingCloseChannels { if pendingClose.Channel.ChannelPoint == chanPointStr {
if pendingClose.Channel.ChannelPoint == chanPointStr { found = true
found = true break
break
}
}
if !found {
t.Fatalf("channel not marked as waiting close")
} }
} }
if !found {
t.Fatalf("channel not marked as waiting close")
}
// We'll now, generate a single block, wait for the final close status // We'll now, generate a single block, wait for the final close status
// update, then ensure that the closing transaction was included in the // update, then ensure that the closing transaction was included in the
@@ -254,28 +252,26 @@ func closeChannelAndAssert(ctx context.Context, t *harnessTest,
// Finally, the transaction should no longer be in the waiting close // Finally, the transaction should no longer be in the waiting close
// state as we've just mined a block that should include the closing // state as we've just mined a block that should include the closing
// transaction. This only applies for co-op close channels though. // transaction.
if !force { err = lntest.WaitPredicate(func() bool {
err = lntest.WaitPredicate(func() bool { pendingChansRequest := &lnrpc.PendingChannelsRequest{}
pendingChansRequest := &lnrpc.PendingChannelsRequest{} pendingChanResp, err := node.PendingChannels(
pendingChanResp, err := node.PendingChannels( ctx, pendingChansRequest,
ctx, pendingChansRequest, )
) if err != nil {
if err != nil { return false
}
for _, pendingClose := range pendingChanResp.WaitingCloseChannels {
if pendingClose.Channel.ChannelPoint == chanPointStr {
return false return false
} }
for _, pendingClose := range pendingChanResp.WaitingCloseChannels {
if pendingClose.Channel.ChannelPoint == chanPointStr {
return false
}
}
return true
}, time.Second*15)
if err != nil {
t.Fatalf("closing transaction not marked as fully closed")
} }
return true
}, time.Second*15)
if err != nil {
t.Fatalf("closing transaction not marked as fully closed")
} }
return closingTxid return closingTxid
@@ -8130,21 +8126,17 @@ func testMultiHopRemoteForceCloseOnChainHtlcTimeout(net *lntest.NetworkHarness,
t.Fatalf(predErr.Error()) t.Fatalf(predErr.Error())
} }
// We'll mine csvDelay blocks in order to generate the sweep transaction // Bob can sweep his output immediately.
// of Bob's funding output. _, err = waitForTxInMempool(net.Miner.Node, 20*time.Second)
if _, err := net.Miner.Node.Generate(csvDelay - 1); err != nil {
t.Fatalf("unable to generate blocks: %v", err)
}
_, err = waitForTxInMempool(net.Miner.Node, 10*time.Second)
if err != nil { if err != nil {
t.Fatalf("unable to find bob's funding output sweep tx: %v", err) t.Fatalf("unable to find bob's funding output sweep tx: %v",
err)
} }
// Next, we'll mine enough blocks for the HTLC to expire. At this // Next, we'll mine enough blocks for the HTLC to expire. At this
// point, Bob should hand off the output to his internal utxo nursery, // point, Bob should hand off the output to his internal utxo nursery,
// which will broadcast a sweep transaction. // which will broadcast a sweep transaction.
if _, err := net.Miner.Node.Generate(finalCltvDelta - csvDelay - 1); err != nil { if _, err := net.Miner.Node.Generate(finalCltvDelta - 1); err != nil {
t.Fatalf("unable to generate blocks: %v", err) t.Fatalf("unable to generate blocks: %v", err)
} }