@Test public void createSmallChain() { final BlockDataGenerator gen = new BlockDataGenerator(); final List<Block> chain = gen.blockSequence(3); final List<List<TransactionReceipt>> blockReceipts = chain.stream().map(gen::receipts).collect(Collectors.toList()); final KeyValueStorage kvStore = new InMemoryKeyValueStorage(); final DefaultMutableBlockchain blockchain = createBlockchain(kvStore, chain.get(0)); for (int i = 1; i < chain.size(); i++) { blockchain.appendBlock(chain.get(i), blockReceipts.get(i)); } for (int i = 1; i < chain.size(); i++) { assertBlockDataIsStored(blockchain, chain.get(i), blockReceipts.get(i)); } final Block head = chain.get(chain.size() - 1); assertBlockIsHead(blockchain, head); assertTotalDifficultiesAreConsistent(blockchain, head); assertThat(blockchain.getForks()).isEmpty(); }
@Test public void initializeNew() { final BlockDataGenerator gen = new BlockDataGenerator(); final KeyValueStorage kvStore = new InMemoryKeyValueStorage(); final Block genesisBlock = gen.genesisBlock(); final DefaultMutableBlockchain blockchain = createBlockchain(kvStore, genesisBlock); assertBlockDataIsStored(blockchain, genesisBlock, Collections.emptyList()); assertBlockIsHead(blockchain, genesisBlock); assertTotalDifficultiesAreConsistent(blockchain, genesisBlock); assertThat(blockchain.getForks()).isEmpty(); }
assertBlockDataIsStored(blockchain, reorgedChain.get(i), reorgedReceipts.get(i));
assertBlockDataIsStored(blockchain, chain.get(i), blockReceipts.get(i)); assertBlockDataIsStored(blockchain, reorgedChain.get(i), reorgedReceipts.get(i));
assertBlockDataIsStored(blockchain, reorgedChain.get(i), reorgedReceipts.get(i));
assertBlockDataIsStored(blockchain, chain.get(i), blockReceipts.get(i)); assertBlockDataIsStored(blockchain, reorgedChain.get(i), reorgedReceipts.get(i));
@Test public void initializeExisting() { final BlockDataGenerator gen = new BlockDataGenerator(); // Write to kv store final KeyValueStorage kvStore = new InMemoryKeyValueStorage(); final Block genesisBlock = gen.genesisBlock(); createBlockchain(kvStore, genesisBlock); // Initialize a new blockchain store with kvStore that already contains data final DefaultMutableBlockchain blockchain = createBlockchain(kvStore, genesisBlock); assertBlockDataIsStored(blockchain, genesisBlock, Collections.emptyList()); assertBlockIsHead(blockchain, genesisBlock); assertTotalDifficultiesAreConsistent(blockchain, genesisBlock); assertThat(blockchain.getForks()).isEmpty(); }
assertBlockDataIsStored(blockchain, chain.get(j), blockReceipts.get(j));