qa: Fixups to "Run all tests even if wallet is not compiled" #14179

pull MarcoFalke wants to merge 2 commits into bitcoin:master from MarcoFalke:Mf1809-qaPremine changing 5 files +15 −13
  1. MarcoFalke commented at 3:33 PM on September 9, 2018: member

    Currently the functional tests require the wallet module to be compiled into the Bitcoin Core executable. For example the premine (or datadir cache) to speed up tests when run in parallel would mine a bunch of blocks and store the private keys to sign the coinbase tx outputs in a wallet. There is no need to have the overhead of the whole wallet module by using keys that are deterministic for all runs.

    Note that this change most likely requires the ./test/cache/ to be cleared.

  2. MarcoFalke added the label Tests on Sep 9, 2018
  3. MarcoFalke force-pushed on Sep 9, 2018
  4. MarcoFalke force-pushed on Sep 9, 2018
  5. lucash-dev cross-referenced this on Sep 10, 2018 from issue qa: Run all tests even if wallet is not compiled by MarcoFalke
  6. Sjors commented at 8:27 AM on September 10, 2018: member

    tACK fae497d on macOS 10.13.6

  7. in test/functional/test_framework/test_framework.py:252 in fae497d560 outdated
     246 | @@ -247,6 +247,14 @@ def setup_nodes(self):
     247 |          self.add_nodes(self.num_nodes, extra_args)
     248 |          self.start_nodes()
     249 |  
     250 | +    def import_deterministic_coinbase_privkeys(self):
     251 | +        for n in self.nodes:
     252 | +            wallet_enabled = 'Wallet' in [line[3:-3] for line in n.help().splitlines() if line.startswith('==')]
    


    jnewbery commented at 3:46 PM on September 10, 2018:

    This seems a little brittle (based on the exact text output of the help text).

    Calling getwalletinfo and catching the returned error is an alternative way to do this.

  8. in test/functional/test_framework/test_framework.py:263 in fae497d560 outdated
     246 | @@ -247,6 +247,14 @@ def setup_nodes(self):
     247 |          self.add_nodes(self.num_nodes, extra_args)
     248 |          self.start_nodes()
     249 |  
     250 | +    def import_deterministic_coinbase_privkeys(self):
    


    jnewbery commented at 5:41 PM on September 10, 2018:

    Can you add a call to import_deterministic_coinbase_privkeys() to setup_nodes()? Would that reduce the number of tests that you need to change in this commit?


    MarcoFalke commented at 8:54 PM on September 10, 2018:

    Good idea to call this by default... This is now always called before run_test, unless self.setup_clean_chain is set.

  9. jnewbery commented at 5:42 PM on September 10, 2018: member

    Concept ACK.

    A couple of suggested changes inline. There are also a bunch of unrelated style changes in your commit. Can you remove those or split them into their own commit?

  10. MarcoFalke force-pushed on Sep 10, 2018
  11. MarcoFalke force-pushed on Sep 10, 2018
  12. in test/functional/test_framework/test_node.py:103 in faa669cbcd outdated
      96 | @@ -97,6 +97,22 @@ def __init__(self, i, datadir, *, rpchost, timewait, bitcoind, bitcoin_cli, mock
      97 |  
      98 |          self.p2ps = []
      99 |  
     100 | +    def get_deterministic_priv_key(self):
     101 | +        """Return a deterministic priv key in base58, that only depends on the node's index"""
     102 | +        PRIV_KEYS = [
     103 | +            # adress , privkey
    


    practicalswift commented at 7:37 AM on September 11, 2018:

    codespell:

    test/functional/test_framework/test_node.py:103: adress  ==> address
    

    MarcoFalke commented at 1:23 PM on September 13, 2018:

    Fixed typo

  13. in test/functional/wallet_listreceivedby.py:24 in fa513ea54d outdated
      17 | @@ -18,6 +18,11 @@ class ReceivedByTest(BitcoinTestFramework):
      18 |      def set_test_params(self):
      19 |          self.num_nodes = 2
      20 |  
      21 | +    def import_deterministic_coinbase_privkeys(self):
      22 | +        assert_equal(0, len(self.nodes[1].listreceivedbyaddress(minconf=0, include_empty=True, include_watchonly=True)))
      23 | +        super().import_deterministic_coinbase_privkeys()
      24 | +        self.num_cb_reward_addresses = len(self.nodes[1].listreceivedbyaddress(minconf=0, include_empty=True, include_watchonly=True))
    


    ryanofsky commented at 8:11 PM on September 12, 2018:

    Maybe substitute cb_reward with just coinbase to be more consistent.

  14. in test/functional/wallet_dump.py:32 in faa669cbcd outdated
      33 | -                # key = key_label.split(" ")[0]
      34 | -                keytype = key_label.split(" ")[2]
      35 | -                if len(comment) > 1:
      36 | -                    addr_keypath = comment.split(" addr=")[1]
      37 | -                    addr = addr_keypath.split(" ")[0]
      38 | +                key_date_label, comment = line.split("#")
    


    ryanofsky commented at 8:22 PM on September 12, 2018:

    Previous code and new changes here are pretty inscrutable. Can you explain at a high level what is changing here and why? Can you perhaps add comments to the code to make it clearer, for example to explain why new code skips lines containing 1970?


    MarcoFalke commented at 1:24 PM on September 13, 2018:

    Added a comment. Note that it is easier to see that nothing changed with --ignore-all-space

  15. in test/functional/feature_fee_estimation.py:175 in faa669cbcd outdated
     167 | @@ -168,6 +168,11 @@ def transact_and_mine(self, numblocks, mining_node):
     168 |                      newmem.append(utx)
     169 |              self.memutxo = newmem
     170 |  
     171 | +    def import_deterministic_coinbase_privkeys(self):
     172 | +        self.start_nodes()
    


    ryanofsky commented at 8:27 PM on September 12, 2018:

    Couldn't the test framework implementation of import_deterministic_coinbase_privkeys be smart enough to know whether nodes are running or not with node.is_node_stopped (or other state)? It seems unfortunate that an individual test would need to override the import_deterministic_coinbase_privkeys method to get such basic functionality.

  16. in test/functional/interface_zmq.py:44 in faa669cbcd outdated
      39 | @@ -40,6 +40,13 @@ def set_test_params(self):
      40 |      def setup_nodes(self):
      41 |          skip_if_no_py3_zmq()
      42 |          skip_if_no_bitcoind_zmq(self)
      43 | +
      44 | +        # Import keys
    


    ryanofsky commented at 8:30 PM on September 12, 2018:

    Why doesn't the default framework import_deterministic_coinbase_privkeys call work in this test? There should be a comment here to explain why this override is needed if the default behavior can't be fixed.


    MarcoFalke commented at 1:24 PM on September 13, 2018:

    Removed the unneeded import_deterministic_coinbase_privkeys

  17. in test/functional/wallet_import_rescan.py:120 in faa669cbcd outdated
     115 | @@ -116,10 +116,19 @@ def setup_network(self):
     116 |                  extra_args[i] += ["-prune=1"]
     117 |  
     118 |          self.add_nodes(self.num_nodes, extra_args=extra_args)
     119 | +
     120 | +        # Import keys
    


    ryanofsky commented at 8:35 PM on September 12, 2018:

    Can you add comment explaining need for this override? The stop_nodes immediately followed by start_nodes below seems very odd. And given that this is a wallet test, maybe it would be simpler to just keep the old behavior and just use the wallet instead of generating to hardcoded addresses?


    MarcoFalke commented at 1:23 PM on September 13, 2018:

    Added a comment

  18. qa: Fix codespell error and have lint-spelling error instead of warn e413c2ddd1
  19. MarcoFalke renamed this:
    qa: Premine to deterministic address with -disablewallet
    qa: Fixups to "Run all tests even if wallet is not compiled"
    on Sep 13, 2018
  20. qa: Remove unneded import_deterministic_coinbase_privkeys overwrite, add comments fa8433e379
  21. MarcoFalke force-pushed on Sep 13, 2018
  22. ryanofsky commented at 7:08 PM on September 13, 2018: contributor

    utACK fa8433e3797a574937009c1b0843f44d8d7b5358, thanks for cleanup!

  23. MarcoFalke merged this on Sep 13, 2018
  24. MarcoFalke closed this on Sep 13, 2018

  25. MarcoFalke referenced this in commit efb11d7c05 on Sep 13, 2018
  26. MarcoFalke deleted the branch on Sep 13, 2018
  27. Bushstar cross-referenced this on Oct 11, 2018 from issue Updates from bitcoin/master by Bushstar
  28. laanwj cross-referenced this on Oct 16, 2018 from issue Warn (don't fail!) on spelling errors. Fix typos reported by codespell. by practicalswift
  29. practicalswift cross-referenced this on Oct 16, 2018 from issue build: Warn (don't fail!) on spelling errors by practicalswift
  30. sipa referenced this in commit 27bf14f6f3 on Oct 17, 2018
  31. jnewbery cross-referenced this on Feb 26, 2019 from issue test: Add .style.yapf by MarcoFalke
  32. PastaPastaPasta referenced this in commit 329d9eafea on Jul 17, 2021
  33. UdjinM6 referenced this in commit b85b315471 on Jul 19, 2021
  34. PastaPastaPasta referenced this in commit 9e7bb84a01 on Jul 19, 2021
  35. PastaPastaPasta referenced this in commit 07abb538c3 on Jul 19, 2021
  36. PastaPastaPasta referenced this in commit e35dbc49ab on Jul 20, 2021
  37. PastaPastaPasta referenced this in commit 077f21875f on Jul 21, 2021
  38. bitcoin locked this on Sep 8, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-05-20 06:54 UTC