Fixed all tests.
This commit is contained in:
parent
272fb542af
commit
b8e8926dad
@ -38,7 +38,7 @@ Encoding.prototype.encodeHeaderValue = function(header) {
|
|||||||
var heightBuf = new Buffer(4);
|
var heightBuf = new Buffer(4);
|
||||||
heightBuf.writeUInt32BE(header.height);
|
heightBuf.writeUInt32BE(header.height);
|
||||||
var chainworkBuf = new Buffer(header.chainwork, 'hex');
|
var chainworkBuf = new Buffer(header.chainwork, 'hex');
|
||||||
return Buffer.concat([hashBuf, versionBuf, prevHash.reverse(), merkleRoot.reverse(), tsBuf, bitsBuf, nonceBuf, heightBuf, chainworkBuf ]);
|
return Buffer.concat([hashBuf, versionBuf, prevHash, merkleRoot, tsBuf, bitsBuf, nonceBuf, heightBuf, chainworkBuf ]);
|
||||||
};
|
};
|
||||||
|
|
||||||
Encoding.prototype.decodeHeaderValue = function(buffer) {
|
Encoding.prototype.decodeHeaderValue = function(buffer) {
|
||||||
|
|||||||
@ -11,6 +11,7 @@ var BN = require('bn.js');
|
|||||||
var consensus = require('bcoin').consensus;
|
var consensus = require('bcoin').consensus;
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var constants = require('../../constants');
|
var constants = require('../../constants');
|
||||||
|
var Header = require('bitcore-lib').BlockHeader;
|
||||||
|
|
||||||
var HeaderService = function(options) {
|
var HeaderService = function(options) {
|
||||||
|
|
||||||
@ -215,6 +216,9 @@ HeaderService.prototype._onHeaders = function(headers) {
|
|||||||
var dbOps = [];
|
var dbOps = [];
|
||||||
for(var i = 0; i < headers.length; i++) {
|
for(var i = 0; i < headers.length; i++) {
|
||||||
var header = headers[i];
|
var header = headers[i];
|
||||||
|
if (header instanceof Header) {
|
||||||
|
header = header.toObject();
|
||||||
|
}
|
||||||
header.height = ++self._tip.height;
|
header.height = ++self._tip.height;
|
||||||
self._tip.hash = header.hash;
|
self._tip.hash = header.hash;
|
||||||
header.chainwork = self._getChainwork(header, prevHeader).toString(16, 64);
|
header.chainwork = self._getChainwork(header, prevHeader).toString(16, 64);
|
||||||
|
|||||||
@ -307,7 +307,7 @@ P2P.prototype._setListeners = function() {
|
|||||||
self._pool.on('peertx', self._onPeerTx.bind(self));
|
self._pool.on('peertx', self._onPeerTx.bind(self));
|
||||||
self._pool.on('peerblock', self._onPeerBlock.bind(self));
|
self._pool.on('peerblock', self._onPeerBlock.bind(self));
|
||||||
self._pool.on('peerheaders', self._onPeerHeaders.bind(self));
|
self._pool.on('peerheaders', self._onPeerHeaders.bind(self));
|
||||||
self.node.once('ready', self._connect.bind(self));
|
self.node.on('ready', self._connect.bind(self));
|
||||||
if (self._bcoin) {
|
if (self._bcoin) {
|
||||||
self._bcoin.emitter.once('connect', self._connect.bind(self));
|
self._bcoin.emitter.once('connect', self._connect.bind(self));
|
||||||
}
|
}
|
||||||
@ -333,7 +333,7 @@ P2P.prototype._setResourceFilter = function(filter, resource) {
|
|||||||
|
|
||||||
P2P.prototype._startBcoin = function() {
|
P2P.prototype._startBcoin = function() {
|
||||||
this._bcoin = new Bcoin({
|
this._bcoin = new Bcoin({
|
||||||
network: this.node.getNetworkName(),
|
network: this.node.network,
|
||||||
prefix: this.node.datadir
|
prefix: this.node.datadir
|
||||||
});
|
});
|
||||||
this._bcoin.start();
|
this._bcoin.start();
|
||||||
|
|||||||
@ -205,6 +205,7 @@ describe('Address Service', function() {
|
|||||||
|
|
||||||
it('should reorg', function() {
|
it('should reorg', function() {
|
||||||
var getAddressString = sandbox.stub().returns('a');
|
var getAddressString = sandbox.stub().returns('a');
|
||||||
|
var oldEncodeTip = utils.encodeTip;
|
||||||
var encodeTip = sandbox.stub().returns({ key: 'key', value: 'value' });
|
var encodeTip = sandbox.stub().returns({ key: 'key', value: 'value' });
|
||||||
var batch = sandbox.stub();
|
var batch = sandbox.stub();
|
||||||
addressService._tip = { height: 100 };
|
addressService._tip = { height: 100 };
|
||||||
@ -216,6 +217,7 @@ describe('Address Service', function() {
|
|||||||
addressService._onReorg(oldList, common);
|
addressService._onReorg(oldList, common);
|
||||||
expect(batch.calledOnce).to.be.true;
|
expect(batch.calledOnce).to.be.true;
|
||||||
expect(encodeTip.calledOnce).to.be.true;
|
expect(encodeTip.calledOnce).to.be.true;
|
||||||
|
utils.encodeTip = oldEncodeTip;
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|||||||
@ -11,21 +11,24 @@ describe('Header service encoding', function() {
|
|||||||
var hash = '91b58f19b6eecba94ed0f6e463e8e334ec0bcda7880e2985c82a8f32e4d03add';
|
var hash = '91b58f19b6eecba94ed0f6e463e8e334ec0bcda7880e2985c82a8f32e4d03add';
|
||||||
var hashBuf = new Buffer(hash, 'hex');
|
var hashBuf = new Buffer(hash, 'hex');
|
||||||
var header = {
|
var header = {
|
||||||
|
hash: hash,
|
||||||
prevHash: '91b58f19b6eecba94ed0f6e463e8e334ec0bcda7880e2985c82a8f32e4d03ade',
|
prevHash: '91b58f19b6eecba94ed0f6e463e8e334ec0bcda7880e2985c82a8f32e4d03ade',
|
||||||
version: 0x2000012,
|
version: 0x2000012,
|
||||||
merkleRoot: '91b58f19b6eecba94ed0f6e463e8e334ec0bcda7880e2985c82a8f32e4d03adf',
|
merkleRoot: '91b58f19b6eecba94ed0f6e463e8e334ec0bcda7880e2985c82a8f32e4d03adf',
|
||||||
timestamp: 1E9,
|
timestamp: 1E9,
|
||||||
bits: 400000,
|
bits: 400000,
|
||||||
nonce: 123456,
|
nonce: 123456,
|
||||||
height: 123
|
height: 123,
|
||||||
|
chainwork: '0000000000000000000000000000000000000000000000000000000200020002'
|
||||||
};
|
};
|
||||||
var versionBuf = new Buffer(4);
|
var versionBuf = new Buffer(4);
|
||||||
var prevHash = new Buffer(header.prevHash, 'hex');
|
var prevHashBuf = new Buffer(header.prevHash, 'hex');
|
||||||
var merkleRoot = new Buffer(header.merkleRoot, 'hex');
|
var merkleRootBuf = new Buffer(header.merkleRoot, 'hex');
|
||||||
var tsBuf = new Buffer(4);
|
var tsBuf = new Buffer(4);
|
||||||
var bitsBuf = new Buffer(4);
|
var bitsBuf = new Buffer(4);
|
||||||
var nonceBuf = new Buffer(4);
|
var nonceBuf = new Buffer(4);
|
||||||
var heightBuf = new Buffer(4);
|
var heightBuf = new Buffer(4);
|
||||||
|
var chainBuf = new Buffer('0000000000000000000000000000000000000000000000000000000200020002', 'hex');
|
||||||
heightBuf.writeUInt32BE(header.height);
|
heightBuf.writeUInt32BE(header.height);
|
||||||
|
|
||||||
it('should encode header key' , function() {
|
it('should encode header key' , function() {
|
||||||
@ -38,17 +41,17 @@ describe('Header service encoding', function() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should encode header value', function() {
|
it('should encode header value', function() {
|
||||||
|
var prevHashBuf = new Buffer(header.prevHash, 'hex');
|
||||||
versionBuf.writeInt32BE(header.version); // signed
|
versionBuf.writeInt32BE(header.version); // signed
|
||||||
tsBuf.writeUInt32BE(header.timestamp);
|
tsBuf.writeUInt32BE(header.timestamp);
|
||||||
bitsBuf.writeUInt32BE(header.bits);
|
bitsBuf.writeUInt32BE(header.bits);
|
||||||
nonceBuf.writeUInt32BE(header.nonce);
|
nonceBuf.writeUInt32BE(header.nonce);
|
||||||
heightBuf.writeUInt32BE(header.height);
|
heightBuf.writeUInt32BE(header.height);
|
||||||
var chainBuf = new Buffer('0000000000000000000000000000000000000000000000000000000200020002', 'hex');
|
|
||||||
encoding.encodeHeaderValue(header).should.deep.equal(Buffer.concat([
|
encoding.encodeHeaderValue(header).should.deep.equal(Buffer.concat([
|
||||||
hashBuf,
|
hashBuf,
|
||||||
versionBuf,
|
versionBuf,
|
||||||
prevHash,
|
prevHashBuf,
|
||||||
merkleRoot,
|
merkleRootBuf,
|
||||||
tsBuf,
|
tsBuf,
|
||||||
bitsBuf,
|
bitsBuf,
|
||||||
nonceBuf,
|
nonceBuf,
|
||||||
@ -59,13 +62,15 @@ describe('Header service encoding', function() {
|
|||||||
|
|
||||||
it('should decode header value', function() {
|
it('should decode header value', function() {
|
||||||
encoding.decodeHeaderValue(Buffer.concat([
|
encoding.decodeHeaderValue(Buffer.concat([
|
||||||
|
hashBuf,
|
||||||
versionBuf,
|
versionBuf,
|
||||||
prevHash,
|
prevHashBuf,
|
||||||
merkleRoot,
|
merkleRootBuf,
|
||||||
tsBuf,
|
tsBuf,
|
||||||
bitsBuf,
|
bitsBuf,
|
||||||
nonceBuf,
|
nonceBuf,
|
||||||
heightBuf
|
heightBuf,
|
||||||
|
chainBuf
|
||||||
])).should.deep.equal(header);
|
])).should.deep.equal(header);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -7,17 +7,15 @@ var assert = chai.assert;
|
|||||||
var expect = chai.expect;
|
var expect = chai.expect;
|
||||||
var Encoding = require('../../../lib/services/header/encoding');
|
var Encoding = require('../../../lib/services/header/encoding');
|
||||||
var utils = require('../../../lib/utils');
|
var utils = require('../../../lib/utils');
|
||||||
var EventEmitter = require('events').EventEmitter;
|
var Block = require('bitcore-lib').Block;
|
||||||
var Block = require('bcoin').block;
|
|
||||||
var BitcoreBlock = require('bitcore-lib').Block;
|
|
||||||
var BN = require('bn.js');
|
var BN = require('bn.js');
|
||||||
|
|
||||||
describe('Header Service', function() {
|
describe('Header Service', function() {
|
||||||
|
|
||||||
var headerService;
|
var headerService;
|
||||||
var sandbox;
|
var sandbox;
|
||||||
var prevHeader = new BitcoreBlock(new Buffer('01000000b25c0849b469983b4a5b90a49e4c0e4ba3853122ed141b5bd92d14000000000021a8aaa4995e4ce3b885677730b153741feda66a08492287a45c6a131671ba5a72ff504c5a0c011c456e4d060201000000010000000000000000000000000000000000000000000000000000000000000000ffffffff08045a0c011c028208ffffffff0100f2052a010000004341041994d910507ec4b2135dd32a4723caf00f8567f356ffbd5e703786d856b49a89d6597c280d8981238fbde81fa3767161bc3e994c17be41b42235a61c24c73459ac0000000001000000013b517d1aebd89b4034e0cf9b25ecbe82ef162ce71284e92a1f1adebf44ea1409000000008b483045022100c7ebc62e89740ddab42a64435c996e1c91a063f9f2cc004b4f023f7a1be5234402207608837faebec16049461d4ef7de807ce217040fd2a823a29da16ec07e463d440141048f108c0da4b5be3308e2e0b521d02d341de85b36a29285b47f00bc33e57a89cf4b6e76aa4a48ddc9a5e882620779e0f1b19dc98d478052fbd544167c745be1d8ffffffff010026e85a050000001976a914f760ef90462b0a4bde26d597c1f29324f5cd0fc488ac00000000', 'hex'));
|
var prevHeader = new Block(new Buffer('01000000b25c0849b469983b4a5b90a49e4c0e4ba3853122ed141b5bd92d14000000000021a8aaa4995e4ce3b885677730b153741feda66a08492287a45c6a131671ba5a72ff504c5a0c011c456e4d060201000000010000000000000000000000000000000000000000000000000000000000000000ffffffff08045a0c011c028208ffffffff0100f2052a010000004341041994d910507ec4b2135dd32a4723caf00f8567f356ffbd5e703786d856b49a89d6597c280d8981238fbde81fa3767161bc3e994c17be41b42235a61c24c73459ac0000000001000000013b517d1aebd89b4034e0cf9b25ecbe82ef162ce71284e92a1f1adebf44ea1409000000008b483045022100c7ebc62e89740ddab42a64435c996e1c91a063f9f2cc004b4f023f7a1be5234402207608837faebec16049461d4ef7de807ce217040fd2a823a29da16ec07e463d440141048f108c0da4b5be3308e2e0b521d02d341de85b36a29285b47f00bc33e57a89cf4b6e76aa4a48ddc9a5e882620779e0f1b19dc98d478052fbd544167c745be1d8ffffffff010026e85a050000001976a914f760ef90462b0a4bde26d597c1f29324f5cd0fc488ac00000000', 'hex')).header.toObject();
|
||||||
var header = new BitcoreBlock(new Buffer('010000006a39821735ec18a366d95b391a7ff10dee181a198f1789b0550e0d00000000002b0c80fa52b669022c344c3e09e6bb9698ab90707bb4bb412af3fbf31cfd2163a601514c5a0c011c572aef0f0101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff08045a0c011c022003ffffffff0100f2052a01000000434104c5b694d72e601091fd733c6b18b94795c13e2db6b1474747e7be914b407854cad37cee3058f85373b9f9dbb0014e541c45851d5f85e83a1fd7c45e54423718f3ac00000000', 'hex')).header;
|
var header = new Block(new Buffer('010000006a39821735ec18a366d95b391a7ff10dee181a198f1789b0550e0d00000000002b0c80fa52b669022c344c3e09e6bb9698ab90707bb4bb412af3fbf31cfd2163a601514c5a0c011c572aef0f0101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff08045a0c011c022003ffffffff0100f2052a01000000434104c5b694d72e601091fd733c6b18b94795c13e2db6b1474747e7be914b407854cad37cee3058f85373b9f9dbb0014e541c45851d5f85e83a1fd7c45e54423718f3ac00000000', 'hex')).header.toObject();
|
||||||
beforeEach(function() {
|
beforeEach(function() {
|
||||||
sandbox = sinon.sandbox.create();
|
sandbox = sinon.sandbox.create();
|
||||||
headerService = new HeaderService({
|
headerService = new HeaderService({
|
||||||
@ -122,6 +120,7 @@ describe('Header Service', function() {
|
|||||||
header.chainwork = '0000000000000000000000000000000000000000000000000000000000000001';
|
header.chainwork = '0000000000000000000000000000000000000000000000000000000000000001';
|
||||||
|
|
||||||
expect(batch.calledOnce).to.be.true;
|
expect(batch.calledOnce).to.be.true;
|
||||||
|
expect(getChainwork.calledOnce).to.be.true;
|
||||||
var expected = batch.args[0][0];
|
var expected = batch.args[0][0];
|
||||||
|
|
||||||
expect(expected[0]).to.deep.equal({
|
expect(expected[0]).to.deep.equal({
|
||||||
|
|||||||
@ -82,7 +82,7 @@ describe('WebService', function() {
|
|||||||
it('should pass json request limit to json body parser', function(done) {
|
it('should pass json request limit to json body parser', function(done) {
|
||||||
var node = new EventEmitter();
|
var node = new EventEmitter();
|
||||||
var jsonStub = sinon.stub();
|
var jsonStub = sinon.stub();
|
||||||
var TestWebService = proxyquire('../../lib/services/web', {
|
var TestWebService = proxyquire('../../../lib/services/web', {
|
||||||
http: {
|
http: {
|
||||||
createServer: sinon.stub()
|
createServer: sinon.stub()
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user