use of co.rsk.util.NodeStopper in project rskj by rsksmart.
the class StartBootstrap method main.
public static void main(String[] args) {
setUpThread(Thread.currentThread());
RskContext ctx = new BootstrapRskContext(args);
PreflightChecksUtils preflightChecks = new PreflightChecksUtils(ctx);
Runtime runtime = Runtime.getRuntime();
NodeStopper nodeStopper = System::exit;
runBootstrapNode(ctx, preflightChecks, runtime, nodeStopper);
}
use of co.rsk.util.NodeStopper in project rskj by rsksmart.
the class NodeReferenceTest method testGetNode_brokenDatabase_stopMethodIsCalled.
@Test
public void testGetNode_brokenDatabase_stopMethodIsCalled() {
// Given
Keccak256 lazyHashMock = mock(Keccak256.class);
byte[] bytesMock = new byte[0];
doReturn(bytesMock).when(lazyHashMock).getBytes();
int exitStatus = 1;
NodeStopper nodeStopperMock = mock(NodeStopper.class);
doNothing().when(nodeStopperMock).stop(exitStatus);
TrieStoreImpl trieStoreMock = mock(TrieStoreImpl.class);
doReturn(Optional.empty()).when(trieStoreMock).retrieve(bytesMock);
NodeReference nodeReference = new NodeReference(trieStoreMock, null, lazyHashMock, nodeStopperMock);
// When
nodeReference.getNode();
// Then
verify(nodeStopperMock, times(1)).stop(exitStatus);
}
use of co.rsk.util.NodeStopper in project rskj by rsksmart.
the class CliToolsTest method executeBlocks.
@Test
public void executeBlocks() throws FileNotFoundException, DslProcessorException {
DslParser parser = DslParser.fromResource("dsl/contracts02.txt");
World world = new World();
WorldDslProcessor processor = new WorldDslProcessor(world);
processor.processCommands(parser);
String[] args = new String[] { "1", "2" };
RskContext rskContext = mock(RskContext.class);
doReturn(world.getBlockExecutor()).when(rskContext).getBlockExecutor();
doReturn(world.getBlockStore()).when(rskContext).getBlockStore();
doReturn(world.getTrieStore()).when(rskContext).getTrieStore();
doReturn(world.getStateRootHandler()).when(rskContext).getStateRootHandler();
NodeStopper stopper = mock(NodeStopper.class);
ExecuteBlocks executeBlocksCliTool = new ExecuteBlocks();
executeBlocksCliTool.execute(args, () -> rskContext, stopper);
Assert.assertEquals(2, world.getBlockChain().getBestBlock().getNumber());
verify(stopper).stop(0);
}
use of co.rsk.util.NodeStopper in project rskj by rsksmart.
the class CliToolsTest method importBlocks.
@Test
public void importBlocks() throws IOException, DslProcessorException {
DslParser parser = DslParser.fromResource("dsl/blocks01b.txt");
ReceiptStore receiptStore = new ReceiptStoreImpl(new HashMapDB());
World world = new World(receiptStore);
WorldDslProcessor processor = new WorldDslProcessor(world);
processor.processCommands(parser);
Blockchain blockchain = world.getBlockChain();
Assert.assertEquals(0, blockchain.getBestBlock().getNumber());
Block block1 = world.getBlockByName("b01");
Block block2 = world.getBlockByName("b02");
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("1,");
stringBuilder.append(ByteUtil.toHexString(block1.getHash().getBytes()));
stringBuilder.append(",02,");
stringBuilder.append(ByteUtil.toHexString(block1.getEncoded()));
stringBuilder.append("\n");
stringBuilder.append("1,");
stringBuilder.append(ByteUtil.toHexString(block2.getHash().getBytes()));
stringBuilder.append(",03,");
stringBuilder.append(ByteUtil.toHexString(block2.getEncoded()));
stringBuilder.append("\n");
File blocksFile = new File(tempFolder.getRoot(), "blocks.txt");
try (BufferedWriter writer = new BufferedWriter(new FileWriter(blocksFile))) {
writer.write(stringBuilder.toString());
}
String[] args = new String[] { blocksFile.getAbsolutePath() };
RskContext rskContext = mock(RskContext.class);
doReturn(world.getBlockStore()).when(rskContext).getBlockStore();
doReturn(new BlockFactory(ActivationConfigsForTest.all())).when(rskContext).getBlockFactory();
NodeStopper stopper = mock(NodeStopper.class);
ImportBlocks importBlocksCliTool = new ImportBlocks();
importBlocksCliTool.execute(args, () -> rskContext, stopper);
Assert.assertEquals(block1.getHash(), blockchain.getBlockByNumber(1).getHash());
Assert.assertEquals(block2.getHash(), blockchain.getBlockByNumber(2).getHash());
verify(stopper).stop(0);
}
use of co.rsk.util.NodeStopper in project rskj by rsksmart.
the class CliToolsTest method exportBlocks.
@Test
public void exportBlocks() throws IOException, DslProcessorException {
DslParser parser = DslParser.fromResource("dsl/blocks01.txt");
World world = new World();
WorldDslProcessor processor = new WorldDslProcessor(world);
processor.processCommands(parser);
File blocksFile = new File(tempFolder.getRoot(), "blocks.txt");
String[] args = new String[] { "0", "2", blocksFile.getAbsolutePath() };
RskContext rskContext = mock(RskContext.class);
doReturn(world.getBlockStore()).when(rskContext).getBlockStore();
NodeStopper stopper = mock(NodeStopper.class);
ExportBlocks exportBlocksCliTool = new ExportBlocks();
exportBlocksCliTool.execute(args, () -> rskContext, stopper);
String data = new String(Files.readAllBytes(blocksFile.toPath()), StandardCharsets.UTF_8);
Blockchain blockchain = world.getBlockChain();
BlockStore blockStore = world.getBlockStore();
for (long n = 0; n < 3; n++) {
Block block = blockchain.getBlockByNumber(n);
BlockDifficulty totalDifficulty = blockStore.getTotalDifficultyForHash(block.getHash().getBytes());
String line = block.getNumber() + "," + block.getHash().toHexString() + "," + ByteUtil.toHexString(totalDifficulty.getBytes()) + "," + ByteUtil.toHexString(block.getEncoded());
Assert.assertTrue(data.contains(line));
}
verify(stopper).stop(0);
}
Aggregations