Page MenuHomePhabricator

[chronik] make -chronikelectrumbind require -chronikscripthashindex
ClosedPublic

Authored by PiRK on Mon, Jan 27, 16:12.

Details

Summary

Some Electrum RPCs (yet to be implemented) require the scripthash index, and imo it does not make sense to allow partial Electrum functionality. So make sure the index is available when the Electrum server is enabled.

Test Plan

ninja check-functional

Diff Detail

Repository
rABC Bitcoin ABC
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

PiRK requested review of this revision.Mon, Jan 27, 16:12
Fabien added a subscriber: Fabien.
Fabien added inline comments.
chronik/chronik-cpp/chronik.cpp
60 ↗(On Diff #52404)

I like auto, but here really... bool is the same number of chars

This revision is now accepted and ready to land.Mon, Jan 27, 16:16

Tail of the build log:

File                        | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s            
----------------------------|---------|----------|---------|---------|------------------------------
All files                   |   16.22 |    17.79 |   11.15 |   25.88 |                              
 ecash-lib                  |       0 |        0 |       0 |       0 |                              
  eslint.config.js          |       0 |        0 |       0 |       0 |                              
 ecash-lib/dist/ffi         |       0 |        0 |       0 |       0 |                              
  ecash_lib_wasm_browser.js |       0 |        0 |       0 |       0 | 3-336                        
  ecash_lib_wasm_nodejs.js  |       0 |        0 |       0 |       0 | 1-264                        
 ecash-lib/src              |    22.8 |    19.47 |   13.75 |   43.85 |                              
  consts.ts                 |       0 |      100 |     100 |       0 | 6-8                          
  ecc.ts                    |   30.76 |    83.33 |   22.22 |   57.14 | 23-31                        
  hash.ts                   |   35.29 |    83.33 |   22.22 |   66.66 | 14,17,20                     
  index.ts                  |       0 |        0 |       0 |       0 |                              
  indexBrowser.ts           |       0 |        0 |       0 |       0 |                              
  indexNodeJs.ts            |       0 |        0 |       0 |       0 |                              
  initBrowser.ts            |       0 |      100 |       0 |       0 | 11-13                        
  initNodeJs.ts             |   53.84 |      100 |   66.66 |   85.71 | 12                           
  op.ts                     |   20.13 |    23.33 |   36.36 |   39.47 | ...4,107,109,117-122,133-161 
  opcode.ts                 |    50.2 |    83.33 |     100 |     100 | 1                            
  script.ts                 |   19.26 |    17.64 |    9.67 |   33.33 | ...5-42,50,55,62-173,182-193 
  sigHashType.ts            |   38.66 |       25 |   38.46 |   76.31 | 26-58                        
  tx.ts                     |   16.48 |     11.9 |    4.76 |   31.91 | ...8,143-145,150-151,156,176 
  txBuilder.ts              |    8.02 |     9.61 |    4.54 |   16.48 | ...0,234-237,246-250,256-260 
  unsignedTx.ts             |    6.69 |        5 |    2.56 |   12.58 | ...0,344-345,350-351,356-357 
 ecash-lib/src/address      |   11.35 |    15.15 |    5.12 |   22.41 |                              
  address.ts                |   10.95 |    11.36 |    3.22 |   21.05 | ...3,239-240,255-256,266-344 
  legacyaddr.ts             |   12.04 |    22.72 |    12.5 |      25 | 15-19,23-38,70-111,124-128   
 ecash-lib/src/ffi          |    8.38 |     1.44 |    1.88 |    8.59 |                              
  ecash_lib_wasm_browser.js |       0 |        0 |       0 |       0 | 3-336                        
  ecash_lib_wasm_nodejs.js  |   18.36 |        5 |    4.34 |   18.62 | ...0-155,171-243,250-251,255 
 ecash-lib/src/io           |   19.54 |       32 |   24.19 |   38.16 |                              
  bytes.ts                  |    3.77 |     62.5 |    6.66 |     7.4 | 13-64                        
  hex.ts                    |   29.87 |       50 |   22.22 |   61.76 | 33-37,41-45,50,58,66-68      
  int.ts                    |       0 |        0 |       0 |       0 |                              
  str.ts                    |   46.15 |    83.33 |      40 |   85.71 | 15                           
  varsize.ts                |    6.12 |    13.15 |      20 |      12 | 14-24,35-47                  
  writer.ts                 |       0 |        0 |       0 |       0 |                              
  writerbytes.ts            |   22.03 |    21.87 |   33.33 |   43.33 | 33,42-67,79                  
  writerlength.ts           |   33.33 |    83.33 |   30.76 |    62.5 | 26-36                        
 ecash-lib/src/test         |   22.15 |    24.63 |   20.58 |    42.1 |                              
  testRunner.ts             |   22.15 |    24.63 |   20.58 |    42.1 | ...-75,87-89,102-112,122-207 
 ecash-lib/src/token        |   14.28 |    17.24 |    7.14 |   27.52 |                              
  alp.ts                    |    9.37 |    15.62 |    4.34 |   18.29 | ...3,127-131,135-137,141-145 
  common.ts                 |   54.54 |    83.33 |     100 |     100 | 1                            
  empp.ts                   |   26.08 |       50 |   14.28 |      50 | 11-14,22-28                  
  slp.ts                    |   14.76 |     7.35 |       4 |    28.2 | ...7,174-178,185-197,201-211 
----------------------------|---------|----------|---------|---------|------------------------------

##teamcity[blockOpened name='Code Coverage Summary']
##teamcity[buildStatisticValue key='CodeCoverageAbsBCovered' value='456']
##teamcity[buildStatisticValue key='CodeCoverageAbsBTotal' value='2811']
##teamcity[buildStatisticValue key='CodeCoverageAbsRCovered' value='161']
##teamcity[buildStatisticValue key='CodeCoverageAbsRTotal' value='905']
##teamcity[buildStatisticValue key='CodeCoverageAbsMCovered' value='51']
##teamcity[buildStatisticValue key='CodeCoverageAbsMTotal' value='457']
##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='448']
##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='1731']
##teamcity[blockClosed name='Code Coverage Summary']
mv: cannot stat 'test_results/ecash-lib-integration-tests-junit.xml': No such file or directory
Build ecash-lib-integration-tests failed with exit code 1

Tail of the build log:

   Doc-tests chronik-bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.39s

   Doc-tests chronik-indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik failed with exit code 1

Tail of the build log:

2025-01-27T16:20:00.512000Z TestFramework (INFO): Stopping nodes
[node 0] Cleaning up leftover process
Running Unit Tests for Test Framework Modules
setup_scripts/ecash-agora_base.py started
setup_scripts/ecash-agora_base.py failed, Duration: 1 s

stdout:

stderr:
Traceback (most recent call last):
  File "/work/test/functional/setup_scripts/ecash-agora_base.py", line 65, in <module>
    EcashAgoraSetup().main()
  File "/work/test/functional/setup_scripts/../test_framework/test_framework.py", line 172, in main
    exit_code = self.shutdown()
                ^^^^^^^^^^^^^^^
  File "/work/test/functional/setup_scripts/../test_framework/test_framework.py", line 398, in shutdown
    self.stop_nodes()
  File "/work/test/functional/setup_scripts/../test_framework/test_framework.py", line 653, in stop_nodes
    node.stop_node(wait=wait, wait_until_stopped=False)
  File "/work/test/functional/setup_scripts/../test_framework/test_node.py", line 515, in stop_node
    self.stop(wait=wait)
    ^^^^^^^^^
  File "/work/test/functional/setup_scripts/../test_framework/test_node.py", line 283, in __getattr__
    assert self.rpc is not None, self._node_msg("Error: RPC not initialized")
           ^^^^^^^^^^^^^^^^^^^^
AssertionError: [node 0] Error: RPC not initialized


TEST                              | STATUS    | DURATION

setup_scripts/ecash-agora_base.py | ✖ Failed  | 1 s

ALL                               | ✖ Failed  | 1 s (accumulated) 
Runtime: 1 s

Test runner completed with code 1
------------|---------|----------|---------|---------|----------------------------------------------
File        | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                            
------------|---------|----------|---------|---------|----------------------------------------------
All files   |     3.9 |     6.94 |     3.4 |    7.66 |                                              
 ad.ts      |     6.6 |    15.62 |      20 |   12.72 | 6,33-100,127-146                             
 agora.ts   |    3.57 |     3.01 |    1.56 |    7.04 | 14,42,47,114-493,545-950,970-976             
 consts.ts  |   57.14 |    83.33 |     100 |     100 | 1                                            
 index.ts   |       0 |        0 |       0 |       0 |                                              
 oneshot.ts |       5 |    22.72 |       4 |    9.87 | 5,77-223,234-251,263-270,279-286             
 partial.ts |     2.2 |     3.73 |    1.92 |    4.32 | ...7,1332-1342,1352-1371,1388-1395,1405-1412 
------------|---------|----------|---------|---------|----------------------------------------------

##teamcity[blockOpened name='Code Coverage Summary']
##teamcity[buildStatisticValue key='CodeCoverageAbsBCovered' value='43']
##teamcity[buildStatisticValue key='CodeCoverageAbsBTotal' value='1101']
##teamcity[buildStatisticValue key='CodeCoverageAbsRCovered' value='25']
##teamcity[buildStatisticValue key='CodeCoverageAbsRTotal' value='360']
##teamcity[buildStatisticValue key='CodeCoverageAbsMCovered' value='5']
##teamcity[buildStatisticValue key='CodeCoverageAbsMTotal' value='147']
##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='43']
##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='561']
##teamcity[blockClosed name='Code Coverage Summary']
mv: cannot stat 'test_results/ecash-agora-integration-tests-junit.xml': No such file or directory
Build ecash-agora-integration-tests failed with exit code 1

Tail of the build log:

   Doc-tests chronik-bridge

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-db

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-http

running 1 test
test chronik/chronik-http/src/protobuf.rs - protobuf::Protobuf (line 29) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s

   Doc-tests chronik-indexer

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-common

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-plugin-impl

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-proto

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests chronik-util

running 2 tests
test chronik/chronik-util/src/log.rs - log::log (line 65) ... ignored
test chronik/chronik-util/src/log.rs - log::log_chronik (line 87) ... ignored

test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s

ninja: build stopped: cannot make progress due to previous errors.
Build build-chronik-plugins failed with exit code 1

Tail of the build log:

setup_scripts/chronik-client_block_and_blocks.py started
setup_scripts/chronik-client_block_and_blocks.py failed, Duration: 2 s

stdout:

stderr:
Traceback (most recent call last):
  File "/work/test/functional/setup_scripts/chronik-client_block_and_blocks.py", line 58, in <module>
    ChronikClient_Block_Setup().main()
  File "/work/test/functional/setup_scripts/../test_framework/test_framework.py", line 172, in main
    exit_code = self.shutdown()
                ^^^^^^^^^^^^^^^
  File "/work/test/functional/setup_scripts/../test_framework/test_framework.py", line 398, in shutdown
    self.stop_nodes()
  File "/work/test/functional/setup_scripts/../test_framework/test_framework.py", line 653, in stop_nodes
    node.stop_node(wait=wait, wait_until_stopped=False)
  File "/work/test/functional/setup_scripts/../test_framework/test_node.py", line 515, in stop_node
    self.stop(wait=wait)
    ^^^^^^^^^
  File "/work/test/functional/setup_scripts/../test_framework/test_node.py", line 283, in __getattr__
    assert self.rpc is not None, self._node_msg("Error: RPC not initialized")
           ^^^^^^^^^^^^^^^^^^^^
AssertionError: [node 0] Error: RPC not initialized


TEST                                             | STATUS    | DURATION

setup_scripts/chronik-client_block_and_blocks.py | ✖ Failed  | 2 s

ALL                                              | ✖ Failed  | 2 s (accumulated) 
Runtime: 2 s

Test runner for chronik-client_block_and_blocks completed with code 1
----------------------|---------|----------|---------|---------|------------------------------------
File                  | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s                  
----------------------|---------|----------|---------|---------|------------------------------------
All files             |    4.69 |     0.45 |    1.05 |    4.58 |                                    
 chronik-client       |     100 |      100 |     100 |     100 |                                    
  index.ts            |     100 |      100 |     100 |     100 |                                    
 chronik-client/proto |    3.87 |     0.49 |    1.38 |    3.91 |                                    
  chronik.ts          |    3.87 |     0.49 |    1.38 |    3.91 | ...7,6332-6371,6379-6483,6487-6496 
 chronik-client/src   |    8.33 |        0 |       0 |    7.59 |                                    
  ChronikClient.ts    |    4.91 |        0 |       0 |    4.91 | ...20-392,405-462,476-580,648-1451 
  failoverProxy.ts    |    4.67 |        0 |       0 |     4.8 | 33-327                             
  hex.ts              |   31.57 |        0 |       0 |   33.33 | 33-37,41-45,49-62,66-68            
  validation.ts       |   26.82 |        0 |       0 |   18.91 | 14-49,54-55,62-63,73-88            
----------------------|---------|----------|---------|---------|------------------------------------

##teamcity[blockOpened name='Code Coverage Summary']
##teamcity[buildStatisticValue key='CodeCoverageAbsBCovered' value='147']
##teamcity[buildStatisticValue key='CodeCoverageAbsBTotal' value='3132']
##teamcity[buildStatisticValue key='CodeCoverageAbsRCovered' value='12']
##teamcity[buildStatisticValue key='CodeCoverageAbsRTotal' value='2645']
##teamcity[buildStatisticValue key='CodeCoverageAbsMCovered' value='6']
##teamcity[buildStatisticValue key='CodeCoverageAbsMTotal' value='567']
##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='142']
##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='3097']
##teamcity[blockClosed name='Code Coverage Summary']
mv: cannot stat 'test_results/chronik-client-integration-tests-junit.xml': No such file or directory
Build chronik-client-integration-tests failed with exit code 1
PiRK planned changes to this revision.Mon, Jan 27, 19:07
This revision is now accepted and ready to land.Tue, Jan 28, 13:04

Failed tests logs:

====== Bitcoin ABC functional tests: chronik_electrum_basic.py ======

------- Stdout: -------
2025-01-28T13:24:46.634000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250128_132138/chronik_electrum_basic_230
2025-01-28T13:25:48.633000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_node.py", line 792, in assert_start_raises_init_error
    ret = self.process.wait(timeout=self.rpc_timeout)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1262, in wait
    return self._wait(timeout=timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1989, in _wait
    raise TimeoutExpired(self.args, timeout)
subprocess.TimeoutExpired: Command '['/work/abc-ci-builds/build-chronik/src/bitcoind', '-datadir=/work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250128_132138/chronik_electrum_basic_230/node0', '-logtimemicros', '-logthreadnames', '-logsourcelocations', '-debug', '-debugexclude=libevent', '-debugexclude=leveldb', '-uacomment=testnode-0', '-chronik', '-chronikscripthashindex=0']' timed out after 60 seconds

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 149, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 139, in _run_test_internal
    self.run_test()
  File "/work/test/functional/chronik_electrum_basic.py", line 32, in run_test
    self.test_init_errors()
  File "/work/test/functional/chronik_electrum_basic.py", line 59, in test_init_errors
    self.node.assert_start_raises_init_error(
  File "/work/test/functional/test_framework/test_node.py", line 831, in assert_start_raises_init_error
    self._raise_assertion_error(assert_msg)
  File "/work/test/functional/test_framework/test_node.py", line 266, in _raise_assertion_error
    raise AssertionError(self._node_msg(msg))
AssertionError: [node 0] bitcoind should have exited within 60s with expected error Error: The -chronikelectrumbind option requires -chronikscripthashindex to be true.
2025-01-28T13:25:48.686000Z TestFramework (INFO): Stopping nodes
2025-01-28T13:25:48.686000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250128_132138/chronik_electrum_basic_230
2025-01-28T13:25:48.686000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250128_132138/chronik_electrum_basic_230/test_framework.log
2025-01-28T13:25:48.686000Z TestFramework (ERROR): 
2025-01-28T13:25:48.687000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-chronik/test/tmp/test_runner_₿₵_🏃_20250128_132138/chronik_electrum_basic_230' to consolidate all logs
2025-01-28T13:25:48.687000Z TestFramework (ERROR): 
2025-01-28T13:25:48.687000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-01-28T13:25:48.687000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-01-28T13:25:48.687000Z TestFramework (ERROR):

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

Failed tests logs:

====== Bitcoin ABC functional tests: chronik_electrum_basic.py ======

------- Stdout: -------
2025-01-28T13:27:29.527000Z TestFramework (INFO): Initializing test directory /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250128_132510/chronik_electrum_basic_230
2025-01-28T13:28:30.431000Z TestFramework (ERROR): Assertion failed
Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_node.py", line 792, in assert_start_raises_init_error
    ret = self.process.wait(timeout=self.rpc_timeout)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1262, in wait
    return self._wait(timeout=timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/subprocess.py", line 1989, in _wait
    raise TimeoutExpired(self.args, timeout)
subprocess.TimeoutExpired: Command '['/work/abc-ci-builds/build-chronik-plugins/src/bitcoind', '-datadir=/work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250128_132510/chronik_electrum_basic_230/node0', '-logtimemicros', '-logthreadnames', '-logsourcelocations', '-debug', '-debugexclude=libevent', '-debugexclude=leveldb', '-uacomment=testnode-0', '-chronik', '-chronikscripthashindex=0']' timed out after 60 seconds

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/work/test/functional/test_framework/test_framework.py", line 149, in main
    self._run_test_internal()
  File "/work/test/functional/test_framework/test_framework.py", line 139, in _run_test_internal
    self.run_test()
  File "/work/test/functional/chronik_electrum_basic.py", line 32, in run_test
    self.test_init_errors()
  File "/work/test/functional/chronik_electrum_basic.py", line 59, in test_init_errors
    self.node.assert_start_raises_init_error(
  File "/work/test/functional/test_framework/test_node.py", line 831, in assert_start_raises_init_error
    self._raise_assertion_error(assert_msg)
  File "/work/test/functional/test_framework/test_node.py", line 266, in _raise_assertion_error
    raise AssertionError(self._node_msg(msg))
AssertionError: [node 0] bitcoind should have exited within 60s with expected error Error: The -chronikelectrumbind option requires -chronikscripthashindex to be true.
2025-01-28T13:28:30.487000Z TestFramework (INFO): Stopping nodes
2025-01-28T13:28:30.488000Z TestFramework (WARNING): Not cleaning up dir /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250128_132510/chronik_electrum_basic_230
2025-01-28T13:28:30.488000Z TestFramework (ERROR): Test failed. Test logging available at /work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250128_132510/chronik_electrum_basic_230/test_framework.log
2025-01-28T13:28:30.488000Z TestFramework (ERROR): 
2025-01-28T13:28:30.488000Z TestFramework (ERROR): Hint: Call /work/test/functional/combine_logs.py '/work/abc-ci-builds/build-chronik-plugins/test/tmp/test_runner_₿₵_🏃_20250128_132510/chronik_electrum_basic_230' to consolidate all logs
2025-01-28T13:28:30.488000Z TestFramework (ERROR): 
2025-01-28T13:28:30.488000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
2025-01-28T13:28:30.489000Z TestFramework (ERROR): https://github.com/Bitcoin-ABC/bitcoin-abc/issues
2025-01-28T13:28:30.489000Z TestFramework (ERROR):

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

PiRK planned changes to this revision.Tue, Jan 28, 14:02

fix test_init_errors (now chronikelectrumbind must be explicitely specified)

This revision is now accepted and ready to land.Tue, Jan 28, 14:05