diff --git a/src/class_singleWorker.py b/src/class_singleWorker.py index ccefd149..83009c37 100644 --- a/src/class_singleWorker.py +++ b/src/class_singleWorker.py @@ -217,8 +217,9 @@ class singleWorker(StoppableThread): return privSigningKeyHex, privEncryptionKeyHex, \ pubSigningKey, pubEncryptionKey + @classmethod def _doPOWDefaults( - self, payload, TTL, + cls, payload, TTL, nonceTrialsPerByte=None, payloadLengthExtraBytes=None, log_prefix='', log_time=False ): @@ -228,19 +229,19 @@ class singleWorker(StoppableThread): if not payloadLengthExtraBytes: payloadLengthExtraBytes = \ defaults.networkDefaultPayloadLengthExtraBytes - self.logger.info( + cls.logger.info( '%s Doing proof of work... TTL set to %s', log_prefix, TTL) if log_time: start_time = time.time() trialValue, nonce = proofofwork.calculate( payload, TTL, nonceTrialsPerByte, payloadLengthExtraBytes) - self.logger.info( + cls.logger.info( '%s Found proof of work %s Nonce: %s', log_prefix, trialValue, nonce ) try: delta = time.time() - start_time - self.logger.info( + cls.logger.info( 'PoW took %.1f seconds, speed %s.', delta, sizeof_fmt(nonce / delta) ) diff --git a/src/tests/test_proofofwork.py b/src/tests/test_proofofwork.py index 2bf4fa08..0d643652 100644 --- a/src/tests/test_proofofwork.py +++ b/src/tests/test_proofofwork.py @@ -42,6 +42,12 @@ class TestProofofworkBase(TestPartialRun): self.assertTrue( protocol.isProofOfWorkSufficient(pack('>Q', nonce) + payload)) + # pylint: disable=import-outside-toplevel + from class_singleWorker import singleWorker + + self.assertTrue(protocol.isProofOfWorkSufficient( + singleWorker._doPOWDefaults(payload, default_ttl))) + @unittest.skipUnless( os.getenv('BITMESSAGE_TEST_POW'), "BITMESSAGE_TEST_POW is not set") @@ -67,6 +73,23 @@ class TestProofofwork(TestProofofworkBase): pack('>Q', nonce) + payload, 2000, 2000, int(time.time()) + TTL - 3600)) + # pylint: disable=import-outside-toplevel + from class_singleWorker import singleWorker + + with self.assertLogs('default') as cm: + self.assertTrue(protocol.isProofOfWorkSufficient( + singleWorker._doPOWDefaults(payload, TTL, log_prefix='+'))) + self.assertEqual( + cm.output[0], + 'INFO:default:+ Doing proof of work... TTL set to %s' % TTL) + self.assertEqual( + cm.output[1][:34], 'INFO:default:+ Found proof of work') + + with self.assertLogs('default') as cm: + self.assertTrue(protocol.isProofOfWorkSufficient( + singleWorker._doPOWDefaults(payload, TTL, log_time=True))) + self.assertEqual(cm.output[2][:22], 'INFO:default:PoW took ') + with self.assertRaises(StopIteration): self.state.shutdown = 1 proofofwork.calculate(payload, TTL)