diff --git a/DAS/observer.py b/DAS/observer.py index ce435dd..0b80638 100644 --- a/DAS/observer.py +++ b/DAS/observer.py @@ -44,6 +44,7 @@ class Observer: """It checks the status of how many expected and arrived samples globally.""" arrived = 0 expected = 0 + ready = 0 validated = 0 for val in validators: if val.amIproposer == 0: @@ -51,5 +52,16 @@ class Observer: arrived += a expected += e if a == e: - validated += 1 - return (arrived, expected, validated) + ready += 1 + validated += val.vpn + return (arrived, expected, ready, validated) + + def getProgress(self, validators): + arrived, expected, ready, validated = self.checkStatus(validators) + missingSamples = expected - arrived + sampleProgress = arrived / expected + nodeProgress = ready / (len(validators)-1) + validatorCnt = sum([v.vpn for v in validators[1:]]) + validatorProgress = validated / validatorCnt + + return missingSamples, sampleProgress, nodeProgress, validatorProgress diff --git a/DAS/simulator.py b/DAS/simulator.py index 9582492..1744bf8 100644 --- a/DAS/simulator.py +++ b/DAS/simulator.py @@ -166,7 +166,7 @@ class Simulator: """It runs the main simulation until the block is available or it gets stucked.""" self.glob.checkRowsColumns(self.validators) self.validators[self.proposerID].broadcastBlock() - arrived, expected, validated = self.glob.checkStatus(self.validators) + arrived, expected, ready, validated = self.glob.checkStatus(self.validators) missingSamples = expected - arrived missingVector = [] steps = 0 @@ -198,12 +198,9 @@ class Simulator: for i in range(0,self.shape.numberNodes): self.validators[i].updateStats() - arrived, expected, validated = self.glob.checkStatus(self.validators) - missingSamples = expected - arrived - missingRate = missingSamples*100/expected - self.logger.debug("step %d, missing %d of %d (%0.02f %%), validated (%0.02f %%)" - % (steps, missingSamples, expected, missingRate, - validated/(len(self.validators)-1)*100), extra=self.format) + missingSamples, sampleProgress, nodeProgress, validatorProgress = self.glob.getProgress(self.validators) + self.logger.debug("step %d, arrived %0.02f %%, ready %0.02f %%, validated %0.02f %%" + % (steps, sampleProgress*100, nodeProgress*100, validatorProgress*100), extra=self.format) if missingSamples == oldMissingSamples: self.logger.debug("The block cannot be recovered, failure rate %d!" % self.shape.failureRate, extra=self.format) missingVector.append(missingSamples)