Fixed fake bitcoind to return the correct headers when asked.
This commit is contained in:
parent
34928cac18
commit
9cbc66743d
@ -49,6 +49,14 @@ var SimpleMap = function SimpleMap() {
|
|||||||
return array.length !== _.compact(array).length;
|
return array.length !== _.compact(array).length;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.remove = function(item) {
|
||||||
|
var index = object[item];
|
||||||
|
if (index) {
|
||||||
|
delete object[item];
|
||||||
|
array.splice(index, 1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
this.get = function (key) {
|
this.get = function (key) {
|
||||||
return array[object[key]];
|
return array[object[key]];
|
||||||
};
|
};
|
||||||
@ -79,24 +87,6 @@ var SimpleMap = function SimpleMap() {
|
|||||||
var reorgBlock;
|
var reorgBlock;
|
||||||
var blocksGenerated = 0;
|
var blocksGenerated = 0;
|
||||||
|
|
||||||
var getHeaders = function() {
|
|
||||||
var blocks = require('./data/blocks.json');
|
|
||||||
return blocks.map(function(block) {
|
|
||||||
var blk = new Block(new Buffer(block, 'hex'));
|
|
||||||
return blk.header;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var getBlocks = function() {
|
|
||||||
var ret = new SimpleMap();
|
|
||||||
var blocks = require('./data/blocks.json');
|
|
||||||
blocks.forEach(function(raw) {
|
|
||||||
var blk = BcoinBlock.fromRaw(raw, 'hex');
|
|
||||||
ret.set(blk.rhash(), blk);
|
|
||||||
});
|
|
||||||
return ret;
|
|
||||||
};
|
|
||||||
|
|
||||||
var getReorgBlock = function() {
|
var getReorgBlock = function() {
|
||||||
return BcoinBlock.fromRaw(require('./data/blocks_reorg.json')[0], 'hex');
|
return BcoinBlock.fromRaw(require('./data/blocks_reorg.json')[0], 'hex');
|
||||||
};
|
};
|
||||||
@ -107,7 +97,26 @@ var TestBitcoind = function TestBitcoind() {
|
|||||||
self.blocks = [];
|
self.blocks = [];
|
||||||
self.currentBlockIndex = 0;
|
self.currentBlockIndex = 0;
|
||||||
|
|
||||||
|
self._getHeaders = function() {
|
||||||
|
var ret = [];
|
||||||
|
for(var i = 0; i < self.blocks.length; i++) {
|
||||||
|
var hdr = new Block(self.blocks.getIndex(i).toRaw()).header;
|
||||||
|
ret.push(hdr);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
|
||||||
|
self._getBlocks = function() {
|
||||||
|
self.blocks = new SimpleMap();
|
||||||
|
var blocks = require('./data/blocks.json');
|
||||||
|
blocks.forEach(function(raw) {
|
||||||
|
var blk = BcoinBlock.fromRaw(raw, 'hex');
|
||||||
|
self.blocks.set(blk.rhash(), blk);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
self.start = function() {
|
self.start = function() {
|
||||||
|
self._getBlocks();
|
||||||
self._server = net.createServer(self._setOnDataHandlers.bind(self));
|
self._server = net.createServer(self._setOnDataHandlers.bind(self));
|
||||||
self._server.listen(18444, '127.0.0.1');
|
self._server.listen(18444, '127.0.0.1');
|
||||||
};
|
};
|
||||||
@ -134,7 +143,7 @@ var TestBitcoind = function TestBitcoind() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (command === 'getheaders') {
|
if (command === 'getheaders') {
|
||||||
msg.push(messages.Headers(getHeaders())); // these are bitcore block headers
|
msg.push(messages.Headers(self._getHeaders())); // these are bitcore block headers
|
||||||
}
|
}
|
||||||
|
|
||||||
if (command === 'getblocks') {
|
if (command === 'getblocks') {
|
||||||
@ -171,6 +180,8 @@ var TestBitcoind = function TestBitcoind() {
|
|||||||
// prompting them to send a getdata message back to us with the hash
|
// prompting them to send a getdata message back to us with the hash
|
||||||
// of the resource.
|
// of the resource.
|
||||||
self.sendBlock = function(block) {
|
self.sendBlock = function(block) {
|
||||||
|
var lastHash = self.blocks.getLastIndex().rhash();
|
||||||
|
self.blocks.remove(lastHash);
|
||||||
self.blocks.set(block.rhash(), block);
|
self.blocks.set(block.rhash(), block);
|
||||||
var inv = p2p.Inventory.forBlock(block.rhash());
|
var inv = p2p.Inventory.forBlock(block.rhash());
|
||||||
var message = messages.Inventory([inv]);
|
var message = messages.Inventory([inv]);
|
||||||
@ -675,7 +686,6 @@ var performTest2 = function(fakeServer, callback) {
|
|||||||
// 2. init server with blocks (the initial set from which bitcore will sync)
|
// 2. init server with blocks (the initial set from which bitcore will sync)
|
||||||
function(next) {
|
function(next) {
|
||||||
console.log('step 2: init server with blocks (the initial set from which bitcore will sync)');
|
console.log('step 2: init server with blocks (the initial set from which bitcore will sync)');
|
||||||
fakeServer.blocks = getBlocks();
|
|
||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
// 3. start bitcore in slow mode (slow the block service's sync speed down so we
|
// 3. start bitcore in slow mode (slow the block service's sync speed down so we
|
||||||
@ -727,7 +737,6 @@ var performTest3 = function(fakeServer, callback) {
|
|||||||
// 2. init server with blocks (the initial set from which bitcore will sync)
|
// 2. init server with blocks (the initial set from which bitcore will sync)
|
||||||
function(next) {
|
function(next) {
|
||||||
console.log('step 2: init server with blocks (the initial set from which bitcore will sync)');
|
console.log('step 2: init server with blocks (the initial set from which bitcore will sync)');
|
||||||
fakeServer.blocks = getBlocks();
|
|
||||||
next();
|
next();
|
||||||
},
|
},
|
||||||
// 3. start bitcore in slow mode (slow the block service's sync speed down so we
|
// 3. start bitcore in slow mode (slow the block service's sync speed down so we
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user