diff --git a/test/functional/chronik_avalanche.py b/test/functional/chronik_avalanche.py --- a/test/functional/chronik_avalanche.py +++ b/test/functional/chronik_avalanche.py @@ -10,7 +10,6 @@ SCRIPTSIG_OP_TRUE, ) from test_framework.avatools import can_find_inv_in_poll, get_ava_p2p_interface -from test_framework.chronik.client import ChronikClient from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut from test_framework.script import OP_RETURN, CScript from test_framework.test_framework import BitcoinTestFramework @@ -40,6 +39,8 @@ self.skip_if_no_chronik() def run_test(self): + from test_framework.chronik.client import ChronikClient + node = self.nodes[0] chronik = ChronikClient('127.0.0.1', node.chronik_port) diff --git a/test/functional/chronik_block.py b/test/functional/chronik_block.py --- a/test/functional/chronik_block.py +++ b/test/functional/chronik_block.py @@ -8,7 +8,6 @@ from test_framework.address import ADDRESS_ECREG_P2SH_OP_TRUE, ADDRESS_ECREG_UNSPENDABLE from test_framework.blocktools import GENESIS_BLOCK_HASH, TIME_GENESIS_BLOCK -from test_framework.chronik.client import ChronikClient from test_framework.test_framework import BitcoinTestFramework from test_framework.util import assert_equal @@ -23,7 +22,7 @@ self.skip_if_no_chronik() def run_test(self): - import chronik_pb2 as pb + from test_framework.chronik.client import ChronikClient, pb node = self.nodes[0] chronik = ChronikClient('127.0.0.1', node.chronik_port) diff --git a/test/functional/chronik_resync.py b/test/functional/chronik_resync.py --- a/test/functional/chronik_resync.py +++ b/test/functional/chronik_resync.py @@ -8,7 +8,6 @@ from test_framework.address import ADDRESS_ECREG_P2SH_OP_TRUE, ADDRESS_ECREG_UNSPENDABLE from test_framework.blocktools import GENESIS_BLOCK_HASH -from test_framework.chronik.client import ChronikClient from test_framework.test_framework import BitcoinTestFramework from test_framework.util import assert_equal, get_datadir_path @@ -22,6 +21,7 @@ self.skip_if_no_chronik() def run_test(self): + from test_framework.chronik.client import ChronikClient node = self.nodes[0] chronik = ChronikClient('127.0.0.1', node.chronik_port) diff --git a/test/functional/chronik_script_confirmed_txs.py b/test/functional/chronik_script_confirmed_txs.py --- a/test/functional/chronik_script_confirmed_txs.py +++ b/test/functional/chronik_script_confirmed_txs.py @@ -12,8 +12,6 @@ SCRIPTSIG_OP_TRUE, ) from test_framework.blocktools import GENESIS_CB_PK, create_block, create_coinbase -from test_framework.chronik.client import ChronikClient -from test_framework.chronik.test_data import genesis_cb_tx from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut from test_framework.p2p import P2PDataStore from test_framework.test_framework import BitcoinTestFramework @@ -31,7 +29,8 @@ self.skip_if_no_chronik() def run_test(self): - import chronik_pb2 as pb + from test_framework.chronik.client import ChronikClient, pb + from test_framework.chronik.test_data import genesis_cb_tx node = self.nodes[0] chronik = ChronikClient('127.0.0.1', node.chronik_port) diff --git a/test/functional/chronik_script_history.py b/test/functional/chronik_script_history.py --- a/test/functional/chronik_script_history.py +++ b/test/functional/chronik_script_history.py @@ -17,8 +17,6 @@ create_coinbase, make_conform_to_ctor, ) -from test_framework.chronik.client import ChronikClient -from test_framework.chronik.test_data import genesis_cb_tx from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut from test_framework.p2p import P2PDataStore from test_framework.test_framework import BitcoinTestFramework @@ -36,7 +34,8 @@ self.skip_if_no_chronik() def run_test(self): - import chronik_pb2 as pb + from test_framework.chronik.client import ChronikClient, pb + from test_framework.chronik.test_data import genesis_cb_tx node = self.nodes[0] chronik = ChronikClient('127.0.0.1', node.chronik_port, timeout=4) diff --git a/test/functional/chronik_script_unconfirmed_txs.py b/test/functional/chronik_script_unconfirmed_txs.py --- a/test/functional/chronik_script_unconfirmed_txs.py +++ b/test/functional/chronik_script_unconfirmed_txs.py @@ -17,7 +17,6 @@ create_coinbase, make_conform_to_ctor, ) -from test_framework.chronik.client import ChronikClient from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut from test_framework.p2p import P2PDataStore from test_framework.script import OP_RETURN, CScript @@ -35,7 +34,7 @@ self.skip_if_no_chronik() def run_test(self): - import chronik_pb2 as pb + from test_framework.chronik.client import ChronikClient, pb node = self.nodes[0] chronik = ChronikClient('127.0.0.1', node.chronik_port) diff --git a/test/functional/chronik_serve.py b/test/functional/chronik_serve.py --- a/test/functional/chronik_serve.py +++ b/test/functional/chronik_serve.py @@ -3,7 +3,6 @@ # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -from test_framework.chronik.client import ChronikClient from test_framework.netutil import test_ipv6_local from test_framework.test_framework import BitcoinTestFramework from test_framework.util import assert_equal @@ -19,6 +18,8 @@ self.skip_if_no_chronik() def run_test(self): + from test_framework.chronik.client import ChronikClient + def test_host(ip, port): chronik = ChronikClient(ip, port) response = chronik._request_get('/path/does/not/exist', pb_type=None) diff --git a/test/functional/chronik_tx.py b/test/functional/chronik_tx.py --- a/test/functional/chronik_tx.py +++ b/test/functional/chronik_tx.py @@ -13,8 +13,6 @@ SCRIPTSIG_OP_TRUE, ) from test_framework.blocktools import GENESIS_CB_TXID, create_block, create_coinbase -from test_framework.chronik.client import ChronikClient -from test_framework.chronik.test_data import genesis_cb_tx from test_framework.messages import COutPoint, CTransaction, CTxIn, CTxOut from test_framework.p2p import P2PDataStore from test_framework.script import OP_EQUAL, OP_HASH160, CScript, hash160 @@ -32,7 +30,8 @@ self.skip_if_no_chronik() def run_test(self): - import chronik_pb2 as pb + from test_framework.chronik.client import ChronikClient, pb + from test_framework.chronik.test_data import genesis_cb_tx node = self.nodes[0] chronik = ChronikClient('127.0.0.1', node.chronik_port) diff --git a/test/functional/chronik_ws.py b/test/functional/chronik_ws.py --- a/test/functional/chronik_ws.py +++ b/test/functional/chronik_ws.py @@ -5,7 +5,6 @@ """Test whether Chronik sends WebSocket messages correctly.""" from test_framework.avatools import can_find_inv_in_poll, get_ava_p2p_interface -from test_framework.chronik.client import ChronikClient from test_framework.test_framework import BitcoinTestFramework from test_framework.util import assert_equal @@ -33,7 +32,7 @@ self.skip_if_no_chronik() def run_test(self): - import chronik_pb2 as pb + from test_framework.chronik.client import ChronikClient, pb node = self.nodes[0] chronik = ChronikClient('127.0.0.1', node.chronik_port) diff --git a/test/functional/test_framework/chronik/client.py b/test/functional/test_framework/chronik/client.py --- a/test/functional/test_framework/chronik/client.py +++ b/test/functional/test_framework/chronik/client.py @@ -6,17 +6,13 @@ import http.client from typing import Union +import chronik_pb2 as pb import websocket # Timespan when HTTP requests to Chronik time out DEFAULT_TIMEOUT = 30 -def _pb(): - import chronik_pb2 - return chronik_pb2 - - class UnexpectedContentType(Exception): pass @@ -66,18 +62,18 @@ query = self._query_params(page, page_size) return self.client._request_get( f'/script/{self.script_type}/{self.script_payload}/confirmed-txs{query}', - _pb().TxHistoryPage) + pb.TxHistoryPage) def history(self, page=None, page_size=None): query = self._query_params(page, page_size) return self.client._request_get( f'/script/{self.script_type}/{self.script_payload}/history{query}', - _pb().TxHistoryPage) + pb.TxHistoryPage) def unconfirmed_txs(self): return self.client._request_get( f'/script/{self.script_type}/{self.script_payload}/unconfirmed-txs', - _pb().TxHistoryPage) + pb.TxHistoryPage) class ChronikWs: @@ -86,7 +82,7 @@ def recv(self): data = self.ws.recv() - ws_msg = _pb().WsMsg() + ws_msg = pb.WsMsg() ws_msg.ParseFromString(data) return ws_msg @@ -116,7 +112,7 @@ ) if response.status != 200: - proto_error = _pb().Error() + proto_error = pb.Error() proto_error.ParseFromString(body) return ChronikResponse(response.status, error_proto=proto_error) @@ -125,10 +121,10 @@ return ChronikResponse(response.status, ok_proto=ok_proto) def block(self, hash_or_height: Union[str, int]) -> ChronikResponse: - return self._request_get(f'/block/{hash_or_height}', _pb().Block) + return self._request_get(f'/block/{hash_or_height}', pb.Block) def tx(self, txid: str) -> ChronikResponse: - return self._request_get(f'/tx/{txid}', _pb().Tx) + return self._request_get(f'/tx/{txid}', pb.Tx) def script(self, script_type: str, script_payload: str) -> ChronikScriptClient: return ChronikScriptClient(self, script_type, script_payload) diff --git a/test/functional/test_framework/chronik/test_data.py b/test/functional/test_framework/chronik/test_data.py --- a/test/functional/test_framework/chronik/test_data.py +++ b/test/functional/test_framework/chronik/test_data.py @@ -10,10 +10,10 @@ GENESIS_CB_TXID, TIME_GENESIS_BLOCK, ) +from test_framework.chronik.client import pb def genesis_cb_tx(): - import chronik_pb2 as pb return pb.Tx( txid=bytes.fromhex(GENESIS_CB_TXID)[::-1], version=1,