refactor: lint tests, benchmarks, etc.

This commit is contained in:
Christopher Jeffrey 2017-06-24 14:35:10 -07:00
parent d3b24da2e1
commit f70d6b8b45
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
31 changed files with 67 additions and 154 deletions

View File

@ -3,7 +3,8 @@
"env": {
"browser": true,
"es6": true,
"node": true
"node": true,
"mocha": true
},
"parserOptions": {
"ecmaVersion": 8

View File

@ -2,41 +2,22 @@
var fs = require('fs');
var TX = require('../lib/primitives/tx');
var CoinView = require('../lib/coins/coinview');
var BufferWriter = require('../lib/utils/writer');
var StaticWriter = require('../lib/utils/staticwriter');
var bench = require('./bench');
var tx3 = parseTX('../test/data/tx3.hex');
var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8');
var i, tx, end, raw;
var i, tx, end;
wtx = Buffer.from(wtx.trim(), 'hex');
tx = TX.fromRaw(wtx);
function parseTX(file) {
var data = fs.readFileSync(__dirname + '/' + file, 'utf8');
var parts = data.trim().split(/\n+/);
var raw = parts[0];
var tx = TX.fromRaw(raw.trim(), 'hex');
var view = new CoinView();
var i, prev;
for (i = 1; i < parts.length; i++) {
raw = parts[i];
prev = TX.fromRaw(raw.trim(), 'hex');
view.addTX(prev, -1);
}
return { tx: tx, view: view };
}
end = bench('serialize (static-writer)');
for (i = 0; i < 10000; i++) {
tx._raw = null;
tx._size = -1;
tx._witness = -1;
raw = tx.writeWitness(new StaticWriter(tx.getWitnessSizes().total)).render();
tx.writeWitness(new StaticWriter(tx.getWitnessSizes().total)).render();
}
end(i);
@ -45,6 +26,6 @@ for (i = 0; i < 10000; i++) {
tx._raw = null;
tx._size = -1;
tx._witness = -1;
raw = tx.writeWitness(new BufferWriter()).render();
tx.writeWitness(new BufferWriter()).render();
}
end(i);

View File

@ -9,31 +9,31 @@ var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8');
wtx = TX.fromRaw(wtx.trim(), 'hex');
var coins = Coins.fromTX(wtx);
var raw;
var i, j, end, raw, hash;
//raw = coins.toRaw();
//console.log(Coins.fromRaw(raw));
var end = bench('serialize');
for (var i = 0; i < 10000; i++)
end = bench('serialize');
for (i = 0; i < 10000; i++)
raw = coins.toRaw();
end(i);
var end = bench('parse');
for (var i = 0; i < 10000; i++)
end = bench('parse');
for (i = 0; i < 10000; i++)
Coins.fromRaw(raw);
end(i);
var end = bench('parse-single');
var hash = wtx.hash('hex');
for (var i = 0; i < 10000; i++)
end = bench('parse-single');
hash = wtx.hash('hex');
for (i = 0; i < 10000; i++)
Coins.parseCoin(raw, hash, 5);
end(i);
var coins = Coins.fromRaw(raw);
var end = bench('get');
var j;
coins = Coins.fromRaw(raw);
end = bench('get');
for (var i = 0; i < 10000; i++)
for (var j = 0; j < coins.outputs.length; j++)
for (i = 0; i < 10000; i++)
for (j = 0; j < coins.outputs.length; j++)
coins.get(j);
end(i * coins.outputs.length);

View File

@ -6,7 +6,8 @@ var HD = require('../lib/hd');
var Mnemonic = require('../lib/hd/mnemonic');
var mnemonic = new Mnemonic();
var key = HD.fromMnemonic(mnemonic);
HD.fromMnemonic(mnemonic);
var phrase = mnemonic.getPhrase();
var i, end;

View File

@ -18,7 +18,7 @@ var btx = { tx: block.txs[397], view: new CoinView() };
var tx3 = parseTX('../test/data/tx3.hex');
var wtx = fs.readFileSync(__dirname + '/../test/data/wtx.hex', 'utf8');
var i, tx, raw, end, flags, input;
var i, tx, end, flags, input;
wtx = Buffer.from(wtx.trim(), 'hex');
@ -53,7 +53,7 @@ end(i);
end = bench('serialize');
for (i = 0; i < 1000; i++) {
tx._raw = null;
raw = tx.toRaw();
tx.toRaw();
}
end(i);

View File

@ -1,7 +1,6 @@
'use strict';
var bench = require('./bench');
var co = require('../lib/utils/co');
var crypto = require('../lib/crypto/crypto');
var WalletDB = require('../lib/wallet/walletdb');
var MTX = require('../lib/primitives/mtx');
@ -25,8 +24,8 @@ async function runBench() {
var result, tx, mtx, options;
// Open and Create
yield walletdb.open();
wallet = yield walletdb.create();
await walletdb.open();
wallet = await walletdb.create();
addrs = [];
// Accounts
@ -35,7 +34,7 @@ async function runBench() {
jobs.push(wallet.createAccount({}));
end = bench('accounts');
result = yield Promise.all(jobs);
result = await Promise.all(jobs);
end(1000);
for (i = 0; i < result.length; i++)
@ -49,7 +48,7 @@ async function runBench() {
}
end = bench('keys');
result = yield Promise.all(jobs);
result = await Promise.all(jobs);
end(1000 * 10);
for (i = 0; i < result.length; i++)
@ -70,7 +69,7 @@ async function runBench() {
}
end = bench('deposit');
result = yield Promise.all(jobs);
result = await Promise.all(jobs);
end(10000);
// TX redemption
@ -91,17 +90,17 @@ async function runBench() {
}
end = bench('redemption');
result = yield Promise.all(jobs);
result = await Promise.all(jobs);
end(10000);
// Balance
end = bench('balance');
result = yield wallet.getBalance();
result = await wallet.getBalance();
end(1);
// Coins
end = bench('coins');
result = yield wallet.getCoins();
result = await wallet.getCoins();
end(1);
// Create
@ -113,7 +112,7 @@ async function runBench() {
address: addrs[0]
}]
};
yield wallet.createTX(options);
await wallet.createTX(options);
end(1);
}

View File

@ -4,11 +4,8 @@
var Config = require('../lib/node/config');
var util = require('../lib/utils/util');
var co = require('../lib/utils/co');
var Client = require('../lib/http/client');
var Wallet = require('../lib/http/wallet');
var Amount = require('../lib/btc/amount');
var main;
function CLI() {
this.config = new Config('bcoin');
@ -323,6 +320,7 @@ CLI.prototype.createTX = async function createTX() {
CLI.prototype.signTX = async function signTX() {
var options = {};
var raw = this.config.str(['tx', 0]);
var tx;
options.passphrase = this.config.str('passphrase');

View File

@ -21,7 +21,6 @@ if (process.argv.indexOf('--version') !== -1
var bcoin = require('../');
var plugin = require('../lib/wallet/plugin');
var co = bcoin.co;
var node;
node = new bcoin.fullnode({

View File

@ -8,7 +8,6 @@ var assert = require('assert');
var bcoin = require('../');
var plugin = require('../lib/wallet/plugin');
var util = bcoin.util;
var co = bcoin.co;
var node;
node = bcoin.spvnode({

View File

@ -2,13 +2,12 @@
var encoding = require('bcoin/lib/utils/encoding');
var co = require('bcoin/lib/utils/co');
var Address = require('bcoin/lib/primitives/address');
var Outpoint = require('bcoin/lib/primitives/outpoint');
var MTX = require('bcoin/lib/primitives/mtx');
var HTTP = require('bcoin/lib/http');
var FullNode = require('bcoin/lib/node/fullnode');
var plugin = require('bcoin/lib/wallet/plugin');
var node, wallet, walletdb, addr, hash;
var node, wallet;
node = new FullNode({
network: 'regtest',
@ -26,7 +25,7 @@ wallet = new HTTP.Wallet({
async function main() {
var wdb = node.require('walletdb');
var w, acct, info, hash, balance, tx;
var w, acct, hash, balance, tx;
await node.open();
@ -63,7 +62,7 @@ async function main() {
}
async function fundWallet(wdb, addr) {
var tx, balance, receive, details;
var tx;
// Coinbase
tx = new MTX();

View File

@ -1,7 +1,6 @@
'use strict';
var bcoin = require('../');
var co = bcoin.co;
var assert = require('assert');
var file = process.argv[2];
var BufferWriter = require('../lib/utils/writer');

View File

@ -11,7 +11,6 @@ var Coins = require('../lib/coins/coins');
var UndoCoins = require('../lib/coins/undocoins');
var Coin = require('../lib/primitives/coin');
var Output = require('../lib/primitives/output');
var util = require('../lib/utils/util');
var LDB = require('../lib/db/ldb');
var file = process.argv[2];
var options = {};
@ -215,15 +214,6 @@ function pair(prefix, hash) {
return key;
}
function ipair(prefix, num) {
var key = Buffer.allocUnsafe(5);
if (typeof prefix === 'string')
prefix = prefix.charCodeAt(0);
key[0] = prefix;
key.writeUInt32BE(num, 1, true);
return key;
}
function injectCoin(undo, coin) {
var output = new Output();

View File

@ -2,8 +2,6 @@
var assert = require('assert');
var encoding = require('../lib/utils/encoding');
var co = require('../lib/utils/co');
var BufferWriter = require('../lib/utils/writer');
var BufferReader = require('../lib/utils/reader');
var crypto = require('../lib/crypto/crypto');
var util = require('../lib/utils/util');
@ -138,15 +136,6 @@ function pair(prefix, hash) {
return key;
}
function ipair(prefix, num) {
var key = Buffer.allocUnsafe(5);
if (typeof prefix === 'string')
prefix = prefix.charCodeAt(0);
key[0] = prefix;
key.writeUInt32BE(num, 1, true);
return key;
}
(async function() {
await db.open();
console.log('Opened %s.', file);

View File

@ -1,5 +1,6 @@
'use strict';
var assert = require('assert');
var bcoin = require('../');
var walletdb = require('../lib/wallet/walletdb');
var encoding = require('../lib/utils/encoding');
@ -7,12 +8,10 @@ var Path = require('../lib/wallet/path');
var MasterKey = require('../lib/wallet/masterkey');
var Account = require('../lib/wallet/account');
var Wallet = require('../lib/wallet/wallet');
var layout = walletdb.layout;
var co = bcoin.co;
var assert = require('assert');
var file = process.argv[2];
var BufferReader = require('../lib/utils/reader');
var BufferWriter = require('../lib/utils/writer');
var layout = walletdb.layout;
var file = process.argv[2];
var db, batch;
assert(typeof file === 'string', 'Please pass in a database path.');

View File

@ -4,15 +4,10 @@ var assert = require('assert');
var bcoin = require('../');
var encoding = require('../lib/utils/encoding');
var WalletDB = require('../lib/wallet/walletdb');
var TXDB = require('../lib/wallet/txdb');
var BufferWriter = require('../lib/utils/writer');
var BufferReader = require('../lib/utils/reader');
var TX = require('../lib/primitives/tx');
var Coin = require('../lib/primitives/coin');
var util = require('../lib/utils/util');
var co = bcoin.co;
var layout = WalletDB.layout;
var tlayout = TXDB.layout;
var file = process.argv[2];
var db, batch;

View File

@ -2,10 +2,6 @@
var assert = require('assert');
var bcoin = require('../');
var BufferWriter = require('../lib/utils/writer');
var BufferReader = require('../lib/utils/reader');
var util = require('../lib/utils/util');
var co = bcoin.co;
var file = process.argv[2];
var db, batch;

View File

@ -5,8 +5,6 @@ var bcoin = require('../');
var encoding = require('../lib/utils/encoding');
var BufferWriter = require('../lib/utils/writer');
var BufferReader = require('../lib/utils/reader');
var util = require('../lib/utils/util');
var co = bcoin.co;
var file = process.argv[2];
var db, batch;
@ -273,8 +271,10 @@ async function unstate() {
await patchPathMaps();
await batch.write();
await db.close();
// await updateLookahead();
// await unstate();
// Do not use:
await updateLookahead();
await unstate();
})().then(function() {
console.log('Migration complete.');
console.log('Rescan is required...');

View File

@ -62,7 +62,7 @@
"browserify": "browserify --im -o browser/bcoin.js lib/bcoin.js && browserify --im -o browser/bcoin-master.js lib/workers/master.js",
"uglify": "uglifyjs -m -o browser/bcoin.min.js browser/bcoin.js && uglifyjs -m -o browser/bcoin-master.min.js browser/bcoin-master.js",
"clean": "rm browser/bcoin.js browser/bcoin.min.js browser/bcoin-master.js browser/bcoin-master.min.js",
"lint": "eslint lib/ || exit 0",
"lint": "eslint lib/ test/ migrate/ examples/ bench/ bin/cli bin/node bin/spvnode || exit 0",
"docs": "jsdoc -c jsdoc.json"
},
"browser": {

View File

@ -243,7 +243,7 @@ describe('Bech32', function() {
INVALID_ADDRESS.forEach(function(test) {
it('should have invalid address for ' + test, function() {
var ok1, ok2, ok;
var ok1, ok2;
try {
ok1 = Address.fromBech32(test, 'main');
@ -257,7 +257,7 @@ describe('Bech32', function() {
ok2 = null;
}
assert(!ok2);
assert(!ok1 && !ok2);
});
});
});

View File

@ -4,7 +4,6 @@ var assert = require('assert');
var BN = require('../lib/crypto/bn');
var consensus = require('../lib/protocol/consensus');
var encoding = require('../lib/utils/encoding');
var co = require('../lib/utils/co');
var Coin = require('../lib/primitives/coin');
var Script = require('../lib/script/script');
var Chain = require('../lib/blockchain/chain');
@ -770,7 +769,7 @@ describe('Chain', function() {
it('should mine 111 multisig blocks', async function() {
var flags = common.flags.DEFAULT_FLAGS & ~common.flags.VERIFY_POW;
var i, j, script, job, cb, output, val, block;
var i, j, script, cb, output, val, block;
script = new Script();
script.push(new BN(20));

View File

@ -1,27 +1,14 @@
'use strict';
var assert = require('assert');
var util = require('../lib/utils/util');
var encoding = require('../lib/utils/encoding');
var crypto = require('../lib/crypto/crypto');
var consensus = require('../lib/protocol/consensus');
var Network = require('../lib/protocol/network');
var TX = require('../lib/primitives/tx');
var Block = require('../lib/primitives/block');
var Coin = require('../lib/primitives/coin');
var Output = require('../lib/primitives/output');
var Script = require('../lib/script/script');
var Witness = require('../lib/script/witness');
var Input = require('../lib/primitives/input');
var Outpoint = require('../lib/primitives/outpoint');
var CoinView = require('../lib/coins/coinview');
var Coins = require('../lib/coins/coins');
var UndoCoins = require('../lib/coins/undocoins');
var StaticWriter = require('../lib/utils/staticwriter');
var BufferReader = require('../lib/utils/reader');
var KeyRing = require('../lib/primitives/keyring');
var parseTX = require('./util/common').parseTX;
var opcodes = Script.opcodes;
var data = parseTX('data/tx1.hex');
var tx1 = data.tx;
@ -115,7 +102,6 @@ describe('Coins', function() {
});
it('should handle coin view', function() {
var hash = tx1.hash('hex');
var view = new CoinView();
var i, tx, size, bw, br;
var raw, res, prev, coins;

View File

@ -1,9 +1,8 @@
'use strict';
var assert = require('assert');
var fs = require('fs');
var fs = require('../lib/utils/fs');
var GCSFilter = require('../lib/utils/gcs');
var util = require('../lib/utils/util');
var crypto = require('../lib/crypto/crypto');
var Block = require('../lib/primitives/block');
var Outpoint = require('../lib/primitives/outpoint');

View File

@ -225,12 +225,12 @@ describe('HTTP', function() {
it('should validate an address', async function() {
var json = await wallet.client.rpc.execute('validateaddress', [addr.toString()]);
assert.deepStrictEqual(json, {
isvalid: true,
address: addr.toString(),
scriptPubKey: Script.fromAddress(addr).toRaw().toString('hex'),
ismine: false,
iswatchonly: false
});
isvalid: true,
address: addr.toString(),
scriptPubKey: Script.fromAddress(addr).toRaw().toString('hex'),
ismine: false,
iswatchonly: false
});
});
it('should cleanup', async function() {

View File

@ -3,11 +3,9 @@
var assert = require('assert');
var encoding = require('../lib/utils/encoding');
var crypto = require('../lib/crypto/crypto');
var co = require('../lib/utils/co');
var MempoolEntry = require('../lib/mempool/mempoolentry');
var Mempool = require('../lib/mempool/mempool');
var Chain = require('../lib/blockchain/chain');
var WalletDB = require('../lib/wallet/walletdb');
var MTX = require('../lib/primitives/mtx');
var Coin = require('../lib/primitives/coin');
var KeyRing = require('../lib/primitives/keyring');
@ -15,9 +13,7 @@ var Address = require('../lib/primitives/address');
var Outpoint = require('../lib/primitives/outpoint');
var Script = require('../lib/script/script');
var Witness = require('../lib/script/witness');
var Block = require('../lib/primitives/block');
var MemWallet = require('./util/memwallet');
var opcodes = Script.opcodes;
describe('Mempool', function() {
var chain = new Chain({ db: 'memory' });
@ -334,7 +330,7 @@ describe('Mempool', function() {
it('should clear reject cache', async function() {
var w = wallet;
var tx, input;
var tx;
tx = new MTX();
tx.addOutpoint(new Outpoint());

View File

@ -563,12 +563,12 @@ describe('Node', function() {
}, {});
assert.deepStrictEqual(json.result, {
isvalid: true,
address: addr.toString(),
scriptPubKey: Script.fromAddress(addr).toJSON(),
ismine: false,
iswatchonly: false
});
isvalid: true,
address: addr.toString(),
scriptPubKey: Script.fromAddress(addr).toJSON(),
ismine: false,
iswatchonly: false
});
});
it('should add transaction to mempool', async function() {

View File

@ -1,10 +1,8 @@
'use strict';
var fs = require('fs');
var assert = require('assert');
var Network = require('../lib/protocol/network');
var util = require('../lib/utils/util');
var BufferReader = require('../lib/utils/reader');
var NetAddress = require('../lib/primitives/netaddress');
var TX = require('../lib/primitives/tx');
var Framer = require('../lib/net/framer');
@ -75,6 +73,7 @@ describe('Protocol', function() {
packetTest('verack', new packets.VerackPacket(), function(payload) {
});
/* eslint indent: 0 */
hosts = [
new NetAddress({
services: 1,

View File

@ -1,14 +1,11 @@
'use strict';
var fs = require('fs');
var assert = require('assert');
var util = require('../lib/utils/util');
var encoding = require('../lib/utils/encoding');
var crypto = require('../lib/crypto/crypto');
var consensus = require('../lib/protocol/consensus');
var Network = require('../lib/protocol/network');
var TX = require('../lib/primitives/tx');
var Block = require('../lib/primitives/block');
var Coin = require('../lib/primitives/coin');
var Output = require('../lib/primitives/output');
var Script = require('../lib/script/script');

View File

@ -15,7 +15,6 @@ var Bloom = require('../../lib/utils/bloom');
var KeyRing = require('../../lib/primitives/keyring');
var Outpoint = require('../../lib/primitives/outpoint');
var Coin = require('../../lib/primitives/coin');
var co = require('../../lib/utils/co');
function MemWallet(options) {
if (!(this instanceof MemWallet))
@ -292,13 +291,12 @@ MemWallet.prototype.addTX = function addTX(tx, height) {
MemWallet.prototype.removeTX = function removeTX(tx, height) {
var hash = tx.hash('hex');
var result = false;
var i, op, coin, input, output;
var i, op, coin, input;
if (!this.map[hash])
return false;
for (i = 0; i < tx.outputs.length; i++) {
output = tx.outputs[i];
op = Outpoint(hash, i).toKey();
coin = this.getCoin(op);
@ -392,7 +390,6 @@ MemWallet.prototype.sign = function sign(mtx) {
MemWallet.prototype.create = async function create(options) {
var mtx = new MTX(options);
var tx;
await this.fund(mtx, options);

View File

@ -32,7 +32,6 @@ NodeContext.prototype.init = function() {
node = new FullNode({
network: this.network,
db: 'memory',
network: 'regtest',
logger: new Logger({
level: 'debug',
file: false,
@ -99,10 +98,9 @@ NodeContext.prototype.disconnect = async function disconnect() {
await node.disconnect();
await co.timeout(1000);
}
});
};
NodeContext.prototype.startSync = function startSync() {
var jobs = [];
var i, node;
for (i = 0; i < this.nodes.length; i++) {
@ -114,7 +112,6 @@ NodeContext.prototype.startSync = function startSync() {
};
NodeContext.prototype.stopSync = function stopSync() {
var jobs = [];
var i, node;
for (i = 0; i < this.nodes.length; i++) {

View File

@ -98,7 +98,7 @@ describe('Utils', function() {
});
it('should write/read new varints', function() {
var n, b;
var b;
/*
* 0: [0x00] 256: [0x81 0x00]
@ -109,7 +109,6 @@ describe('Utils', function() {
* 2^32: [0x8E 0xFE 0xFE 0xFF 0x00]
*/
n = 0;
b = Buffer.allocUnsafe(1);
b.fill(0x00);
encoding.writeVarint2(b, 0, 0);

View File

@ -5,13 +5,11 @@ var consensus = require('../lib/protocol/consensus');
var util = require('../lib/utils/util');
var encoding = require('../lib/utils/encoding');
var crypto = require('../lib/crypto/crypto');
var co = require('../lib/utils/co');
var WalletDB = require('../lib/wallet/walletdb');
var Address = require('../lib/primitives/address');
var MTX = require('../lib/primitives/mtx');
var Coin = require('../lib/primitives/coin');
var KeyRing = require('../lib/primitives/keyring');
var Address = require('../lib/primitives/address');
var Input = require('../lib/primitives/input');
var Outpoint = require('../lib/primitives/outpoint');
var Script = require('../lib/script/script');
@ -169,7 +167,7 @@ describe('Wallet', function() {
src = src.toTX();
tx = new MTX();
tx.addTX(src, 0)
tx.addTX(src, 0);
tx.addOutput(w.getAddress(), 5460);
maxSize = await tx.estimateSize();
@ -451,7 +449,7 @@ describe('Wallet', function() {
var view, t1, t2, t3, err;
// Coinbase
t1 = new MTX()
t1 = new MTX();
t1.addInput(dummy());
t1.addOutput(w1.getAddress(), 5460);
t1.addOutput(w1.getAddress(), 5460);
@ -1107,6 +1105,7 @@ describe('Wallet', function() {
err = e;
}
assert(!txs);
assert(err);
assert.equal(err.message, 'Account not found.');
});