mirror of
https://github.com/dashpay/dash.git
synced 2024-12-27 13:03:17 +01:00
Merge bitcoin/bitcoin#13533: [tests] Reduced number of validations in tx_validationcache_tests
c3e111a7daf5800026dda4455c737de0412528f1 Reduced number of validations in `tx_validationcache_tests` to keep the run time reasonable. (lucash-dev)
Pull request description:
Following a suggestion in the comments, changed `ValidateCheckInputsForAllFlags` from testing all possible flag combinations to testing a random subset. Also created a new enum constant for the highest flag, so that this test doesn’t keep testing an incomplete subset in case a new flag is added.
Timing for `checkinputs_test`:
```
Before: 6.8s
After: 3.7s
----------------
Saved: 3.1s (45%)
```
This PR was split from #13050. Also see #10026.
ACKs for top commit:
leonardojobim:
tACK c3e111a7da
.
kallewoof:
ACK c3e111a7daf5800026dda4455c737de0412528f1
theStack:
re-ACK c3e111a7daf5800026dda4455c737de0412528f1
Tree-SHA512: bef49645bdd4f61ec73cc77a9f028b95d9856db9446d2e7fc9a48867a6f0e94c2c9f150cb771a30fe852db0efb0a1bd15d38b00d712651793ccb59ff6157a7b4
This commit is contained in:
parent
ad3086c629
commit
8109f0046d
@ -101,6 +101,10 @@ enum : uint32_t {
|
|||||||
// Making OP_CODESEPARATOR and FindAndDelete fail
|
// Making OP_CODESEPARATOR and FindAndDelete fail
|
||||||
//
|
//
|
||||||
SCRIPT_VERIFY_CONST_SCRIPTCODE = (1U << 16),
|
SCRIPT_VERIFY_CONST_SCRIPTCODE = (1U << 16),
|
||||||
|
|
||||||
|
// Constants to point to the highest flag in use. Add new flags above this line.
|
||||||
|
//
|
||||||
|
SCRIPT_VERIFY_END_MARKER
|
||||||
};
|
};
|
||||||
|
|
||||||
bool CheckSignatureEncoding(const std::vector<unsigned char> &vchSig, unsigned int flags, ScriptError* serror);
|
bool CheckSignatureEncoding(const std::vector<unsigned char> &vchSig, unsigned int flags, ScriptError* serror);
|
||||||
|
@ -108,10 +108,15 @@ BOOST_FIXTURE_TEST_CASE(tx_mempool_block_doublespend, TestChain100Setup)
|
|||||||
static void ValidateCheckInputsForAllFlags(const CTransaction &tx, uint32_t failing_flags, bool add_to_cache) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
|
static void ValidateCheckInputsForAllFlags(const CTransaction &tx, uint32_t failing_flags, bool add_to_cache) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
|
||||||
{
|
{
|
||||||
PrecomputedTransactionData txdata;
|
PrecomputedTransactionData txdata;
|
||||||
// If we add many more flags, this loop can get too expensive, but we can
|
|
||||||
// rewrite in the future to randomly pick a set of flags to evaluate.
|
FastRandomContext insecure_rand(true);
|
||||||
for (uint32_t test_flags=0; test_flags < (1U << 16); test_flags += 1) {
|
|
||||||
|
for (int count = 0; count < 10000; ++count) {
|
||||||
TxValidationState state;
|
TxValidationState state;
|
||||||
|
|
||||||
|
// Randomly selects flag combinations
|
||||||
|
uint32_t test_flags = (uint32_t) insecure_rand.randrange((SCRIPT_VERIFY_END_MARKER - 1) << 1);
|
||||||
|
|
||||||
// Filter out incompatible flag choices
|
// Filter out incompatible flag choices
|
||||||
if ((test_flags & SCRIPT_VERIFY_CLEANSTACK)) {
|
if ((test_flags & SCRIPT_VERIFY_CLEANSTACK)) {
|
||||||
// CLEANSTACK requires P2SH, see VerifyScript() in
|
// CLEANSTACK requires P2SH, see VerifyScript() in
|
||||||
|
Loading…
Reference in New Issue
Block a user