aboutsummaryrefslogtreecommitdiffstats
path: root/packages/dev-utils/src/blockchain_lifecycle.ts
diff options
context:
space:
mode:
authorLeonid Logvinov <logvinov.leon@gmail.com>2018-07-18 20:51:24 +0800
committerGitHub <noreply@github.com>2018-07-18 20:51:24 +0800
commit857bd24c6db8ffd5353c20d0bd4b1c1fa29612ba (patch)
tree5b2394a3d4098d3b07df8f69ef797a77893ad7be /packages/dev-utils/src/blockchain_lifecycle.ts
parentab6bf6edc70d6bfd27cdb7becce838dda8720e39 (diff)
parent904968cf4a899642d3f4e78abc53352125e17447 (diff)
downloaddexon-sol-tools-857bd24c6db8ffd5353c20d0bd4b1c1fa29612ba.tar
dexon-sol-tools-857bd24c6db8ffd5353c20d0bd4b1c1fa29612ba.tar.gz
dexon-sol-tools-857bd24c6db8ffd5353c20d0bd4b1c1fa29612ba.tar.bz2
dexon-sol-tools-857bd24c6db8ffd5353c20d0bd4b1c1fa29612ba.tar.lz
dexon-sol-tools-857bd24c6db8ffd5353c20d0bd4b1c1fa29612ba.tar.xz
dexon-sol-tools-857bd24c6db8ffd5353c20d0bd4b1c1fa29612ba.tar.zst
dexon-sol-tools-857bd24c6db8ffd5353c20d0bd4b1c1fa29612ba.zip
Merge branch 'v2-prototype' into feature/order-watcher-v2
Diffstat (limited to 'packages/dev-utils/src/blockchain_lifecycle.ts')
-rw-r--r--packages/dev-utils/src/blockchain_lifecycle.ts39
1 files changed, 25 insertions, 14 deletions
diff --git a/packages/dev-utils/src/blockchain_lifecycle.ts b/packages/dev-utils/src/blockchain_lifecycle.ts
index 9bd65ee5d..a0424f01f 100644
--- a/packages/dev-utils/src/blockchain_lifecycle.ts
+++ b/packages/dev-utils/src/blockchain_lifecycle.ts
@@ -34,6 +34,12 @@ export class BlockchainLifecycle {
blockNumber = await this._web3Wrapper.getBlockNumberAsync();
}
this._snapshotIdsStack.push(blockNumber);
+ // HACK(albrow) It's possible that we applied a time offset but
+ // the transaction we mined to put that time offset into the
+ // blockchain was reverted. As a workaround, we mine a new dummy
+ // block so that the latest block timestamp accounts for any
+ // possible time offsets.
+ await this._mineDummyBlockAsync();
break;
default:
throw new Error(`Unknown node type: ${nodeType}`);
@@ -59,22 +65,9 @@ export class BlockchainLifecycle {
}
private async _mineMinimumBlocksAsync(): Promise<void> {
logUtils.warn('WARNING: minimum block number for tests not met. Mining additional blocks...');
- if (this._addresses.length === 0) {
- this._addresses = await this._web3Wrapper.getAvailableAddressesAsync();
- if (this._addresses.length === 0) {
- throw new Error('No accounts found');
- }
- }
while ((await this._web3Wrapper.getBlockNumberAsync()) < MINIMUM_BLOCKS) {
logUtils.warn('Mining block...');
- await this._web3Wrapper.awaitTransactionMinedAsync(
- await this._web3Wrapper.sendTransactionAsync({
- from: this._addresses[0],
- to: this._addresses[0],
- value: '0',
- }),
- 0,
- );
+ await this._mineDummyBlockAsync();
}
logUtils.warn('Done mining the minimum number of blocks.');
}
@@ -84,4 +77,22 @@ export class BlockchainLifecycle {
}
return this._nodeType;
}
+ // Sends a transaction that has no real effect on the state and waits for it
+ // to be mined.
+ private async _mineDummyBlockAsync(): Promise<void> {
+ if (this._addresses.length === 0) {
+ this._addresses = await this._web3Wrapper.getAvailableAddressesAsync();
+ if (this._addresses.length === 0) {
+ throw new Error('No accounts found');
+ }
+ }
+ await this._web3Wrapper.awaitTransactionMinedAsync(
+ await this._web3Wrapper.sendTransactionAsync({
+ from: this._addresses[0],
+ to: this._addresses[0],
+ value: '0',
+ }),
+ 0,
+ );
+ }
}