<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.


---

