test: add bitcoind test for early shutdown while connecting
This commit is contained in:
parent
52cf300858
commit
0cb795d980
@ -886,10 +886,12 @@ Bitcoin.prototype._spawnChildProcess = function(callback) {
|
|||||||
Bitcoin.prototype._connectProcess = function(config, callback) {
|
Bitcoin.prototype._connectProcess = function(config, callback) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var node = {};
|
var node = {};
|
||||||
|
var exitShutdown = false;
|
||||||
|
|
||||||
async.retry({times: 60, interval: self.startRetryInterval}, function(done) {
|
async.retry({times: 60, interval: self.startRetryInterval}, function(done) {
|
||||||
if (self.node.stopping) {
|
if (self.node.stopping) {
|
||||||
return done(new Error('Stopping while trying to connect to bitcoind.'));
|
exitShutdown = true;
|
||||||
|
return done();
|
||||||
}
|
}
|
||||||
|
|
||||||
node.client = new BitcoinRPC({
|
node.client = new BitcoinRPC({
|
||||||
@ -906,6 +908,9 @@ Bitcoin.prototype._connectProcess = function(config, callback) {
|
|||||||
if (err) {
|
if (err) {
|
||||||
return callback(err);
|
return callback(err);
|
||||||
}
|
}
|
||||||
|
if (exitShutdown) {
|
||||||
|
return callback(new Error('Stopping while trying to connect to bitcoind.'));
|
||||||
|
}
|
||||||
|
|
||||||
self._initZmqSubSocket(node, config.zmqpubrawtx);
|
self._initZmqSubSocket(node, config.zmqpubrawtx);
|
||||||
self._subscribeZmqEvents(node);
|
self._subscribeZmqEvents(node);
|
||||||
|
|||||||
@ -1738,6 +1738,27 @@ describe('Bitcoin Service', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('#_connectProcess', function() {
|
describe('#_connectProcess', function() {
|
||||||
|
it('will give error if connecting while shutting down', function(done) {
|
||||||
|
var config = {
|
||||||
|
node: {
|
||||||
|
network: bitcore.Networks.testnet
|
||||||
|
},
|
||||||
|
spawn: {
|
||||||
|
datadir: 'testdir',
|
||||||
|
exec: 'testpath'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var bitcoind = new BitcoinService(config);
|
||||||
|
bitcoind.node.stopping = true;
|
||||||
|
bitcoind.startRetryInterval = 100;
|
||||||
|
bitcoind._loadTipFromNode = sinon.stub();
|
||||||
|
bitcoind._connectProcess({}, function(err) {
|
||||||
|
err.should.be.instanceof(Error);
|
||||||
|
err.message.should.match(/Stopping while trying to connect/);
|
||||||
|
bitcoind._loadTipFromNode.callCount.should.equal(0);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
it('will give error from loadTipFromNode after 60 retries', function(done) {
|
it('will give error from loadTipFromNode after 60 retries', function(done) {
|
||||||
var bitcoind = new BitcoinService(baseConfig);
|
var bitcoind = new BitcoinService(baseConfig);
|
||||||
bitcoind._loadTipFromNode = sinon.stub().callsArgWith(1, new Error('test'));
|
bitcoind._loadTipFromNode = sinon.stub().callsArgWith(1, new Error('test'));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user