public void BlockStoreCanRecoverOnStartup() { using (NodeBuilder builder = NodeBuilder.Create(this)) { CoreNode stratisNodeSync = builder.CreateStratisPowNode(); builder.StartAll(); stratisNodeSync.NotInIBD(); // generate blocks and wait for the downloader to pickup stratisNodeSync.SetDummyMinerSecret(new BitcoinSecret(new Key(), stratisNodeSync.FullNode.Network)); stratisNodeSync.GenerateStratisWithMiner(10); TestHelper.WaitLoop(() => TestHelper.IsNodeSynced(stratisNodeSync)); // set the tip of best chain some blocks in the apst stratisNodeSync.FullNode.Chain.SetTip(stratisNodeSync.FullNode.Chain.GetBlock(stratisNodeSync.FullNode.Chain.Height - 5)); // stop the node it will persist the chain with the reset tip stratisNodeSync.FullNode.Dispose(); CoreNode newNodeInstance = builder.CloneStratisNode(stratisNodeSync); // load the node, this should hit the block store recover code newNodeInstance.Start(); // check that store recovered to be the same as the best chain. Assert.Equal(newNodeInstance.FullNode.Chain.Tip.HashBlock, newNodeInstance.FullNode.GetBlockStoreTip().HashBlock); //TestHelper.WaitLoop(() => TestHelper.IsNodeSynced(stratisNodeSync)); } }
public void WalletCanRecoverOnStartup() { using (NodeBuilder builder = NodeBuilder.Create(this)) { CoreNode stratisNodeSync = builder.CreateStratisPowNode(this.network); builder.StartAll(); stratisNodeSync.NotInIBD(); // get a key from the wallet Mnemonic mnemonic = stratisNodeSync.FullNode.WalletManager().CreateWallet("123456", "mywallet"); Assert.Equal(12, mnemonic.Words.Length); HdAddress addr = stratisNodeSync.FullNode.WalletManager().GetUnusedAddress(new WalletAccountReference("mywallet", "account 0")); Features.Wallet.Wallet wallet = stratisNodeSync.FullNode.WalletManager().GetWalletByName("mywallet"); Key key = wallet.GetExtendedPrivateKeyForAddress("123456", addr).PrivateKey; stratisNodeSync.SetDummyMinerSecret(key.GetBitcoinSecret(stratisNodeSync.FullNode.Network)); stratisNodeSync.GenerateStratisWithMiner(10); TestHelper.WaitLoop(() => TestHelper.IsNodeSynced(stratisNodeSync)); // set the tip of best chain some blocks in the apst stratisNodeSync.FullNode.Chain.SetTip(stratisNodeSync.FullNode.Chain.GetBlock(stratisNodeSync.FullNode.Chain.Height - 5)); // stop the node it will persist the chain with the reset tip stratisNodeSync.FullNode.Dispose(); CoreNode newNodeInstance = builder.CloneStratisNode(stratisNodeSync); // load the node, this should hit the block store recover code newNodeInstance.Start(); // check that store recovered to be the same as the best chain. Assert.Equal(newNodeInstance.FullNode.Chain.Tip.HashBlock, newNodeInstance.FullNode.WalletManager().WalletTipHash); } }
public void BlockStoreCanRecoverOnStartup() { using (NodeBuilder builder = NodeBuilder.Create(this)) { CoreNode stratisNodeSync = builder.CreateStratisPowNode(this.regTest); builder.StartAll(); stratisNodeSync.NotInIBD().WithWallet(); TestHelper.MineBlocks(stratisNodeSync, 10); // set the tip of best chain some blocks in the apst stratisNodeSync.FullNode.Chain.SetTip(stratisNodeSync.FullNode.Chain.GetBlock(stratisNodeSync.FullNode.Chain.Height - 5)); // stop the node it will persist the chain with the reset tip stratisNodeSync.FullNode.Dispose(); CoreNode newNodeInstance = builder.CloneStratisNode(stratisNodeSync); // load the node, this should hit the block store recover code newNodeInstance.Start(); // check that store recovered to be the same as the best chain. Assert.Equal(newNodeInstance.FullNode.Chain.Tip.HashBlock, newNodeInstance.FullNode.GetBlockStoreTip().HashBlock); //TestHelper.WaitLoop(() => TestHelper.IsNodeSynced(stratisNodeSync)); } }
public void WalletCanRecoverOnStartup() { using (NodeBuilder builder = NodeBuilder.Create(this)) { CoreNode stratisNodeSync = builder.CreateStratisPowNode(this.network).NotInIBD(); builder.StartAll(); stratisNodeSync.WithWallet(); TestHelper.MineBlocks(stratisNodeSync, 10); // Set the tip of best chain some blocks in the past stratisNodeSync.FullNode.Chain.SetTip(stratisNodeSync.FullNode.Chain.GetBlock(stratisNodeSync.FullNode.Chain.Height - 5)); // Stop the node (it will persist the chain with the reset tip) stratisNodeSync.FullNode.Dispose(); CoreNode newNodeInstance = builder.CloneStratisNode(stratisNodeSync); // Load the node, this should hit the block store recover code newNodeInstance.Start(); // Check that store recovered to be the same as the best chain. Assert.Equal(newNodeInstance.FullNode.Chain.Tip.HashBlock, newNodeInstance.FullNode.WalletManager().WalletTipHash); } }
public void BlockStoreCanRecoverOnStartup() { using (NodeBuilder builder = NodeBuilder.Create(this)) { CoreNode stratisNodeSync = builder.CreateStratisPowNode(this.network, "bs-2-stratisNodeSync").WithReadyBlockchainData(ReadyBlockchain.BitcoinRegTest10Miner).Start(); // Set the tip of the best chain to some blocks in the past. stratisNodeSync.FullNode.ChainIndexer.SetTip(stratisNodeSync.FullNode.ChainIndexer.GetHeader(stratisNodeSync.FullNode.ChainIndexer.Height - 5)); // Stop the node to persist the chain with the reset tip. stratisNodeSync.FullNode.Dispose(); CoreNode newNodeInstance = builder.CloneStratisNode(stratisNodeSync); // Start the node, this should hit the block store recover code. newNodeInstance.Start(); // Check that the store recovered to be the same as the best chain. Assert.Equal(newNodeInstance.FullNode.ChainIndexer.Tip.HashBlock, newNodeInstance.FullNode.GetBlockStoreTip().HashBlock); } }
public void BlockStoreCanRecoverOnStartup() { using (NodeBuilder builder = NodeBuilder.Create(this)) { CoreNode stratisNodeSync = builder.CreateStratisPowNode(this.network).WithDummyWallet().Start(); TestHelper.MineBlocks(stratisNodeSync, 10); // Set the tip of the best chain to some blocks in the past. stratisNodeSync.FullNode.Chain.SetTip(stratisNodeSync.FullNode.Chain.GetBlock(stratisNodeSync.FullNode.Chain.Height - 5)); // Stop the node to persist the chain with the reset tip. stratisNodeSync.FullNode.Dispose(); CoreNode newNodeInstance = builder.CloneStratisNode(stratisNodeSync); // Start the node, this should hit the block store recover code. newNodeInstance.Start(); // Check that the store recovered to be the same as the best chain. Assert.Equal(newNodeInstance.FullNode.Chain.Tip.HashBlock, newNodeInstance.FullNode.GetBlockStoreTip().HashBlock); } }