mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-19 18:09:47 +01:00
test: dedup file hashing using sha256sum_file
helper
Rather than doing the open/read/hash-steps manually in the affected functional tests, we can just use the `sha256sum_file` helper from the utils module instead. Note that for the tool_wallet.py test, the used hash is changed from sha1 to sha256, but as the only purpose is to detect file content changes, this doesn't matter. Also, the optimization using `memoryview` is overkill here, as the opened file has only a size of 24KiB and determining the hash doesn't take longer than a few hundred micro-seconds on my machine.
This commit is contained in:
parent
aebcd18c65
commit
2c0c6f4477
@ -4,13 +4,15 @@
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test the generation of UTXO snapshots using `dumptxoutset`.
|
||||
"""
|
||||
from pathlib import Path
|
||||
|
||||
from test_framework.blocktools import COINBASE_MATURITY
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import assert_equal, assert_raises_rpc_error
|
||||
|
||||
import hashlib
|
||||
from pathlib import Path
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
assert_raises_rpc_error,
|
||||
sha256sum_file,
|
||||
)
|
||||
|
||||
|
||||
class DumptxoutsetTest(BitcoinTestFramework):
|
||||
@ -39,11 +41,10 @@ class DumptxoutsetTest(BitcoinTestFramework):
|
||||
out['base_hash'],
|
||||
'09abf0e7b510f61ca6cf33bab104e9ee99b3528b371d27a2d4b39abb800fba7e')
|
||||
|
||||
with open(str(expected_path), 'rb') as f:
|
||||
digest = hashlib.sha256(f.read()).hexdigest()
|
||||
# UTXO snapshot hash should be deterministic based on mocked time.
|
||||
assert_equal(
|
||||
digest, 'b1bacb602eacf5fbc9a7c2ef6eeb0d229c04e98bdf0c2ea5929012cd0eae3830')
|
||||
# UTXO snapshot hash should be deterministic based on mocked time.
|
||||
assert_equal(
|
||||
sha256sum_file(str(expected_path)).hex(),
|
||||
'b1bacb602eacf5fbc9a7c2ef6eeb0d229c04e98bdf0c2ea5929012cd0eae3830')
|
||||
|
||||
assert_equal(
|
||||
out['txoutset_hash'], '1f7e3befd45dc13ae198dfbb22869a9c5c4196f8e9ef9735831af1288033f890')
|
||||
|
@ -4,7 +4,6 @@
|
||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
"""Test bitcoin-wallet."""
|
||||
|
||||
import hashlib
|
||||
import os
|
||||
import stat
|
||||
import subprocess
|
||||
@ -13,9 +12,10 @@ import textwrap
|
||||
from collections import OrderedDict
|
||||
|
||||
from test_framework.test_framework import BitcoinTestFramework
|
||||
from test_framework.util import assert_equal
|
||||
|
||||
BUFFER_SIZE = 16 * 1024
|
||||
from test_framework.util import (
|
||||
assert_equal,
|
||||
sha256sum_file,
|
||||
)
|
||||
|
||||
|
||||
class ToolWalletTest(BitcoinTestFramework):
|
||||
@ -54,12 +54,7 @@ class ToolWalletTest(BitcoinTestFramework):
|
||||
assert_equal(p.poll(), 0)
|
||||
|
||||
def wallet_shasum(self):
|
||||
h = hashlib.sha1()
|
||||
mv = memoryview(bytearray(BUFFER_SIZE))
|
||||
with open(self.wallet_path, 'rb', buffering=0) as f:
|
||||
for n in iter(lambda: f.readinto(mv), 0):
|
||||
h.update(mv[:n])
|
||||
return h.hexdigest()
|
||||
return sha256sum_file(self.wallet_path).hex()
|
||||
|
||||
def wallet_timestamp(self):
|
||||
return os.path.getmtime(self.wallet_path)
|
||||
|
Loading…
Reference in New Issue
Block a user