Fixed reorg tests.

This commit is contained in:
Chris Kleeschulte 2017-08-17 21:12:33 -04:00
parent 07b1ff3111
commit f1da1e7612
2 changed files with 23 additions and 15 deletions

View File

@ -267,9 +267,17 @@ HeaderService.prototype._onBlock = function(block) {
} }
if (reorg) { if (reorg) {
self._handleReorg(block, header); // this sets the last header return self._handleReorg(block, header, function(err) {
self._saveHeaders(self._onHeader(header));
return; if (err) {
log.error(err);
self.node.stop();
return;
}
self._saveHeaders(self._onHeader(header));
}); // this sets the last header
} }
self._broadcast(block); self._broadcast(block);
@ -385,8 +393,13 @@ HeaderService.prototype._onHeadersSave = function(err) {
} }
if (reorg) { if (reorg) {
self._handleReorg(); return self._handleReorg(null, null, function(err) {
return; if (err) {
log.error(err);
this.node.stop();
return;
}
});
} }
log.info('Header Service: emitting headers to block service.'); log.info('Header Service: emitting headers to block service.');
@ -505,15 +518,13 @@ HeaderService.prototype._detectStartupReorg = function(callback) {
}; };
HeaderService.prototype._handleReorg = function(block, header) { HeaderService.prototype._handleReorg = function(block, header, callback) {
var self = this; var self = this;
self.getAllHeaders(function(err, headers) { self.getAllHeaders(function(err, headers) {
if (err || !headers) { if (err || !headers) {
log.error(err || new Error('Missing headers')); return callback(err || new Error('Missing headers'));
self.node.stop();
return;
} }
var hash = headers.getIndex(self._originalTip.height).hash; var hash = headers.getIndex(self._originalTip.height).hash;
@ -528,7 +539,7 @@ HeaderService.prototype._handleReorg = function(block, header) {
assert(hash, 'To reorg, we need a hash to reorg to.'); assert(hash, 'To reorg, we need a hash to reorg to.');
self.emit('reorg', hash, headers); self.emit('reorg', hash, headers);
callback();
}); });
}; };

View File

@ -1,7 +1,6 @@
'use strict'; 'use strict';
var expect = require('chai').expect; var expect = require('chai').expect;
var sinon = require('sinon');
var net = require('net'); var net = require('net');
var spawn = require('child_process').spawn; var spawn = require('child_process').spawn;
var path = require('path'); var path = require('path');
@ -32,10 +31,6 @@ var headers = blocks.map(function(block) {
return block.header; return block.header;
}); });
console.log(headers);
var magic = new Buffer('fabfb5da', 'hex');
var debug = true; var debug = true;
var bitcoreDataDir = '/tmp/bitcore'; var bitcoreDataDir = '/tmp/bitcore';
@ -255,6 +250,8 @@ describe('Reorg', function() {
return; return;
} }
var data = JSON.parse(resData); var data = JSON.parse(resData);
expect(data.height).to.equal(7);
expect(data.hash).to.equal(reorgBlock.rhash());
done(resError, resData); done(resError, resData);
}); });