mirror of
https://github.com/bitcoinj/bitcoinj.git
synced 2025-03-10 09:20:04 +01:00
FakeTxBuilder: migrate createFakeBlock()' methods to
java.time` API
This commit is contained in:
parent
168ff75bd1
commit
79477ff04a
3 changed files with 43 additions and 19 deletions
|
@ -260,18 +260,24 @@ public class FakeTxBuilder {
|
||||||
|
|
||||||
/** Emulates receiving a valid block that builds on top of the chain. */
|
/** Emulates receiving a valid block that builds on top of the chain. */
|
||||||
public static BlockPair createFakeBlock(BlockStore blockStore, long version,
|
public static BlockPair createFakeBlock(BlockStore blockStore, long version,
|
||||||
long timeSeconds, Transaction... transactions) {
|
Instant time, Transaction... transactions) {
|
||||||
return createFakeBlock(blockStore, version, timeSeconds, 0, transactions);
|
return createFakeBlock(blockStore, version, time, 0, transactions);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @deprecated use {@link #createFakeBlock(BlockStore, long, Instant, Transaction...)} */
|
||||||
|
@Deprecated
|
||||||
|
public static BlockPair createFakeBlock(BlockStore blockStore, long version,
|
||||||
|
long timeSecs, Transaction... transactions) {
|
||||||
|
return createFakeBlock(blockStore, version, Instant.ofEpochSecond(timeSecs), transactions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Emulates receiving a valid block */
|
/** Emulates receiving a valid block */
|
||||||
public static BlockPair createFakeBlock(BlockStore blockStore, StoredBlock previousStoredBlock, long version,
|
public static BlockPair createFakeBlock(BlockStore blockStore, StoredBlock previousStoredBlock, long version,
|
||||||
long timeSeconds, int height,
|
Instant time, int height, Transaction... transactions) {
|
||||||
Transaction... transactions) {
|
|
||||||
try {
|
try {
|
||||||
Block previousBlock = previousStoredBlock.getHeader();
|
Block previousBlock = previousStoredBlock.getHeader();
|
||||||
Address to = randomAddress(previousBlock.getParams());
|
Address to = randomAddress(previousBlock.getParams());
|
||||||
Block b = previousBlock.createNextBlock(to, version, Instant.ofEpochSecond(timeSeconds), height);
|
Block b = previousBlock.createNextBlock(to, version, time, height);
|
||||||
// Coinbase tx was already added.
|
// Coinbase tx was already added.
|
||||||
for (Transaction tx : transactions) {
|
for (Transaction tx : transactions) {
|
||||||
tx.getConfidence().setSource(TransactionConfidence.Source.NETWORK);
|
tx.getConfidence().setSource(TransactionConfidence.Source.NETWORK);
|
||||||
|
@ -289,28 +295,42 @@ public class FakeTxBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @deprecated use {@link #createFakeBlock(BlockStore, StoredBlock, long, Instant, int, Transaction...)} */
|
||||||
|
@Deprecated
|
||||||
|
public static BlockPair createFakeBlock(BlockStore blockStore, StoredBlock previousStoredBlock, long version,
|
||||||
|
long timeSecs, int height, Transaction... transactions) {
|
||||||
|
return createFakeBlock(blockStore, previousStoredBlock, version, Instant.ofEpochSecond(timeSecs), height,
|
||||||
|
transactions);
|
||||||
|
}
|
||||||
|
|
||||||
public static BlockPair createFakeBlock(BlockStore blockStore, StoredBlock previousStoredBlock, int height, Transaction... transactions) {
|
public static BlockPair createFakeBlock(BlockStore blockStore, StoredBlock previousStoredBlock, int height, Transaction... transactions) {
|
||||||
return createFakeBlock(blockStore, previousStoredBlock, Block.BLOCK_VERSION_BIP66, TimeUtils.currentTimeSeconds(), height, transactions);
|
return createFakeBlock(blockStore, previousStoredBlock, Block.BLOCK_VERSION_BIP66, TimeUtils.currentTime(), height, transactions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Emulates receiving a valid block that builds on top of the chain. */
|
/** Emulates receiving a valid block that builds on top of the chain. */
|
||||||
public static BlockPair createFakeBlock(BlockStore blockStore, long version, long timeSeconds, int height, Transaction... transactions) {
|
public static BlockPair createFakeBlock(BlockStore blockStore, long version, Instant time, int height, Transaction... transactions) {
|
||||||
try {
|
try {
|
||||||
return createFakeBlock(blockStore, blockStore.getChainHead(), version, timeSeconds, height, transactions);
|
return createFakeBlock(blockStore, blockStore.getChainHead(), version, time, height, transactions);
|
||||||
} catch (BlockStoreException e) {
|
} catch (BlockStoreException e) {
|
||||||
throw new RuntimeException(e); // Cannot happen.
|
throw new RuntimeException(e); // Cannot happen.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @deprecated use {@link #createFakeBlock(BlockStore, long, Instant, int, Transaction...)} */
|
||||||
|
@Deprecated
|
||||||
|
public static BlockPair createFakeBlock(BlockStore blockStore, long version, long timeSecs, int height, Transaction... transactions) {
|
||||||
|
return createFakeBlock(blockStore, version, Instant.ofEpochSecond(timeSecs), height, transactions);
|
||||||
|
}
|
||||||
|
|
||||||
/** Emulates receiving a valid block that builds on top of the chain. */
|
/** Emulates receiving a valid block that builds on top of the chain. */
|
||||||
public static BlockPair createFakeBlock(BlockStore blockStore, int height,
|
public static BlockPair createFakeBlock(BlockStore blockStore, int height,
|
||||||
Transaction... transactions) {
|
Transaction... transactions) {
|
||||||
return createFakeBlock(blockStore, Block.BLOCK_VERSION_GENESIS, TimeUtils.currentTimeSeconds(), height, transactions);
|
return createFakeBlock(blockStore, Block.BLOCK_VERSION_GENESIS, TimeUtils.currentTime(), height, transactions);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Emulates receiving a valid block that builds on top of the chain. */
|
/** Emulates receiving a valid block that builds on top of the chain. */
|
||||||
public static BlockPair createFakeBlock(BlockStore blockStore, Transaction... transactions) {
|
public static BlockPair createFakeBlock(BlockStore blockStore, Transaction... transactions) {
|
||||||
return createFakeBlock(blockStore, Block.BLOCK_VERSION_GENESIS, TimeUtils.currentTimeSeconds(), 0, transactions);
|
return createFakeBlock(blockStore, Block.BLOCK_VERSION_GENESIS, TimeUtils.currentTime(), 0, transactions);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Block makeSolvedTestBlock(BlockStore blockStore, Address coinsTo) throws BlockStoreException {
|
public static Block makeSolvedTestBlock(BlockStore blockStore, Address coinsTo) throws BlockStoreException {
|
||||||
|
|
|
@ -42,6 +42,7 @@ import java.math.BigInteger;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
@ -260,24 +261,24 @@ public class BlockChainTest {
|
||||||
final BlockChain versionChain = new BlockChain(UNITTEST, versionBlockStore);
|
final BlockChain versionChain = new BlockChain(UNITTEST, versionBlockStore);
|
||||||
|
|
||||||
// Build a historical chain of version 3 blocks
|
// Build a historical chain of version 3 blocks
|
||||||
long timeSeconds = 1231006505;
|
Instant time = Instant.ofEpochSecond(1231006505);
|
||||||
int height = 0;
|
int height = 0;
|
||||||
FakeTxBuilder.BlockPair chainHead = null;
|
FakeTxBuilder.BlockPair chainHead = null;
|
||||||
|
|
||||||
// Put in just enough v2 blocks to be a minority
|
// Put in just enough v2 blocks to be a minority
|
||||||
for (height = 0; height < (UNITTEST.getMajorityWindow() - UNITTEST.getMajorityRejectBlockOutdated()); height++) {
|
for (height = 0; height < (UNITTEST.getMajorityWindow() - UNITTEST.getMajorityRejectBlockOutdated()); height++) {
|
||||||
chainHead = FakeTxBuilder.createFakeBlock(versionBlockStore, deprecatedVersion, timeSeconds, height);
|
chainHead = FakeTxBuilder.createFakeBlock(versionBlockStore, deprecatedVersion, time, height);
|
||||||
versionChain.add(chainHead.block);
|
versionChain.add(chainHead.block);
|
||||||
timeSeconds += 60;
|
time = time.plus(1, ChronoUnit.MINUTES);
|
||||||
}
|
}
|
||||||
// Fill the rest of the window with v3 blocks
|
// Fill the rest of the window with v3 blocks
|
||||||
for (; height < UNITTEST.getMajorityWindow(); height++) {
|
for (; height < UNITTEST.getMajorityWindow(); height++) {
|
||||||
chainHead = FakeTxBuilder.createFakeBlock(versionBlockStore, newVersion, timeSeconds, height);
|
chainHead = FakeTxBuilder.createFakeBlock(versionBlockStore, newVersion, time, height);
|
||||||
versionChain.add(chainHead.block);
|
versionChain.add(chainHead.block);
|
||||||
timeSeconds += 60;
|
time = time.plus(1, ChronoUnit.MINUTES);
|
||||||
}
|
}
|
||||||
|
|
||||||
chainHead = FakeTxBuilder.createFakeBlock(versionBlockStore, deprecatedVersion, timeSeconds, height);
|
chainHead = FakeTxBuilder.createFakeBlock(versionBlockStore, deprecatedVersion, time, height);
|
||||||
// Trying to add a new v2 block should result in rejection
|
// Trying to add a new v2 block should result in rejection
|
||||||
thrown.expect(VerificationException.BlockVersionOutOfDate.class);
|
thrown.expect(VerificationException.BlockVersionOutOfDate.class);
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -31,6 +31,9 @@ import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
|
|
||||||
|
@ -108,12 +111,12 @@ public class VersionTallyTest {
|
||||||
final BlockChain chain = new BlockChain(TESTNET, blockStore);
|
final BlockChain chain = new BlockChain(TESTNET, blockStore);
|
||||||
|
|
||||||
// Build a historical chain of version 2 blocks
|
// Build a historical chain of version 2 blocks
|
||||||
long timeSeconds = 1231006505;
|
Instant time = Instant.ofEpochSecond(1231006505);
|
||||||
StoredBlock chainHead = null;
|
StoredBlock chainHead = null;
|
||||||
for (int height = 0; height < TESTNET.getMajorityWindow(); height++) {
|
for (int height = 0; height < TESTNET.getMajorityWindow(); height++) {
|
||||||
chainHead = FakeTxBuilder.createFakeBlock(blockStore, 2, timeSeconds, height).storedBlock;
|
chainHead = FakeTxBuilder.createFakeBlock(blockStore, 2, time, height).storedBlock;
|
||||||
assertEquals(2, chainHead.getHeader().getVersion());
|
assertEquals(2, chainHead.getHeader().getVersion());
|
||||||
timeSeconds += 60;
|
time = time.plus(1, ChronoUnit.MINUTES);
|
||||||
}
|
}
|
||||||
|
|
||||||
VersionTally instance = new VersionTally(TESTNET);
|
VersionTally instance = new VersionTally(TESTNET);
|
||||||
|
|
Loading…
Add table
Reference in a new issue