From 52879febb92d876f01f2e4d70871baa07af631fb Mon Sep 17 00:00:00 2001 From: Nicholas Dudfield Date: Sat, 15 Aug 2015 18:11:43 +0700 Subject: [PATCH] [WIP] Fix reserve calculation --- src/core/server.js | 7 ++++++- test/remote-test.js | 5 ++--- test/server-test.js | 7 +++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/core/server.js b/src/core/server.js index 1f40c90c..c2de2cdc 100644 --- a/src/core/server.js +++ b/src/core/server.js @@ -1,6 +1,8 @@ 'use strict'; + const _ = require('lodash'); +const assert = require('assert'); const util = require('util'); const url = require('url'); const HttpsProxyAgent = require('https-proxy-agent'); @@ -905,6 +907,9 @@ Server.prototype._feeTxUnit = function() { */ Server.prototype._reserve = function(ownerCount) { + // We should be in a valid state before calling this method + assert(this._reserve_base && this._reserve_inc); + const reserve_base = Amount.from_json(String(this._reserve_base)); const reserve_inc = Amount.from_json(String(this._reserve_inc)); const owner_count = ownerCount || 0; @@ -913,7 +918,7 @@ Server.prototype._reserve = function(ownerCount) { throw new Error('Owner count must not be negative.'); } - return reserve_base.add(reserve_inc.product_human(owner_count)); + return reserve_base.add(reserve_inc.multiply(owner_count)); }; /** diff --git a/test/remote-test.js b/test/remote-test.js index f671d5b0..2f9ee053 100644 --- a/test/remote-test.js +++ b/test/remote-test.js @@ -935,11 +935,10 @@ describe('Remote', function() { remote.feeTxUnit(10).to_json(); }); }); - it('Get reserve', function() { + it('reserve() before reserve rate known', function() { remote._connected = true; remote._servers[0]._connected = true; - assert.strictEqual(remote.reserve(1).to_json(), 'NaN'); - remote._servers = []; + // Throws because the server has not had reserve_inc, reserve_base set assert.throws(function() { remote.reserve(10).to_json(); }); diff --git a/test/server-test.js b/test/server-test.js index 3b1fde39..3b7682c2 100644 --- a/test/server-test.js +++ b/test/server-test.js @@ -1063,6 +1063,13 @@ describe('Server', function() { assert.strictEqual(server._reserve().to_json(), '20000000'); }); + it('Compute reserve, positive OwnerCount', function() { + const server = new Server(new Remote(), 'ws://localhost:5748'); + server._reserve_base = 20000000; + server._reserve_inc = 5000000; + assert.strictEqual(server._reserve(4).to_json(), '40000000'); + }); + it('Cache hostid', function(done) { const wss = new ws.Server({ port: 5748