diff options
author | Fabio Berger <me@fabioberger.com> | 2018-07-19 23:48:06 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-07-19 23:48:06 +0800 |
commit | d8898cf9a30cc349868afcf2b78e6369e57aa726 (patch) | |
tree | f96d1aa76c7e5aa9e3311d5cdbd0d31c8ec8d7fb /packages/dev-utils | |
parent | 1aaf633df883f62fad890b2d87a2dc89067821c5 (diff) | |
parent | 3de88d5345c7a4549bc69e2ca28f0601f5d42189 (diff) | |
download | dexon-sol-tools-d8898cf9a30cc349868afcf2b78e6369e57aa726.tar dexon-sol-tools-d8898cf9a30cc349868afcf2b78e6369e57aa726.tar.gz dexon-sol-tools-d8898cf9a30cc349868afcf2b78e6369e57aa726.tar.bz2 dexon-sol-tools-d8898cf9a30cc349868afcf2b78e6369e57aa726.tar.lz dexon-sol-tools-d8898cf9a30cc349868afcf2b78e6369e57aa726.tar.xz dexon-sol-tools-d8898cf9a30cc349868afcf2b78e6369e57aa726.tar.zst dexon-sol-tools-d8898cf9a30cc349868afcf2b78e6369e57aa726.zip |
merge v2-prototype
Diffstat (limited to 'packages/dev-utils')
-rw-r--r-- | packages/dev-utils/CHANGELOG.json | 9 | ||||
-rw-r--r-- | packages/dev-utils/CHANGELOG.md | 4 | ||||
-rw-r--r-- | packages/dev-utils/package.json | 15 | ||||
-rw-r--r-- | packages/dev-utils/src/blockchain_lifecycle.ts | 43 | ||||
-rw-r--r-- | packages/dev-utils/src/web3_factory.ts | 21 |
5 files changed, 57 insertions, 35 deletions
diff --git a/packages/dev-utils/CHANGELOG.json b/packages/dev-utils/CHANGELOG.json index 56ecd023e..d092ddf55 100644 --- a/packages/dev-utils/CHANGELOG.json +++ b/packages/dev-utils/CHANGELOG.json @@ -1,5 +1,14 @@ [ { + "timestamp": 1531919263, + "version": "0.4.6", + "changes": [ + { + "note": "Dependencies updated" + } + ] + }, + { "timestamp": 1531149657, "version": "0.4.5", "changes": [ diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 55e12b2dd..de9287478 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -5,6 +5,10 @@ Edit the package's CHANGELOG.json file only. CHANGELOG +## v0.4.6 - _July 18, 2018_ + + * Dependencies updated + ## v0.4.5 - _July 9, 2018_ * Dependencies updated diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 1808e23e4..3267f98d9 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,6 +1,6 @@ { "name": "@0xproject/dev-utils", - "version": "0.4.5", + "version": "0.4.6", "engines": { "node": ">=6.12" }, @@ -41,18 +41,17 @@ "npm-run-all": "^4.1.2", "nyc": "^11.0.1", "shx": "^0.2.2", - "tslint": "5.8.0", + "tslint": "5.11.0", "typescript": "2.7.1" }, "dependencies": { - "@0xproject/subproviders": "^0.10.5", + "@0xproject/subproviders": "^0.10.6", "@0xproject/types": "^0.8.2", - "@0xproject/utils": "^0.7.2", + "@0xproject/utils": "^0.7.3", "ethereum-types": "^0.0.2", - "@0xproject/typescript-typings": "^0.4.2", - "@0xproject/web3-wrapper": "^0.7.2", - "lodash": "^4.17.4", - "web3-provider-engine": "14.0.6" + "@0xproject/typescript-typings": "^0.4.3", + "@0xproject/web3-wrapper": "^0.7.3", + "lodash": "^4.17.4" }, "publishConfig": { "access": "public" diff --git a/packages/dev-utils/src/blockchain_lifecycle.ts b/packages/dev-utils/src/blockchain_lifecycle.ts index 9bd65ee5d..a48cb0856 100644 --- a/packages/dev-utils/src/blockchain_lifecycle.ts +++ b/packages/dev-utils/src/blockchain_lifecycle.ts @@ -10,8 +10,8 @@ import * as _ from 'lodash'; const MINIMUM_BLOCKS = 3; export class BlockchainLifecycle { - private _web3Wrapper: Web3Wrapper; - private _snapshotIdsStack: number[]; + private readonly _web3Wrapper: Web3Wrapper; + private readonly _snapshotIdsStack: number[]; private _addresses: string[] = []; private _nodeType: NodeType | undefined; constructor(web3Wrapper: Web3Wrapper) { @@ -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, + ); + } } diff --git a/packages/dev-utils/src/web3_factory.ts b/packages/dev-utils/src/web3_factory.ts index 362a6c3c6..8e713fa68 100644 --- a/packages/dev-utils/src/web3_factory.ts +++ b/packages/dev-utils/src/web3_factory.ts @@ -1,7 +1,10 @@ -import ProviderEngine = require('web3-provider-engine'); -import RpcSubprovider = require('web3-provider-engine/subproviders/rpc'); - -import { EmptyWalletSubprovider, FakeGasEstimateSubprovider, GanacheSubprovider } from '@0xproject/subproviders'; +import { + EmptyWalletSubprovider, + FakeGasEstimateSubprovider, + GanacheSubprovider, + RPCSubprovider, + Web3ProviderEngine, +} from '@0xproject/subproviders'; import * as fs from 'fs'; import * as _ from 'lodash'; @@ -16,8 +19,8 @@ export interface Web3Config { } export const web3Factory = { - getRpcProvider(config: Web3Config = {}): ProviderEngine { - const provider = new ProviderEngine(); + getRpcProvider(config: Web3Config = {}): Web3ProviderEngine { + const provider = new Web3ProviderEngine(); const hasAddresses = _.isUndefined(config.hasAddresses) || config.hasAddresses; config.shouldUseFakeGasEstimate = _.isUndefined(config.shouldUseFakeGasEstimate) || config.shouldUseFakeGasEstimate; @@ -49,11 +52,7 @@ export const web3Factory = { }), ); } else { - provider.addProvider( - new RpcSubprovider({ - rpcUrl: config.rpcUrl || constants.RPC_URL, - }), - ); + provider.addProvider(new RPCSubprovider(config.rpcUrl || constants.RPC_URL)); } provider.start(); return provider; |