[electrum] provide a test framework for Electrum ABC functional tests
Summary:
Remove the dependency on Fulcrum and pytest-docker, and get all the benefits from the monorepo by testing with an up-to-date Chronik Electrum server.
The tests are now run on CI when electrum or chronik-http code is modified.
Potential future improvements that are out of scope for this diff:
- reuse more features from the node's test framework (assert_equal, wait_until...)
- provide more feedback on test failure (path the node's debug log and stderr...)
- provide less feedback on test success: don't log Electrum ABC's verbose output unconditionally, write it to a file
Certificate and key generated with:
Self-signed certificate generated with:
openssl req -newkey rsa:2048 -sha256 -nodes -x509 -days 36500 -subj '/O=BitcoinABC' -keyout server.key -out server.crt
Depends on D18295
Test Plan:
Test all the ways to run the test suite or an individual test module
./contrib/teamcity/build-configurations.py electrum-functional-tests mkdir build && cd build cmake .. -GNinja -DBUILD_CHRONIK=1 ninja check-electrum-functional cd ../electrum BITCOIND='/home/pierre/dev/bitcoin-abc/build/src/bitcoind' python -m electrumabc.tests.regtest.test_rpc_misc BITCOIND='/home/pierre/dev/bitcoin-abc/build/src/bitcoind' python test_runner.py functional
Reviewers: #bitcoin_abc, Fabien
Reviewed By: #bitcoin_abc, Fabien
Subscribers: Fabien
Differential Revision: https://reviews.bitcoinabc.org/D18293