diff --git a/lntest/harness.go b/lntest/harness.go index f32f67773..fe0caa84d 100644 --- a/lntest/harness.go +++ b/lntest/harness.go @@ -481,6 +481,14 @@ func (h *HarnessTest) NewNode(name string, err = node.Start(h.runCtx) require.NoError(h, err, "failed to start node %s", node.Name()) + // Get the miner's best block hash. + bestBlock, err := h.miner.Client.GetBestBlockHash() + require.NoError(h, err, "unable to get best block hash") + + // Wait until the node's chain backend is synced to the miner's best + // block. + h.WaitForBlockchainSyncTo(node, *bestBlock) + return node } @@ -490,12 +498,7 @@ func (h *HarnessTest) NewNode(name string, func (h *HarnessTest) NewNodeWithCoins(name string, extraArgs []string) *node.HarnessNode { - node, err := h.manager.newNode(h.T, name, extraArgs, nil, false) - require.NoErrorf(h, err, "unable to create new node for %s", name) - - // Start the node. - err = node.Start(h.runCtx) - require.NoError(h, err, "failed to start node %s", node.Name()) + node := h.NewNode(name, extraArgs) // Load up the wallets of the node with 5 outputs of 1 BTC each. const ( diff --git a/lntest/harness_assertion.go b/lntest/harness_assertion.go index fd4a0dfd7..d5835fe57 100644 --- a/lntest/harness_assertion.go +++ b/lntest/harness_assertion.go @@ -61,9 +61,9 @@ func (h *HarnessTest) WaitForBlockchainSync(hn *node.HarnessNode) { // WaitForBlockchainSyncTo waits until the node is synced to bestBlock. func (h *HarnessTest) WaitForBlockchainSyncTo(hn *node.HarnessNode, - bestBlock *wire.MsgBlock) { + bestBlock chainhash.Hash) { - bestBlockHash := bestBlock.BlockHash().String() + bestBlockHash := bestBlock.String() err := wait.NoError(func() error { resp := hn.RPC.GetInfo() if resp.SyncedToChain { @@ -1629,7 +1629,7 @@ func (h *HarnessTest) AssertActiveNodesSynced() { // AssertActiveNodesSyncedTo asserts all active nodes have synced to the // provided bestBlock. -func (h *HarnessTest) AssertActiveNodesSyncedTo(bestBlock *wire.MsgBlock) { +func (h *HarnessTest) AssertActiveNodesSyncedTo(bestBlock chainhash.Hash) { for _, node := range h.manager.activeNodes { h.WaitForBlockchainSyncTo(node, bestBlock) } diff --git a/lntest/harness_miner.go b/lntest/harness_miner.go index 17fd864ed..cde9663c4 100644 --- a/lntest/harness_miner.go +++ b/lntest/harness_miner.go @@ -41,7 +41,7 @@ func (h *HarnessTest) MineBlocks(num int) { // Check the block doesn't have any txns except the coinbase. if len(block.Transactions) <= 1 { // Make sure all the active nodes are synced. - h.AssertActiveNodesSyncedTo(block) + h.AssertActiveNodesSyncedTo(block.BlockHash()) // Mine the next block. continue @@ -116,7 +116,7 @@ func (h *HarnessTest) MineBlocksAndAssertNumTxes(num uint32, // Finally, make sure all the active nodes are synced. bestBlock := blocks[len(blocks)-1] - h.AssertActiveNodesSyncedTo(bestBlock) + h.AssertActiveNodesSyncedTo(bestBlock.BlockHash()) return blocks } @@ -157,7 +157,7 @@ func (h *HarnessTest) cleanMempool() { bestBlock = blocks[len(blocks)-1] // Make sure all the active nodes are synced. - h.AssertActiveNodesSyncedTo(bestBlock) + h.AssertActiveNodesSyncedTo(bestBlock.BlockHash()) return fmt.Errorf("still have %d txes in mempool", len(mem)) }, wait.MinerMempoolTimeout)