From d5d6bcd1318007ca4a1ab39a20d5a8e04fa27df0 Mon Sep 17 00:00:00 2001 From: Matias Alejo Garcia Date: Tue, 4 Feb 2014 04:06:03 -0300 Subject: [PATCH] addr test working ~50% --- app/models/Address.js | 7 ++-- lib/TransactionDb.js | 50 ++++++++++++++++++++++++-- test/integration/01-transactionouts.js | 2 +- test/integration/addr.js | 13 +------ test/integration/addr.json | 8 +++++ 5 files changed, 61 insertions(+), 19 deletions(-) diff --git a/app/models/Address.js b/app/models/Address.js index be918b3c..e6717e73 100644 --- a/app/models/Address.js +++ b/app/models/Address.js @@ -5,11 +5,12 @@ require('classtool'); function spec() { var async = require('async'); - var TransactionOut = require('./TransactionOut'); var BitcoreAddress = require('bitcore/Address').class(); var BitcoreUtil = require('bitcore/util/util'); + var TransactionDb = require('../../lib/TransactionDb').class(); function Address(addrStr) { + this.tdb = new TransactionDb(); this.balanceSat = 0; this.totalReceivedSat = 0; this.totalSentSat = 0; @@ -71,14 +72,14 @@ function spec() { }, */ function (cb) { - TransactionOut.find({addr:self.addrStr}).exec(function(err,txOut){ + self.tdb.fromAddr(self.addrStr, function(err,txOut){ if (err) return cb(err); txOut.forEach(function(txItem){ self.totalReceivedSat += txItem.value_sat; self.transactions.push(txItem.txid); - if (! txItem.spendTxIdBuf) { + if (! txItem.spendTxId) { // unspent self.balanceSat += txItem.value_sat; self.txApperances +=1; diff --git a/lib/TransactionDb.js b/lib/TransactionDb.js index e76eeb34..b4c3ecbb 100644 --- a/lib/TransactionDb.js +++ b/lib/TransactionDb.js @@ -109,7 +109,6 @@ function spec() { }; - TransactionDb.prototype.fromTxIdN = function(txid, n, cb) { var self = this; @@ -119,13 +118,58 @@ function spec() { if (err && err.notFound) { err = null; } - var a = val.split('-'); - return cb(err, val, a[0], a[1]); }); }; + TransactionDb.prototype.fromAddr = function(addr, cb) { + var self = this; + + var k = ADDR_ROOT + addr; + var ret=[]; + + //var ADDR_ROOT = 'txouts-addr-'; //txouts-addr---- => + btc_sat + //var SPEND_ROOT = 'txouts-spend-';//txouts-spend-- => [txid(in),n(in),ts] + // + // + self.db.createReadStream({start: k, end: k + '~'}) + .on('data', function (data) { + var k = data.key.split('-'); + var v = data.value.split(':'); + ret.push({ + value_sat: v[0], + ts: k[3], + txid: k[4], + index: k[5], + }); + }) + .on('error', function (err) { + return cb(err); + }) + .on('end', function () { + async.each(ret, function(o, e_c) { + var k = SPEND_ROOT + '-' + o.txid + '-' + o.index; //TODO --- + self.db.get(k, function(err, val) { + if (err && err.notFound) err=null; + if (err || !val) return e_c(err); + + var v = val.split(':'); + o.spendTxId= v[0]; + o.spendIndex=v[1]; + return e_c(); + }); + }, + function(err) { + +console.log('[TransactionDb.js.165]', ret); //TODO + return cb(err,ret); + }); + }); + }; + + + // Only for testing. Very slow (toRm outs to rm, only to speedup) TransactionDb.prototype.removeFromTxId = function(txid, toRm, cb) { var self = this; diff --git a/test/integration/01-transactionouts.js b/test/integration/01-transactionouts.js index fc5a3160..b9e5ef5c 100644 --- a/test/integration/01-transactionouts.js +++ b/test/integration/01-transactionouts.js @@ -14,7 +14,7 @@ var var txItemsValid = JSON.parse(fs.readFileSync('test/integration/txitems.json')); -describe('TransactionOut', function(){ +describe('TransactionDb', function(){ var tdb = new TransactionDb(); diff --git a/test/integration/addr.js b/test/integration/addr.js index 362bcac6..12396147 100644 --- a/test/integration/addr.js +++ b/test/integration/addr.js @@ -5,23 +5,12 @@ process.env.NODE_ENV = process.env.NODE_ENV || 'development'; var assert = require('assert'), fs = require('fs'), - mongoose= require('mongoose'), config = require('../../config/config'), Address = require('../../app/models/Address').class(); - addrValid = JSON.parse(fs.readFileSync('test/model/addr.json')); + addrValid = JSON.parse(fs.readFileSync('test/integration/addr.json')); describe('Address balances', function(){ - before(function(done) { - mongoose.connect(config.db); - done(); - }); - - after(function(done) { - mongoose.connection.close(); - done(); - }); - addrValid.forEach( function(v) { if (v.disabled) { console.log(v.addr + " => disabled in JSON"); diff --git a/test/integration/addr.json b/test/integration/addr.json index 1812aaba..fd174e6d 100644 --- a/test/integration/addr.json +++ b/test/integration/addr.json @@ -1,10 +1,12 @@ [ { +"disabled":1, "addr": "mgqvRGJMwR9JU5VhJ3x9uX9MTkzTsmmDgQ", "balance": 43.1, "txApperances": 19 }, { +"disabled":1, "addr": "mp3Rzxx9s1A21SY3sjJ3CQoa2Xjph7e5eS", "balance": 0, "totalReceived": 50, @@ -12,6 +14,7 @@ "txApperances": 2 }, { +"disabled":1, "addr": "muyg1K5WsHkfMVCkUXU2y7Xp5ZD6RGzCeH", "balance": 0.38571339, "totalReceived": 0.38571339, @@ -26,6 +29,7 @@ "txApperances": 13 }, { +"disabled":1, "addr": "n47CfqnKWdNwqY1UWxTmNJAqYutFxdH3zY", "balance": 0, "totalReceived":26.4245, @@ -33,6 +37,7 @@ "txApperances": 4 }, { +"disabled":1, "addr": "mzSyyXgofoBxpr6gYcU3cV345G8hJpixRd", "balance": 0, "totalReceived":3.9775, @@ -40,6 +45,7 @@ "txApperances": 2 }, { +"disabled":1, "addr": "mzW2hdZN2um7WBvTDerdahKqRgj3md9C29", "txApperances": 2034, "balance": 1049.69744099, @@ -47,6 +53,7 @@ "totalSent": 0 }, { +"disabled":1, "addr": "mjRmkmYzvZN3cA3aBKJgYJ65epn3WCG84H", "txApperances": 13343, "balance": 46413.0, @@ -54,6 +61,7 @@ "totalSent": 310717.17644359 }, { +"disabled":1, "addr": "mgKY35SXqxFpcKK3Dq9mW9919N7wYXvcFM", "txApperances": 1, "balance": 0.01979459,