From 7d2531b7b3724e250e11e87274adf4a08c8b6165 Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Mon, 24 Oct 2022 16:50:05 +0000 Subject: [PATCH] test.overlay: fake module cleanups 1) attempt to add as few names to the module's namespace as possible 2) all names added to the namespace must begin with 'overlay_fake_' --- test/include/common.py | 4 +-- test/overlay/fakemods/mmgen/crypto.py | 31 ++++++++++--------- .../fakemods/mmgen/proto/btc/tw/unspent.py | 19 +++++++----- test/overlay/fakemods/mmgen/rpc.py | 11 +++---- test/overlay/fakemods/mmgen/tw/common.py | 30 +++++++++--------- test/overlay/fakemods/mmgen/util.py | 13 +++++--- 6 files changed, 58 insertions(+), 50 deletions(-) diff --git a/test/include/common.py b/test/include/common.py index 5ad99340..f631aeee 100755 --- a/test/include/common.py +++ b/test/include/common.py @@ -66,8 +66,8 @@ ref_kafile_hash_preset = '1' def getrand(n): if g.test_suite_deterministic: - from mmgen.crypto import fake_urandom - return fake_urandom(n) + from mmgen.crypto import overlay_fake_data + return overlay_fake_data.urandom(n) else: return os.urandom(n) diff --git a/test/overlay/fakemods/mmgen/crypto.py b/test/overlay/fakemods/mmgen/crypto.py index 18ba0cdd..92411a59 100644 --- a/test/overlay/fakemods/mmgen/crypto.py +++ b/test/overlay/fakemods/mmgen/crypto.py @@ -1,25 +1,28 @@ +import os as overlay_fake_os from .crypto_orig import * -if os.getenv('MMGEN_TEST_SUITE_DETERMINISTIC'): +if overlay_fake_os.getenv('MMGEN_TEST_SUITE_DETERMINISTIC'): - get_random_orig = get_random - add_user_random_orig = add_user_random + class overlay_fake_data: - import sys - from hashlib import sha256 - fake_rand_h = sha256('.'.join(sys.argv).encode()) + import sys + from hashlib import sha256 + rand_h = sha256('.'.join(sys.argv).encode()) - def fake_urandom(n): + get_random = get_random + add_user_random = add_user_random - def gen(rounds): - for i in range(rounds): - fake_rand_h.update(b'foo') - yield fake_rand_h.digest() + def urandom(n): - return b''.join(gen(int(n/32)+1))[:n] + def gen(rounds): + for i in range(rounds): + overlay_fake_data.rand_h.update(b'foo') + yield overlay_fake_data.rand_h.digest() + + return b''.join(gen(int(n/32)+1))[:n] def get_random(length): - return fake_urandom(len(get_random_orig(length))) + return overlay_fake_data.urandom(len(overlay_fake_data.get_random(length))) def add_user_random(rand_bytes,desc): - return fake_urandom(len(add_user_random_orig(rand_bytes,desc))) + return overlay_fake_data.urandom(len(overlay_fake_data.add_user_random(rand_bytes,desc))) diff --git a/test/overlay/fakemods/mmgen/proto/btc/tw/unspent.py b/test/overlay/fakemods/mmgen/proto/btc/tw/unspent.py index 13ce5470..8493818d 100644 --- a/test/overlay/fakemods/mmgen/proto/btc/tw/unspent.py +++ b/test/overlay/fakemods/mmgen/proto/btc/tw/unspent.py @@ -1,12 +1,15 @@ -import os +import os as overlay_fake_os from .unspent_orig import * -if os.getenv('MMGEN_BOGUS_UNSPENT_DATA'): +if overlay_fake_os.getenv('MMGEN_BOGUS_UNSPENT_DATA'): - async def fake_get_rpc_data(foo): - from decimal import Decimal - import json - from ....fileutil import get_data_from_file - return json.loads(get_data_from_file(os.getenv('MMGEN_BOGUS_UNSPENT_DATA')),parse_float=Decimal) + class overlay_fake_data: - BitcoinTwUnspentOutputs.get_rpc_data = fake_get_rpc_data + async def get_rpc_data(foo): + from decimal import Decimal + import json + from ....fileutil import get_data_from_file + return json.loads(get_data_from_file( + overlay_fake_os.getenv('MMGEN_BOGUS_UNSPENT_DATA')),parse_float=Decimal) + + BitcoinTwUnspentOutputs.get_rpc_data = overlay_fake_data.get_rpc_data diff --git a/test/overlay/fakemods/mmgen/rpc.py b/test/overlay/fakemods/mmgen/rpc.py index bcc8035f..233c564e 100644 --- a/test/overlay/fakemods/mmgen/rpc.py +++ b/test/overlay/fakemods/mmgen/rpc.py @@ -1,13 +1,12 @@ +import os as overlay_fake_os from .rpc_orig import * -if os.getenv('MMGEN_BOGUS_UNSPENT_DATA'): +if overlay_fake_os.getenv('MMGEN_BOGUS_UNSPENT_DATA'): - rpc_init_orig = rpc_init + class overlay_fake_data: + rpc_init = rpc_init async def rpc_init(*args,**kwargs): - - ret = await rpc_init_orig(*args,**kwargs) - + ret = await overlay_fake_data.rpc_init(*args,**kwargs) ret.blockcount = 1000000 - return ret diff --git a/test/overlay/fakemods/mmgen/tw/common.py b/test/overlay/fakemods/mmgen/tw/common.py index 11465804..85d2b4d2 100644 --- a/test/overlay/fakemods/mmgen/tw/common.py +++ b/test/overlay/fakemods/mmgen/tw/common.py @@ -1,27 +1,27 @@ -import os +import os as overlay_fake_os from .common_orig import * -if os.getenv('MMGEN_TEST_SUITE_DETERMINISTIC'): - def _time_gen(): - """ add a minute to each successive time value """ - for i in range(1000000): - yield 1321009871 + (i*60) +if overlay_fake_os.getenv('MMGEN_TEST_SUITE_DETERMINISTIC'): - _time_iter = _time_gen() + class overlay_fake_data: + # add a minute to each successive time value + time_iter = (1321009871 + (i*60) for i in range(1000000)) TwCommon.date_formatter = { - 'days': lambda rpc,secs: (next(_time_iter) - secs) // 86400, - 'date': lambda rpc,secs: '{}-{:02}-{:02}'.format(*time.gmtime(next(_time_iter))[:3])[2:], - 'date_time': lambda rpc,secs: '{}-{:02}-{:02} {:02}:{:02}'.format(*time.gmtime(next(_time_iter))[:5]), + 'days': lambda rpc,secs: (next(overlay_fake_data.time_iter) - secs) // 86400, + 'date': lambda rpc,secs: '{}-{:02}-{:02}'.format(*time.gmtime(next(overlay_fake_data.time_iter))[:3])[2:], + 'date_time': lambda rpc,secs: '{}-{:02}-{:02} {:02}:{:02}'.format(*time.gmtime(next(overlay_fake_data.time_iter))[:5]), } -if os.getenv('MMGEN_BOGUS_UNSPENT_DATA'): +if overlay_fake_os.getenv('MMGEN_BOGUS_UNSPENT_DATA'): - async def fake_set_dates(foo,rpc,us): - for o in us: - o.date = 1831006505 - int(9.7 * 60 * (o.confs - 1)) + class overlay_fake_data2: - TwCommon.set_dates = fake_set_dates + async def set_dates(foo,rpc,us): + for o in us: + o.date = 1831006505 - int(9.7 * 60 * (o.confs - 1)) + + TwCommon.set_dates = overlay_fake_data2.set_dates # 1831006505 (09 Jan 2028) = projected time of block 1000000 TwCommon.date_formatter['days'] = lambda rpc,secs: (1831006505 - secs) // 86400 diff --git a/test/overlay/fakemods/mmgen/util.py b/test/overlay/fakemods/mmgen/util.py index f3aa8248..e4d6f169 100644 --- a/test/overlay/fakemods/mmgen/util.py +++ b/test/overlay/fakemods/mmgen/util.py @@ -1,11 +1,14 @@ +import os as overlay_fake_os from .util_orig import * -if os.getenv('MMGEN_TEST_SUITE_DETERMINISTIC'): - make_timestamp_orig = make_timestamp - make_timestr_orig = make_timestr +if overlay_fake_os.getenv('MMGEN_TEST_SUITE_DETERMINISTIC'): + + class overlay_fake_data: + make_timestamp = make_timestamp + make_timestr = make_timestr def make_timestamp(secs=None): - return make_timestamp_orig(1321009871) + return overlay_fake_data.make_timestamp(1321009871) def make_timestr(secs=None): - return make_timestr_orig(1321009871) + return overlay_fake_data.make_timestr(1321009871)