Skip to content

Commit

Permalink
web3-core-requestmanager: Use sendAsync when available in sendBatch (w…
Browse files Browse the repository at this point in the history
  • Loading branch information
iamdoron authored and nachomazzara committed Jun 4, 2020
1 parent 1b6540e commit 32a8b44
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 4 deletions.
5 changes: 2 additions & 3 deletions packages/web3-core-requestmanager/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -157,8 +157,8 @@ RequestManager.prototype.sendBatch = function (data, callback) {
return callback(errors.InvalidProvider());
}

var payload = Jsonrpc.getInstance().toBatchPayload(data);
this.provider.send(payload, function (err, results) {
var payload = Jsonrpc.toBatchPayload(data);
this.provider[this.provider.sendAsync ? 'sendAsync' : 'send'](payload, function (err, results) {
if (err) {
return callback(err);
}
Expand Down Expand Up @@ -241,4 +241,3 @@ module.exports = {
Manager: RequestManager,
BatchManager: BatchManager
};

43 changes: 42 additions & 1 deletion test/batch.js
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,47 @@ describe('lib/web3/batch', function () {
provider.injectBatchResults([result, result2], true); // injects error
batch.execute();
});

it('should execute batch request with provider that supports sendAsync', function (done) {

var provider = new FakeIpcProvider();
var web3 = new Web3(provider);

provider.sendAsync = provider.send
provider.send = () => { throw new Error('send was called instead of sendAsync') }
var result = '0x126';
var resultVal = '294';
var result2 = '0x127';
var result2Val = '295';
provider.injectBatchResults([result, result2]);

var counter = 0;
var callback = function (err, r) {
counter++;
assert.deepEqual(r, resultVal);
};

var callback2 = function (err, r) {
assert.equal(counter, 1);
assert.deepEqual(r, result2Val);
done();
};

provider.injectValidation(function (payload) {
var first = payload[0];
var second = payload[1];

assert.equal(first.method, 'eth_getBalance');
assert.deepEqual(first.params, ['0x0000000000000000000000000000000000000000', 'latest']);
assert.equal(second.method, 'eth_getBalance');
assert.deepEqual(second.params, ['0x0000000000000000000000000000000000000005', 'latest']);
});

var batch = new web3.BatchRequest();
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000005', 'latest', callback2));
batch.execute();
});

});
});

0 comments on commit 32a8b44

Please sign in to comment.