Merge bitcoin/bitcoin#28612: Test: followups to #27823

5ab6419f38 test: randomized perturbing in feature_init (L0la L33tz)
64b80d5c5b test: simplify feature_init (Fabian Jahr)

Pull request description:

  Fixes #28603

  Added suggested simplifications and implemented randomization

ACKs for top commit:
  theStack:
    Light ACK 5ab6419f38
  maflcko:
    lgtm ACK 5ab6419f38
  achow101:
    ACK 5ab6419f38

Tree-SHA512: e6f43eef7f8dd12c7fccbe437cb430dc9d383825d7ab2caa0382d061f88dec6d28522e1ec78f3f58f26d35cba93512fa21e330c48d06b1d8141a16f07050af5a
This commit is contained in:
Andrew Chow 2023-11-06 16:46:45 -05:00
commit 0387ca0774
No known key found for this signature in database
GPG key ID: 17565732E08E5E41

View file

@ -5,6 +5,7 @@
"""Stress tests related to node initialization.""" """Stress tests related to node initialization."""
import os import os
from pathlib import Path from pathlib import Path
from random import randint
import shutil import shutil
from test_framework.test_framework import BitcoinTestFramework, SkipTest from test_framework.test_framework import BitcoinTestFramework, SkipTest
@ -133,15 +134,12 @@ class InitStressTest(BitcoinTestFramework):
for target_file in target_files: for target_file in target_files:
self.log.info(f"Perturbing file to ensure failure {target_file}") self.log.info(f"Perturbing file to ensure failure {target_file}")
with open(target_file, "rb") as tf_read: with open(target_file, "r+b") as tf:
contents = tf_read.read()
tweaked_contents = bytearray(contents)
# Since the genesis block is not checked by -checkblocks, the # Since the genesis block is not checked by -checkblocks, the
# perturbation window must be chosen such that a higher block # perturbation window must be chosen such that a higher block
# in blk*.dat is affected. # in blk*.dat is affected.
tweaked_contents[150:350] = b'1' * 200 tf.seek(randint (150, 15000))
with open(target_file, "wb") as tf_write: tf.write(b'1' * randint(20, 2000))
tf_write.write(bytes(tweaked_contents))
start_expecting_error(err_fragment) start_expecting_error(err_fragment)