diff --git a/regtest/address.js b/regtest/address.js index c36f164..01b83a0 100644 --- a/regtest/address.js +++ b/regtest/address.js @@ -232,12 +232,12 @@ var startBitcoind = function(count, callback) { console.log(count + ' bitcoind\'s started at pid(s): ' + pids); async.retry({ interval: 1000, times: 1000 }, function(next) { - rpc1.getInfo(function(err, res) { + rpc1.getInfo(function(err) { if (err) { return next(err); } // there is a bit of time even after the rpc server comes online that the rpc server is not truly ready - setTimeout(function(err) { + setTimeout(function() { next(); }, 1000); }); @@ -292,14 +292,14 @@ var buildInitialChain = function(callback) { rpc1.sendToAddress(rpc2Address, 25, next); }, function(res, next) { - console.log('TXID: ' + res.result); + //console.log('TXID: ' + res.result); console.log('generating 7 blocks'); blocksGenerated += 7; rpc1.generate(7, next); }, function(res, next) { rpc2.getBalance(function(err, res) { - console.log(res); + //console.log(res); next(); }); }, @@ -318,7 +318,7 @@ var buildInitialChain = function(callback) { }, function(res, next) { txid = res.result; - console.log('sending from rpc2Address TXID: ', res); + //console.log('sending from rpc2Address TXID: ', res); console.log('generating 6 blocks'); blocksGenerated += 6; rpc2.generate(6, next); @@ -329,7 +329,7 @@ var buildInitialChain = function(callback) { return callback(err); } rpc1.getInfo(function(err, res) { - console.log(res); + //console.log(res); callback(); }); }); @@ -423,7 +423,7 @@ describe('Address', function() { return done(err); } - console.log(data); + //console.log(data); expect(data.balance).to.equal(0); expect(data.totalSent).to.equal(25); done(); @@ -450,7 +450,7 @@ describe('Address', function() { return done(err); } - console.log(data); + //console.log(data); expect(data.length).equal(1); expect(data[0].amount).equal(20); expect(data[0].satoshis).equal(2000000000); @@ -479,7 +479,7 @@ describe('Address', function() { return done(err); } - console.log(data); + //console.log(data); expect(data.length).to.equal(1); expect(data[0].amount).to.equal(20); expect(data[0].satoshis).to.equal(2000000000); @@ -513,7 +513,7 @@ describe('Address', function() { return done(err); } - console.log(data); + //console.log(data); expect(data.length).to.equal(1); expect(data[0].amount).to.equal(20); expect(data[0].satoshis).to.equal(2000000000); @@ -538,7 +538,7 @@ describe('Address', function() { return done(err); } - console.log(data); + //console.log(data); expect(data.items.length).to.equal(3); expect(data.from).to.equal(0); expect(data.to).to.equal(3); @@ -571,7 +571,7 @@ describe('Address', function() { return done(err); } - console.log(data); + //console.log(data); expect(data.items.length).to.equal(3); expect(data.from).to.equal(0); expect(data.to).to.equal(3); @@ -599,7 +599,7 @@ describe('Address', function() { return done(err); } - var data = JSON.parse(data); + data = JSON.parse(data); expect(data).to.equal(2000000000); done(); @@ -626,7 +626,7 @@ describe('Address', function() { return done(err); } - var data = JSON.parse(data); + data = JSON.parse(data); expect(data).to.equal(0); done(); }); @@ -650,8 +650,7 @@ describe('Address', function() { if(err) { return done(err); } - - var data = JSON.parse(data); + data = JSON.parse(data); expect(data).to.equal(0); done(); }); @@ -664,6 +663,7 @@ describe('Address', function() { var pk1; var tx; var utxo; + var amt = 0; async.waterfall([ function(next) { @@ -678,14 +678,15 @@ describe('Address', function() { pk1 = new PrivateKey('testnet'); var change = new PrivateKey('testnet'); var changeAddress = change.toAddress(); + amt = utxo.amount * 1e8; var from = { txId: utxo.txid, address: utxo.address, script: utxo.scriptPubKey, - satoshis: utxo.amount * 1e8, + satoshis: amt, outputIndex: utxo.vout }; - tx = new Transaction().from(from).to(pk1.toAddress(), 2500000000).change(changeAddress).sign(pk); + tx = new Transaction().from(from).to(pk1.toAddress(), amt - 1000).change(changeAddress).sign(pk); rpc2.sendRawTransaction(tx.serialize(), next); }, function(res, next) { @@ -696,11 +697,11 @@ describe('Address', function() { function(res, next) { var tx2 = new Transaction().from({ txId: txid, - satoshis: 2500000000, + satoshis: amt - 1000, outputIndex: 0, script: tx.outputs[0].script.toHex(), address: pk1.toAddress() - }).to(pk1.toAddress(), 2500000000 - 1000).sign(pk1); + }).to(pk1.toAddress(), amt - 2000).sign(pk1); rpc2.sendRawTransaction(tx2.serialize(), next); }, function(res, next) { @@ -734,7 +735,7 @@ describe('Address', function() { return done(err); } - console.log(data); + //console.log(data); expect(data.transactions.length).to.equal(2); done(); diff --git a/regtest/reorg.js b/regtest/reorg.js index 2204874..5a546e7 100644 --- a/regtest/reorg.js +++ b/regtest/reorg.js @@ -28,6 +28,7 @@ var bitcore = require('bitcore-lib'); */ +var reorgBlock; var blocksGenerated = 0; var rpcConfig = { @@ -322,6 +323,23 @@ var startBitcore = function(callback) { }; +var sync100Blocks = function(callback) { + // regtests can generate high numbers of blocks all at one time, but + // the full node may not relay those blocks faithfully. This is a problem + // with the full node and not bitcore. So, generate blocks at a slow rate + async.timesSeries(100, function(n, next) { + rpc2.generate(1, function(err) { + if (err) { + return next(err); + } + setTimeout(function() { + next(); + }, 100); + }); + }, callback); + +}; + var performTest = function(callback) { async.series([ @@ -410,7 +428,7 @@ var performTest = function(callback) { console.log('step 8: generating 100 blocks on bitcoin 2.'); blocksGenerated += 100; console.log('generating 100 blocks on bitcoin 2.'); - rpc2.generate(100, next); + sync100Blocks(next); }, // 9. let bitcore connect and sync those 100 blocks function(next) { @@ -443,7 +461,13 @@ var performTest = function(callback) { console.log('step 12: generating one block'); // resetting height to 11 blocksGenerated = 11; - rpc1.generate(1, next); + rpc1.generate(1, function(err, res) { + if(err) { + return next(err); + } + reorgBlock = res.result[0]; + next(); + }); }, // 13. let bitcore sync that block and reorg back to it function(next) { @@ -464,13 +488,19 @@ describe('Reorg', function() { this.timeout(60000); after(function(done) { - shutdownBitcoind(done); + shutdownBitcore(function() { + shutdownBitcoind(done); + }); }); it('should reorg correctly when starting and a reorg happen whilst shutdown', function(done) { performTest(function(err) { - return done(); + + if(err) { + return done(err); + } + var httpOpts = { hostname: 'localhost', port: 53001, @@ -488,6 +518,7 @@ describe('Reorg', function() { } console.log(data); + expect(data.height).to.equal(11); done(); });