Use Geth for contract tests
This commit is contained in:
@@ -281,7 +281,6 @@ export class Web3Wrapper {
|
||||
};
|
||||
const payload = {
|
||||
jsonrpc: '2.0',
|
||||
id: this._jsonRpcRequestId++,
|
||||
method: 'eth_getLogs',
|
||||
params: [serializedFilter],
|
||||
};
|
||||
@@ -403,8 +402,44 @@ export class Web3Wrapper {
|
||||
}
|
||||
return receipt;
|
||||
}
|
||||
/**
|
||||
* Start the CPU mining process with the given number of threads and
|
||||
* generate a new DAG if need be.
|
||||
* @param threads The number of threads to mine on.
|
||||
*/
|
||||
public async minerStartAsync(threads: number = 1): Promise<void> {
|
||||
await this._sendRawPayloadAsync<boolean>({
|
||||
method: 'miner_start',
|
||||
params: [threads],
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Stop the CPU mining process.
|
||||
* @param threads The number of threads to mine on.
|
||||
*/
|
||||
public async minerStopAsync(): Promise<void> {
|
||||
await this._sendRawPayloadAsync<boolean>({ method: 'miner_stop', params: [] });
|
||||
}
|
||||
/**
|
||||
* Returns true if client is actively mining new blocks.
|
||||
* @returns A boolean indicating whether the node is currently mining.
|
||||
*/
|
||||
public async isMiningAsync(): Promise<boolean> {
|
||||
const isMining = await promisify<boolean>(this._web3.eth.getMining)();
|
||||
return isMining;
|
||||
}
|
||||
/**
|
||||
* Sets the current head of the local chain by block number. Note, this is a
|
||||
* destructive action and may severely damage your chain. Use with extreme
|
||||
* caution.
|
||||
* @param blockNumber The block number to reset to.
|
||||
*/
|
||||
public async setHeadAsync(blockNumber: number): Promise<void> {
|
||||
await this._sendRawPayloadAsync<void>({ method: 'debug_setHead', params: [this._web3.toHex(blockNumber)] });
|
||||
}
|
||||
private async _sendRawPayloadAsync<A>(payload: Partial<JSONRPCRequestPayload>): Promise<A> {
|
||||
const sendAsync = this._web3.currentProvider.sendAsync.bind(this._web3.currentProvider);
|
||||
payload.id = this._jsonRpcRequestId++;
|
||||
const response = await promisify<JSONRPCResponsePayload>(sendAsync)(payload);
|
||||
const result = response.result;
|
||||
return result;
|
||||
|
||||
@@ -2,6 +2,7 @@ import * as chai from 'chai';
|
||||
import * as Ganache from 'ganache-core';
|
||||
import 'make-promises-safe';
|
||||
import 'mocha';
|
||||
import * as Web3 from 'web3';
|
||||
|
||||
import { Web3Wrapper } from '../src';
|
||||
|
||||
@@ -37,4 +38,22 @@ describe('Web3Wrapper tests', () => {
|
||||
expect(networkId).to.be.equal(NETWORK_ID);
|
||||
});
|
||||
});
|
||||
describe('mining functions', () => {
|
||||
it('starts and stops the miner', async () => {
|
||||
// Note: depending on our provider, the miner may or may not already
|
||||
// be mining. To account for both conditions, we have what might
|
||||
// look like too many stops and starts here, but it is necessary.
|
||||
await web3Wrapper.minerStopAsync();
|
||||
let isMining = await web3Wrapper.isMiningAsync();
|
||||
expect(isMining).to.be.false();
|
||||
await web3Wrapper.minerStartAsync(1);
|
||||
isMining = await web3Wrapper.isMiningAsync();
|
||||
expect(isMining).to.be.true();
|
||||
isMining = await web3Wrapper.isMiningAsync();
|
||||
expect(isMining).to.be.true();
|
||||
await web3Wrapper.minerStopAsync();
|
||||
isMining = await web3Wrapper.isMiningAsync();
|
||||
expect(isMining).to.be.false();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user