Merge pull request #249 from maraoz/feature/fix-tests

Fix tests and bootstrap bitcoind datadir
This commit is contained in:
Manuel Aráoz 2014-02-11 19:42:04 -02:00
commit 402bd19336
9 changed files with 93 additions and 77 deletions

View File

@ -29,6 +29,17 @@ switch(process.env.NODE_ENV) {
break;
}
var dataDir = process.env.BITCOIND_DATADIR;
var isWin = /^win/.test(process.platform);
var isMac = /^darwin/.test(process.platform);
var isLinux = /^linux/.test(process.platform);
if (!dataDir) {
if (isWin) dataDir = '%APPDATA%\\Bitcoin\\';
if (isMac) dataDir = process.env.HOME + '/Library/Application Support/Bitcoin/';
if (isLinux) dataDir = process.env.HOME + '/.bitcoin/';
}
dataDir += ((process.env.INSIGHT_NETWORK || 'testnet')==='testnet'?'testnet3':'');
module.exports = {
root: rootPath,
appName: 'Insight ' + env,
@ -41,9 +52,7 @@ module.exports = {
host: process.env.BITCOIND_HOST || '127.0.0.1',
port: b_port,
p2pPort: p2p_port,
dataDir: (process.env.BITCOIND_DATADIR +
((process.env.INSIGHT_NETWORK || 'testnet')==='testnet'?'testnet3':'')),
dataDir: dataDir,
// DO NOT CHANGE THIS!
disableAgent: true
},

View File

@ -27,6 +27,7 @@ function spec() {
this.peerman = new this.PeerManager();
this.load_peers();
this.sync.init(opts, function() {
if (!cb) return;
return cb();
});
};

View File

@ -475,7 +475,7 @@ function spec(b) {
}
else {
console.log ('WARN in TX: %s could not parse OUTPUT %d', tx.txid, o.n);
//console.log ('WARN in TX: %s could not parse OUTPUT %d', tx.txid, o.n);
return next_out();
}
},

View File

@ -72,6 +72,11 @@ Check out the <a href="http://github.com/bitpay/insight" target="_blank">source
<a href="https://code.google.com/p/leveldb/" target="_blank" class="leveldb" title="LevelDB"></a>
<a href="http://nodejs.org" target="_blank" class="nodejs" title="NodeJs"></a>
</div>
<p>
Insight is still in development, so be sure to report any bugs
and provide feedback for improvement at our <a href="https://github.com/bitpay/insight/issues">
github issue tracker</a>.
</p>
</div> <!-- END OF COL-3 -->
</div>
</div>

View File

@ -1,53 +1,52 @@
#!/usr/bin/env node
'use strict';
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
var assert = require('assert'),
fs = require('fs'),
var assert = require('assert'),
fs = require('fs'),
Address = require('../../app/models/Address').class(),
TransactionDb = require('../../lib/TransactionDb').class(),
addrValid = JSON.parse(fs.readFileSync('test/integration/addr.json'));
var txDb;
describe('Address balances', function(){
var txDb;
describe('Address balances', function() {
before(function(c) {
txDb = new TransactionDb();
return c();
});
addrValid.forEach( function(v) {
addrValid.forEach(function(v) {
if (v.disabled) {
console.log(v.addr + " => disabled in JSON");
}
else {
it('Info for: ' + v.addr, function(done) {
console.log(v.addr + ' => disabled in JSON');
} else {
it('Address info for: ' + v.addr, function(done) {
this.timeout(5000);
var a = new Address(v.addr, txDb);
a.update(function(err) {
if (err) done(err);
assert.equal(v.addr, a.addrStr);
if (v.txApperances)
assert.equal(v.txApperances, a.txApperances, 'txApperances: ' + a.txApperances );
if (v.totalReceived) assert.equal(v.totalReceived, a.totalReceived, 'received: ' + a.totalReceived );
if (v.totalSent) assert.equal(v.totalSent, a.totalSent, 'send: ' + a.totalSent);
if (v.txApperances)
assert.equal(v.txApperances, a.txApperances, 'txApperances: ' + a.txApperances);
if (v.totalReceived) assert.equal(v.totalReceived, a.totalReceived, 'received: ' + a.totalReceived);
if (v.totalSent) assert.equal(v.totalSent, a.totalSent, 'send: ' + a.totalSent);
if (v.balance) assert.equal(v.balance, a.balance, 'balance: ' + a.balance);
if (v.transactions) {
v.transactions.forEach( function(tx) {
assert(a.transactions.indexOf(tx)>-1,'have tx '+tx);
v.transactions.forEach(function(tx) {
assert(a.transactions.indexOf(tx) > -1, 'have tx ' + tx);
});
}
done();
});
});
});
}
});
});

View File

@ -43,9 +43,9 @@
},
{
"addr": "mzW2hdZN2um7WBvTDerdahKqRgj3md9C29",
"txApperances": 6047,
"balance": 1199.74393851,
"totalReceived": 1199.74393851,
"txApperances": 2041,
"balance": 1199.74393853,
"totalReceived": 1199.74393853,
"totalSent": 0
},
{

View File

@ -1,4 +1,5 @@
#!/usr/bin/env node
'use strict';
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
@ -7,14 +8,13 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'development';
var TESTING_BLOCK = '000000000185678d3d7ecc9962c96418174431f93fe20bf216d5565272423f74';
var
assert = require('assert'),
// config = require('../../config/config'),
BlockDb = require('../../lib/BlockDb').class();
assert = require('assert'),
// config = require('../../config/config'),
BlockDb = require('../../lib/BlockDb').class();
var bDb;
describe('BlockDb fromHashWithInfo', function(){
describe('BlockDb fromHashWithInfo', function() {
before(function(c) {
bDb = new BlockDb();
@ -23,11 +23,15 @@ describe('BlockDb fromHashWithInfo', function(){
it('should poll block\'s info from bitcoind', function(done) {
bDb.fromHashWithInfo(TESTING_BLOCK, function(err, b2) {
if (err) done(err);
assert.equal(b2.hash, TESTING_BLOCK);
assert.equal(b2.info.hash, TESTING_BLOCK);
assert.equal(b2.info.chainwork, '000000000000000000000000000000000000000000000000001b6dc969ffe847');
done();
if (err) done(err);
assert.equal(b2.hash, TESTING_BLOCK, 'hash');
assert.equal(b2.info.hash, TESTING_BLOCK, 'info.hash');
assert.equal(b2.info.height, 71619);
assert.equal(b2.info.nonce, 3960980741);
assert.equal(b2.info.bits, '1c018c14');
assert.equal(b2.info.merkleroot, '9a326cb524aa2e5bc926b8c1f6de5b01257929ee02158054b55aae93a55ec9dd');
assert.equal(b2.info.nextblockhash, '000000000121941b3b10d76fbe67b35993df91eb3398e9153e140b4f6213cb84');
done();
});
});
it('return true in has', function(done) {
@ -37,4 +41,3 @@ describe('BlockDb fromHashWithInfo', function(){
});
});
});

View File

@ -0,0 +1,17 @@
'use strict';
var BlockDb = require('../../lib/BlockDb').class();
var height_needed = 180000;
var bDb = new BlockDb();
var expect = require('chai').expect;
describe('Node check', function() {
it('should contain block ' + height_needed, function(done) {
bDb.blockIndex(height_needed, function(err, b) {
expect(err).to.equal(null);
expect(b).to.not.equal(null);
done();
});
});
});

View File

@ -7,72 +7,54 @@ var PeerSync = require('../../lib/PeerSync.js').class();
describe('PeerSync', function() {
var ps;
beforeEach(function() {
beforeEach(function(done) {
ps = new PeerSync();
ps.init({verbose: false});
ps.init({
verbose: false
}, done);
});
afterEach(function(){
afterEach(function() {
ps.close();
});
describe('#init()', function() {
it.skip('should return with no errors', function() {
it('should return with no errors', function() {
var other_ps = new PeerSync();
expect(other_ps.init.bind(other_ps)).not.to.throw(Error);
expect(other_ps.init.bind(other_ps)).not.to.
throw (Error);
other_ps.close();
});
});
describe('#handle_inv()', function() {
describe('#handleInv()', function() {
var inv_info = {
message: {invs: []},
conn: {sendGetData: sinon.spy()}
message: {
invs: []
},
conn: {
sendGetData: sinon.spy()
}
};
it.skip('should return with no errors', function(){
it('should return with no errors', function() {
expect(function() {
ps.handle_inv(inv_info);
}).not.to.throw(Error);
ps.handleInv(inv_info);
}).not.to.
throw (Error);
});
it.skip('should call sendGetData', function() {
ps.handle_inv(inv_info);
it('should call sendGetData', function() {
ps.handleInv(inv_info);
expect(inv_info.conn.sendGetData.calledTwice).to.be.ok;
});
});
describe('#handle_tx()', function() {
var tx_info = {
message: { tx: {getStandardizedObject: function(){
return {hash: 'dac28b5c5e70c16942718f3a22438348c1b709e01d398795fce8fc455178b973'};}}}
};
it.skip('should call storeTxs', function(){
var spy = sinon.spy(ps.sync, 'storeTxs');
ps.handle_tx(tx_info);
expect(spy.calledOnce).to.be.ok;
});
});
describe('#handle_block()', function() {
var block_info = {
message: { block: {calcHash: function(){
return new Buffer('01234');
}, txs: [{hash: new Buffer('cabafeca')}, {hash: new Buffer('bacacafe')}]}}
};
it.skip('should call storeBlock', function(){
var spy = sinon.spy(ps.sync, 'storeBlock');
ps.handle_block(block_info);
expect(spy.calledOnce).to.be.ok;
});
});
describe('#run()', function() {
it.skip('should setup peerman', function() {
it('should setup peerman', function() {
var startSpy = sinon.spy(ps.peerman, 'start');
var onSpy = sinon.spy(ps.peerman, 'on');
ps.run();
expect(startSpy.called).to.be.ok;
expect(onSpy.called).to.be.ok;
});
});
});