Page MenuHomePhabricator

[CI] Disable unsupported qemu feature by bypassing the configuration
ClosedPublic

Authored by Fabien on May 21 2020, 18:41.

Details

Summary

This is a hack to allow for running the arm and aarch64 functional
tests.
Unsupported features are logged by qemu to stderr and are mixed with the
node stderr, causing the functional tests to fail.

Good news: qemu provides a lot of filtering and redirecting options for
its logs.
Bad news: the log filtering doesn't work at all (see bug
https://bugs.launchpad.net/qemu/+bug/1748612) so we can't use it.

For now the workaroung is to bypass the configuration detection to
disable the feature causing the log to appear.

Test Plan

Run the CI build-linux-arm and build-linux-aarch64 build plans.

Diff Detail

Event Timeline

Fabien requested review of this revision.May 21 2020, 18:41

Snippet of first build failure:

2020-05-21T19:05:59.634000Z TestFramework (INFO): Stopping nodes
2020-05-21T19:05:59.890000Z TestFramework (INFO): Cleaning up /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/wallet_txn_clone_619 on exit
2020-05-21T19:05:59.890000Z TestFramework (INFO): Tests successful
[19:06:27]i:		 [Bitcoin ABC functional tests] wallet_txn_clone.py --mineblock
[19:06:27]i:			 [wallet_txn_clone.py --mineblock] [Test Output]
2020-05-21T19:05:43.730000Z TestFramework (INFO): Initializing test directory /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/wallet_txn_clone_602
2020-05-21T19:05:47.804000Z TestFramework (INFO): Stopping nodes
2020-05-21T19:05:48.662000Z TestFramework (INFO): Cleaning up /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/wallet_txn_clone_602 on exit
2020-05-21T19:05:48.662000Z TestFramework (INFO): Tests successful
[19:06:27]i:		 [Bitcoin ABC functional tests] wallet_txn_doublespend.py
[19:06:27]i:			 [wallet_txn_doublespend.py] [Test Output]
2020-05-21T19:06:16.108000Z TestFramework (INFO): Initializing test directory /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/wallet_txn_doublespend_651
2020-05-21T19:06:19.241000Z TestFramework (INFO): Stopping nodes
2020-05-21T19:06:19.498000Z TestFramework (INFO): Cleaning up /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/wallet_txn_doublespend_651 on exit
2020-05-21T19:06:19.498000Z TestFramework (INFO): Tests successful
[19:06:27]i:		 [Bitcoin ABC functional tests] wallet_txn_doublespend.py --mineblock
[19:06:27]i:			 [wallet_txn_doublespend.py --mineblock] [Test Output]
2020-05-21T19:05:43.838000Z TestFramework (INFO): Initializing test directory /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/wallet_txn_doublespend_603
2020-05-21T19:05:47.970000Z TestFramework (INFO): Stopping nodes
2020-05-21T19:05:48.643000Z TestFramework (INFO): Cleaning up /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/wallet_txn_doublespend_603 on exit
2020-05-21T19:05:48.643000Z TestFramework (INFO): Tests successful
[19:06:27]i:		 [Bitcoin ABC functional tests] wallet_zapwallettxes.py
[19:06:27]i:			 [wallet_zapwallettxes.py] [Test Output]
2020-05-21T19:05:14.066000Z TestFramework (INFO): Initializing test directory /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/wallet_zapwallettxes_584
2020-05-21T19:05:14.788000Z TestFramework (INFO): Mining blocks...
2020-05-21T19:05:19.894000Z TestFramework (INFO): Stopping nodes
2020-05-21T19:05:20.198000Z TestFramework (INFO): Cleaning up /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/wallet_zapwallettxes_584 on exit
2020-05-21T19:05:20.198000Z TestFramework (INFO): Tests successful
[19:06:27]i:		 [Bitcoin ABC functional tests] interface_zmq.py
[19:06:27]i:			 [interface_zmq.py] Test ignored: interface_zmq.py
[19:06:27]i:		 [Bitcoin ABC functional tests] [Test Output]
2020-05-21T19:05:05.491000Z TestFramework (WARNING): Test Skipped: bitcoind has not been built with zmq enabled.
2020-05-21T19:05:05.542000Z TestFramework (INFO): Stopping nodes
2020-05-21T19:05:05.542000Z TestFramework (INFO): Cleaning up /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/interface_zmq_578 on exit
2020-05-21T19:05:05.542000Z TestFramework (INFO): Test skipped
[19:06:27]i:		 [Bitcoin ABC functional tests] p2p_invalid_messages.py
[19:06:27]i:			 [p2p_invalid_messages.py] [Test Output]
2020-05-21T19:06:19.579000Z TestFramework (INFO): Initializing test directory /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/p2p_invalid_messages_661
2020-05-21T19:06:20.222000Z TestFramework (INFO): Sending a bunch of large, junk messages to test memory exhaustion. May take a bit...
2020-05-21T19:06:22.222000Z TestFramework (INFO): Waiting for node to drop junk messages.
2020-05-21T19:06:23.178000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 163, in main
    self.run_test()
  File "/work/test/functional/p2p_invalid_messages.py", line 89, in run_test
    assert node.p2p.is_connected
  File "/usr/lib/python3.7/contextlib.py", line 119, in __exit__
    next(self.gen)
  File "/work/test/functional/test_framework/test_node.py", line 451, in assert_memory_usage_stable
    perc_increase_memory_usage * 100))
  File "/work/test/functional/test_framework/test_node.py", line 197, in _raise_assertion_error
    raise AssertionError(self._node_msg(msg))
AssertionError: [node 0] Memory usage increased over threshold of 3.000% from 123464 to 130980 (5.738%)
2020-05-21T19:06:23.229000Z TestFramework (INFO): Stopping nodes
2020-05-21T19:06:23.432000Z TestFramework (WARNING): Not cleaning up dir /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/p2p_invalid_messages_661
2020-05-21T19:06:23.432000Z TestFramework (ERROR): Test failed. Test logging available at /work/build/test/tmp/test_runner_₿₵_  _20200521_190259/p2p_invalid_messages_661/test_framework.log
2020-05-21T19:06:23.432000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/build/test/tmp/test_runner_₿₵_  _20200521_190259/p2p_invalid_messages_661' to consolidate all logs
[19:06:32]E:	 [Step 1/2] Failed tests detected
[19:06:35]W:	 [Step 1/2] Process exited with code 1
[19:06:35]E:	 [Step 1/2] Process exited with code 1 (Step: Command Line)

Each failure log is accessible here:
Bitcoin ABC functional tests: p2p_invalid_messages.py

This revision is now accepted and ready to land.May 21 2020, 19:54