<p>For the tests skipped with &quot;previous releases not available&quot;, you need to have older versions of Bitcoin Core in a local directory. This directory has a folder for each version (named <code>v25.0</code>, <code>v24.1</code>, etc.). Within each version's folder is another folder named <code>bin</code>, and within that are the binaries for that version. The layout of that will look like:</p>
<pre><code>|_ v25.0
   |_ bin
      |_ bitcoind
      |_ bitcoin-cli
      |_ bitcoin-tx
      |_ bitcoin-wallet
|_ v24.1
   |_ bin
      |_ bitcoind
      |_ bitcoin-cli
      |_ bitcoin-tx
      |_ bitcoin-wallet
|_ v23.0
   |_ bin
      |_ bitcoind
      |_ bitcoin-cli
      |_ bitcoin-tx
      |_ bitcoin-wallet
...
</code></pre>
<p>This directoy must either be named <code>releases</code> in your current working directory, or you can provide the full path to it as the environment variable <code>PREVIOUS_RELEASES_DIR</code></p>
<p>For the tests that require 1.1.1.1 and/or 2.2.2.2, you need to create another network interface on your machine and set their IP's to 1.1.1.1 and 2.2.2.2. There are instructions for doing this in the tests themselves.</p>
<p>From <code>feature_bind_port_discover.py</code>:</p>
<pre><code># We need to bind to a routable address for this test to exercise the relevant code
# and also must have another routable address on another interface which must not
# be named &quot;lo&quot; or &quot;lo0&quot;.
# To set these routable addresses on the machine, use:
# Linux:
# ifconfig lo:0 1.1.1.1/32 up &amp;&amp; ifconfig lo:1 2.2.2.2/32 up  # to set up
# ifconfig lo:0 down &amp;&amp; ifconfig lo:1 down  # to remove it, after the test
# FreeBSD:
# ifconfig em0 1.1.1.1/32 alias &amp;&amp; ifconfig wlan0 2.2.2.2/32 alias  # to set up
# ifconfig em0 1.1.1.1 -alias &amp;&amp; ifconfig wlan0 2.2.2.2 -alias  # to remove it, after the test
</code></pre>
<p>Then you can pass the <code>--ihave1111and2222</code> and <code>--ihave1111</code> options to the tests.</p>

CC BY-SA 4.0
2023-12-21T15:06:40.653Z
2023-12-21T15:06:40.653Z
Ava Chow
<p>I am trying to run the functional tests. Everything is a pass but I have some tests skipped. Here are some:</p>
<p><code>260/288 - feature_unsupported_utxo_db.py skipped (previous releases not available or disabled)</code> - &quot;For this one I don't know what to do, and have about 5 of the same tests skipped&quot;</p>
<p><code>241/288 - feature_bind_port_discover.py skipped (To run this test make sure that 1.1.1.1 and 2.2.2.2 (routable addresses) are assigned to the interfaces on this machine and rerun with --ihave1111and2222)</code></p>
<p><code>223/288 - feature_bind_port_externalip.py skipped (To run this test make sure that 1.1.1.1 (a routable address) is assigned to one of the interfaces on this machine and rerun with --ihave1111)</code> - &quot;For this one and the one above, I tried assigning the machine ip address to 1.1.1.1, tried running the test with <code>--ihave1111</code> flag, nothing helped</p>
<p>I would like to know why these test are being skipped and how to run them.</p>
<h2><em>Update</em></h2>
<p>I tried the network issue, now the test fails. Here is the output:</p>
<p>sudo test/functional/feature_bind_port_externalip.py --ihave1111</p>
<p><strong>--ihave1111and2222 doesn't work</strong></p>
<p>2023-12-21T15:59:42.460000Z TestFramework (INFO): PRNG seed is: 9034826233842177560
2023-12-21T15:59:42.461000Z TestFramework (INFO): Initializing test directory /tmp/bitcoin_func_test_ryvl93pg
2023-12-21T16:00:43.190000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: ''''
self.wait_until(lambda: sum(peer['version'] != 0 for peer in from_connection.getpeerinfo()) == from_num_peers)
'''
2023-12-21T16:00:43.190000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
File &quot;/home/jack/bitcoin/test/functional/test_framework/test_framework.py&quot;, line 130, in main
self.setup()
File &quot;/home/jack/bitcoin/test/functional/test_framework/test_framework.py&quot;, line 297, in setup
self.setup_network()
File &quot;/home/jack/bitcoin/test/functional/test_framework/test_framework.py&quot;, line 407, in setup_network
self.connect_nodes(i + 1, i)
File &quot;/home/jack/bitcoin/test/functional/test_framework/test_framework.py&quot;, line 620, in connect_nodes
self.wait_until(lambda: sum(peer['version'] != 0 for peer in from_connection.getpeerinfo()) == from_num_peers)
File &quot;/home/jack/bitcoin/test/functional/test_framework/test_framework.py&quot;, line 765, in wait_until
return wait_until_helper_internal(test_function, timeout=timeout, timeout_factor=self.options.timeout_factor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &quot;/home/jack/bitcoin/test/functional/test_framework/util.py&quot;, line 276, in wait_until_helper_internal
raise AssertionError(&quot;Predicate {} not true after {} seconds&quot;.format(predicate_source, timeout))
AssertionError: Predicate ''''
self.wait_until(lambda: sum(peer['version'] != 0 for peer in from_connection.getpeerinfo()) == from_num_peers)
''' not true after 60 seconds
2023-12-21T16:00:43.247000Z TestFramework (INFO): Stopping nodes
2023-12-21T16:00:43.505000Z TestFramework (WARNING): Not cleaning up dir /tmp/bitcoin_func_test_ryvl93pg
2023-12-21T16:00:43.505000Z TestFramework (ERROR): Test failed. Test logging available at /tmp/bitcoin_func_test_ryvl93pg/test_framework.log
2023-12-21T16:00:43.506000Z TestFramework (ERROR):
2023-12-21T16:00:43.506000Z TestFramework (ERROR): Hint: Call /home/jack/bitcoin/test/functional/combine_logs.py '/tmp/bitcoin_func_test_ryvl93pg' to consolidate all logs
2023-12-21T16:00:43.506000Z TestFramework (ERROR):
2023-12-21T16:00:43.506000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-12-21T16:00:43.506000Z TestFramework (ERROR): <a href="https://github.com/bitcoin/bitcoin/issues" rel="nofollow noreferrer">https://github.com/bitcoin/bitcoin/issues</a>
2023-12-21T16:00:43.506000Z TestFramework (ERROR):</p>
<p>Maybe it is connected to this line &quot;not true after 60 seconds&quot; is it a timeout error?</p>
<p>Also, the command sudo test/functional/test_runner.py which runs all tests cannot be run with the --ihave1111 flag, spits an error.</p>
<p>note: I am running linux on virtual machine, maybe that is why the test fails</p>

<bitcoin-core-development><functional-test>
How can I run the skipped Bitcoin Functional Tests?
Robert Nakamoto
# How can I run the skipped Bitcoin Functional Tests?

(Asked by: username_0 on 2023-12-21)

I am trying to run the functional tests. Everything is a pass but I have some tests skipped. Here are some:

`260/288 - feature_unsupported_utxo_db.py skipped (previous releases not available or disabled)` - "For this one I don't know what to do, and have about 5 of the same tests skipped"

`241/288 - feature_bind_port_discover.py skipped (To run this test make sure that 1.1.1.1 and 2.2.2.2 (routable addresses) are assigned to the interfaces on this machine and rerun with --ihave1111and2222)`

`223/288 - feature_bind_port_externalip.py skipped (To run this test make sure that 1.1.1.1 (a routable address) is assigned to one of the interfaces on this machine and rerun with --ihave1111)` - "For this one and the one above, I tried assigning the machine ip address to 1.1.1.1, tried running the test with `--ihave1111` flag, nothing helped

I would like to know why these test are being skipped and how to run them.

## *Update*

I tried the network issue, now the test fails. Here is the output:

sudo test/functional/feature\_bind\_port\_externalip.py --ihave1111

**--ihave1111and2222 doesn't work**

2023-12-21T15:59:42.460000Z TestFramework (INFO): PRNG seed is: 9034826233842177560
2023-12-21T15:59:42.461000Z TestFramework (INFO): Initializing test directory /tmp/bitcoin\_func\_test\_ryvl93pg
2023-12-21T16:00:43.190000Z TestFramework.utils (ERROR): wait\_until() failed. Predicate: ''''
self.wait\_until(lambda: sum(peer['version'] != 0 for peer in from\_connection.getpeerinfo()) == from\_num\_peers)
'''
2023-12-21T16:00:43.190000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
File "/home/jack/bitcoin/test/functional/test\_framework/test\_framework.py", line 130, in main
self.setup()
File "/home/jack/bitcoin/test/functional/test\_framework/test\_framework.py", line 297, in setup
self.setup\_network()
File "/home/jack/bitcoin/test/functional/test\_framework/test\_framework.py", line 407, in setup\_network
self.connect\_nodes(i + 1, i)
File "/home/jack/bitcoin/test/functional/test\_framework/test\_framework.py", line 620, in connect\_nodes
self.wait\_until(lambda: sum(peer['version'] != 0 for peer in from\_connection.getpeerinfo()) == from\_num\_peers)
File "/home/jack/bitcoin/test/functional/test\_framework/test\_framework.py", line 765, in wait\_until
return wait\_until\_helper\_internal(test\_function, timeout=timeout, timeout\_factor=self.options.timeout\_factor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/jack/bitcoin/test/functional/test\_framework/util.py", line 276, in wait\_until\_helper\_internal
raise AssertionError("Predicate {} not true after {} seconds".format(predicate\_source, timeout))
AssertionError: Predicate ''''
self.wait\_until(lambda: sum(peer['version'] != 0 for peer in from\_connection.getpeerinfo()) == from\_num\_peers)
''' not true after 60 seconds
2023-12-21T16:00:43.247000Z TestFramework (INFO): Stopping nodes
2023-12-21T16:00:43.505000Z TestFramework (WARNING): Not cleaning up dir /tmp/bitcoin\_func\_test\_ryvl93pg
2023-12-21T16:00:43.505000Z TestFramework (ERROR): Test failed. Test logging available at /tmp/bitcoin\_func\_test\_ryvl93pg/test\_framework.log
2023-12-21T16:00:43.506000Z TestFramework (ERROR):
2023-12-21T16:00:43.506000Z TestFramework (ERROR): Hint: Call /home/jack/bitcoin/test/functional/combine\_logs.py '/tmp/bitcoin\_func\_test\_ryvl93pg' to consolidate all logs
2023-12-21T16:00:43.506000Z TestFramework (ERROR):
2023-12-21T16:00:43.506000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2023-12-21T16:00:43.506000Z TestFramework (ERROR): <https://github.com/bitcoin/bitcoin/issues>
2023-12-21T16:00:43.506000Z TestFramework (ERROR):

Maybe it is connected to this line "not true after 60 seconds" is it a timeout error?

Also, the command sudo test/functional/test\_runner.py which runs all tests cannot be run with the --ihave1111 flag, spits an error.

note: I am running linux on virtual machine, maybe that is why the test fails

**Tags:** bitcoin-core-development, functional-test


---

## 1 answers

### Answer by username_1 on 2023-12-21. Score: 4

For the tests skipped with "previous releases not available", you need to have older versions of Bitcoin Core in a local directory. This directory has a folder for each version (named v25.0, v24.1, etc.). Within each version's folder is another folder named bin, and within that are the binaries for that version. The layout of that will look like:
|_ v25.0
   |_ bin
      |_ bitcoind
      |_ bitcoin-cli
      |_ bitcoin-tx
      |_ bitcoin-wallet
|_ v24.1
   |_ bin
      |_ bitcoind
      |_ bitcoin-cli
      |_ bitcoin-tx
      |_ bitcoin-wallet
|_ v23.0
   |_ bin
      |_ bitcoind
      |_ bitcoin-cli
      |_ bitcoin-tx
      |_ bitcoin-wallet
...

This directoy must either be named releases in your current working directory, or you can provide the full path to it as the environment variable PREVIOUS_RELEASES_DIR
For the tests that require 1.1.1.1 and/or 2.2.2.2, you need to create another network interface on your machine and set their IP's to 1.1.1.1 and 2.2.2.2. There are instructions for doing this in the tests themselves.
From feature_bind_port_discover.py:
# We need to bind to a routable address for this test to exercise the relevant code
# and also must have another routable address on another interface which must not
# be named "lo" or "lo0".
# To set these routable addresses on the machine, use:
# Linux:
# ifconfig lo:0 1.1.1.1/32 up && ifconfig lo:1 2.2.2.2/32 up  # to set up
# ifconfig lo:0 down && ifconfig lo:1 down  # to remove it, after the test
# FreeBSD:
# ifconfig em0 1.1.1.1/32 alias && ifconfig wlan0 2.2.2.2/32 alias  # to set up
# ifconfig em0 1.1.1.1 -alias && ifconfig wlan0 2.2.2.2 -alias  # to remove it, after the test

Then you can pass the --ihave1111and2222 and --ihave1111 options to the tests.


---

