From 42ca7a5a5d0f6bfcc777aa9f2be73335ebd2e0f7 Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Mon, 4 Dec 2017 17:45:56 +0100
Subject: [PATCH 1/3] [enh] Improve ecomode unit test + fix workers

---
 app/modules/prover/lib/powCluster.ts | 37 +++++++++++++---------------
 test/integration/proof-of-work.js    | 16 ++++++++----
 2 files changed, 28 insertions(+), 25 deletions(-)

diff --git a/app/modules/prover/lib/powCluster.ts b/app/modules/prover/lib/powCluster.ts
index 8e6e65843..15d8d24c3 100644
--- a/app/modules/prover/lib/powCluster.ts
+++ b/app/modules/prover/lib/powCluster.ts
@@ -185,27 +185,24 @@ export class Master {
 
       // Start the salves' job
       this.slaves.forEach((s:any, index) => {
-        if(index < stuff.newPoW.conf.nbCores) {
-          s.worker.send({
-            uuid,
-            command: 'newPoW',
-            value: {
-              block: stuff.newPoW.block,
-              nonceBeginning: s.nonceBeginning,
-              zeros: stuff.newPoW.zeros,
-              highMark: stuff.newPoW.highMark,
-              pair: _.clone(stuff.newPoW.pair),
-              forcedTime: stuff.newPoW.forcedTime,
-              turnDuration: stuff.newPoW.turnDuration,
-              conf: {
-                medianTimeBlocks: stuff.newPoW.conf.medianTimeBlocks,
-                avgGenTime: stuff.newPoW.conf.avgGenTime,
-                cpu: stuff.newPoW.conf.cpu,
-                prefix: stuff.newPoW.conf.prefix
-              }
+        s.worker.send({
+          uuid,
+          command: 'newPoW',
+          value: {
+            block: stuff.newPoW.block,
+            nonceBeginning: s.nonceBeginning,
+            zeros: stuff.newPoW.zeros,
+            highMark: stuff.newPoW.highMark,
+            pair: _.clone(stuff.newPoW.pair),
+            forcedTime: stuff.newPoW.forcedTime,
+            turnDuration: stuff.newPoW.turnDuration,conf: {
+              medianTimeBlocks: stuff.newPoW.conf.medianTimeBlocks,
+              avgGenTime: stuff.newPoW.conf.avgGenTime,
+              cpu: stuff.newPoW.conf.cpu,
+              prefix: stuff.newPoW.conf.prefix
             }
-          })
-        }
+          }
+        })
       })
 
       return await this.currentPromise
diff --git a/test/integration/proof-of-work.js b/test/integration/proof-of-work.js
index dd507167a..4d61810e3 100644
--- a/test/integration/proof-of-work.js
+++ b/test/integration/proof-of-work.js
@@ -36,11 +36,10 @@ const prover = new BlockProver({
 const now = 1474382274 * 1000;
 const MUST_START_WITH_A_ZERO = 16;
 const MUST_START_WITH_TWO_ZEROS = 32;
-const MUST_START_WITH_THREE_ZEROS = 58;
+const MUST_START_WITH_A_ZERO_AND_A_NUMBER = 22
 
 describe("Proof-of-work", function() {
 
-  this.timeout(6*60000)
   it('should be able to find an easy PoW', () => co(function*() {
     let block = yield prover.prove({
       issuer: 'HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd',
@@ -53,12 +52,19 @@ describe("Proof-of-work", function() {
   }));
 
   it('should be reducing cpu when the PoW is too easy for the cpu', () => co(function*() {
+    prover.conf.nbCores = 2
+    prover.conf.cpu = 0.9
+    prover.conf.nbCores.should.equal(2)
+    prover.conf.cpu.should.equal(0.9)
     for(let i=0; i<8; ++i) {
-      let block = yield prover.prove({
+      yield prover.prove({
         issuer: 'HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd',
-        number: i+2
-      }, MUST_START_WITH_THREE_ZEROS, now);
+        number: i+2,
+        now
+      }, MUST_START_WITH_A_ZERO_AND_A_NUMBER, now);
     }
+    prover.conf.nbCores.should.equal(1)
+    prover.conf.cpu.should.be.below(0.9)
   }));
   // Too randomly successing test
   // it('should be able to cancel a proof-of-work on other PoW receival', () => co(function*() {
-- 
GitLab


From 6959f9f19b888ccfc3acdcc6f4fe6320723a007a Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Mon, 4 Dec 2017 17:50:56 +0100
Subject: [PATCH 2/3] [enh] Put constants in a ProverConstants

---
 app/modules/prover/lib/blockProver.ts | 4 ++--
 app/modules/prover/lib/constants.ts   | 3 +++
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/app/modules/prover/lib/blockProver.ts b/app/modules/prover/lib/blockProver.ts
index 03676a8f4..f3e036770 100644
--- a/app/modules/prover/lib/blockProver.ts
+++ b/app/modules/prover/lib/blockProver.ts
@@ -201,12 +201,12 @@ export class BlockProver {
         this.logger.info('Done: #%s, %s in %ss instead of %ss (%s tests, ~%s tests/s)', block.number, proof.hash, (duration / 1000).toFixed(2),
                                                                         this.conf.avgGenTime, testsCount, testsPerSecond.toFixed(2));
         this.logger.info('FOUND proof-of-work with %s leading zeros followed by [0-' + highMark + ']!', nbZeros);
-        if(this.conf.ecoMode === true && this.conf.nbCores*testsPerSecond > 300) {
+        if(this.conf.ecoMode === true && this.conf.nbCores*testsPerSecond > ProverConstants.ECO_MODE_MINIMAL_TESTS_PER_SECONDS) {
           if(this.conf.nbCores > 1) {
             this.logger.info("Reducing number of CPU cores "+this.conf.nbCores)
             this.conf.nbCores = this.conf.nbCores -1
           }
-          else if(this.conf.cpu > 0.19){
+          else if(this.conf.cpu > ProverConstants.ECO_MODE_MINIMAL_CPU){
             let cpu:number = this.conf.cpu - 0.1
             this.logger.info("Slowing down the CPU to "+cpu)
             this.changeCPU(cpu)
diff --git a/app/modules/prover/lib/constants.ts b/app/modules/prover/lib/constants.ts
index 2b8299c33..3a8d77c70 100644
--- a/app/modules/prover/lib/constants.ts
+++ b/app/modules/prover/lib/constants.ts
@@ -11,6 +11,9 @@ export const ProverConstants = {
   MIN_PEER_ID: 1,
   MAX_PEER_ID: 899, // Due to MAX_SAFE_INTEGER = 9007199254740991 (16 digits, and we use 11 digits for the nonce + 2 digits for core number => 3 digits for the peer, must be below 900)
 
+  ECO_MODE_MINIMAL_TESTS_PER_SECONDS: 300,
+  ECO_MODE_MINIMAL_CPU: 0.19,
+
   NONCE_RANGE: 1000 * 1000 * 1000 * 100,
 
   POW_MAXIMUM_ACCEPTABLE_HANDICAP: 64,
-- 
GitLab


From 93c5b747d2eda594893a45da34bf3cbecc27278f Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Mon, 4 Dec 2017 17:51:20 +0100
Subject: [PATCH 3/3] [enh] Eco mode should not be by default

---
 app/modules/prover/lib/constants.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/modules/prover/lib/constants.ts b/app/modules/prover/lib/constants.ts
index 3a8d77c70..66dbe534b 100644
--- a/app/modules/prover/lib/constants.ts
+++ b/app/modules/prover/lib/constants.ts
@@ -5,7 +5,7 @@ export const ProverConstants = {
   MINIMAL_ZEROS_TO_SHOW_IN_LOGS: 3,
 
   POW_MINIMAL_TO_SHOW: 2,
-  DEFAULT_ECO_MODE: true,
+  DEFAULT_ECO_MODE: false,
   DEFAULT_CPU: 0.6,
   DEFAULT_PEER_ID: 1,
   MIN_PEER_ID: 1,
-- 
GitLab