diff --git a/chia/plot_sync/exceptions.py b/chia/plot_sync/exceptions.py index dce1bd1fb484..cf69301a3bbd 100644 --- a/chia/plot_sync/exceptions.py +++ b/chia/plot_sync/exceptions.py @@ -4,7 +4,7 @@ from typing import Any from chia.plot_sync.util import ErrorCodes, State from chia.protocols.harvester_protocol import PlotSyncIdentifier -from chia.server.ws_connection import NodeType +from chia.server.outbound_message import NodeType from chia.util.ints import uint64 diff --git a/chia/plot_sync/receiver.py b/chia/plot_sync/receiver.py index f5eea1260a25..9661c06b53b9 100644 --- a/chia/plot_sync/receiver.py +++ b/chia/plot_sync/receiver.py @@ -27,7 +27,9 @@ from chia.protocols.harvester_protocol import ( PlotSyncResponse, PlotSyncStart, ) -from chia.server.ws_connection import ProtocolMessageTypes, WSChiaConnection, make_msg +from chia.protocols.protocol_message_types import ProtocolMessageTypes +from chia.server.outbound_message import make_msg +from chia.server.ws_connection import WSChiaConnection from chia.types.blockchain_format.sized_bytes import bytes32 from chia.util.ints import int16, uint32, uint64 from chia.util.misc import get_list_or_len diff --git a/chia/plot_sync/sender.py b/chia/plot_sync/sender.py index 0cf06c8ca9c2..f417d46a9b41 100644 --- a/chia/plot_sync/sender.py +++ b/chia/plot_sync/sender.py @@ -23,7 +23,9 @@ from chia.protocols.harvester_protocol import ( PlotSyncResponse, PlotSyncStart, ) -from chia.server.ws_connection import NodeType, ProtocolMessageTypes, WSChiaConnection, make_msg +from chia.protocols.protocol_message_types import ProtocolMessageTypes +from chia.server.outbound_message import NodeType, make_msg +from chia.server.ws_connection import WSChiaConnection from chia.util.generator_tools import list_to_batches from chia.util.ints import int16, uint32, uint64 diff --git a/chia/server/ws_connection.py b/chia/server/ws_connection.py index 56ba28db7f3f..932681c6a02e 100644 --- a/chia/server/ws_connection.py +++ b/chia/server/ws_connection.py @@ -5,9 +5,11 @@ import contextlib import logging import time import traceback -from typing import Any, Callable, Dict, List, Optional, Tuple +from typing import Any, Callable, Dict, List, Optional, Tuple, Union -from aiohttp import WSCloseCode, WSMessage, WSMsgType +from aiohttp import ClientSession, WSCloseCode, WSMessage, WSMsgType +from aiohttp.client import ClientWebSocketResponse +from aiohttp.web import WebSocketResponse from chia.cmds.init_funcs import chia_full_version_str from chia.protocols.protocol_message_types import ProtocolMessageTypes @@ -16,6 +18,7 @@ from chia.protocols.protocol_timing import INTERNAL_PROTOCOL_ERROR_BAN_SECONDS from chia.protocols.shared_protocol import Capability, Handshake from chia.server.outbound_message import Message, NodeType, make_msg from chia.server.rate_limits import RateLimiter +from chia.types.blockchain_format.sized_bytes import bytes32 from chia.types.peer_info import PeerInfo from chia.util.api_decorators import get_metadata from chia.util.errors import Err, ProtocolError @@ -23,10 +26,13 @@ from chia.util.ints import uint8, uint16 # Each message is prepended with LENGTH_BYTES bytes specifying the length from chia.util.network import class_for_type, is_localhost +from chia.util.streamable import Streamable # Max size 2^(8*4) which is around 4GiB LENGTH_BYTES: int = 4 +WebSocket = Union[WebSocketResponse, ClientWebSocketResponse] + class WSChiaConnection: """ @@ -38,23 +44,23 @@ class WSChiaConnection: def __init__( self, local_type: NodeType, - ws: Any, # Websocket + ws: WebSocket, server_port: int, log: logging.Logger, is_outbound: bool, is_feeler: bool, # Special type of connection, that disconnects after the handshake. - peer_host, - incoming_queue, - close_callback: Callable, - peer_id, + peer_host: str, + incoming_queue: asyncio.Queue[Tuple[Message, WSChiaConnection]], + close_callback: Optional[Callable[[WSChiaConnection, int], None]], + peer_id: bytes32, inbound_rate_limit_percent: int, outbound_rate_limit_percent: int, local_capabilities_for_handshake: List[Tuple[uint16, str]], - close_event=None, - session=None, - ): + close_event: Optional[asyncio.Event] = None, + session: Optional[ClientSession] = None, + ) -> None: # Local properties - self.ws: Any = ws + self.ws = ws self.local_type = local_type self.local_port = server_port self.local_capabilities_for_handshake = local_capabilities_for_handshake @@ -87,13 +93,13 @@ class WSChiaConnection: self.last_message_time: float = 0 # Messaging - self.incoming_queue: asyncio.Queue = incoming_queue - self.outgoing_queue: asyncio.Queue = asyncio.Queue() + self.incoming_queue = incoming_queue + self.outgoing_queue: asyncio.Queue[Message] = asyncio.Queue() - self.inbound_task: Optional[asyncio.Task] = None - self.outbound_task: Optional[asyncio.Task] = None + self.inbound_task: Optional[asyncio.Task[None]] = None + self.outbound_task: Optional[asyncio.Task[None]] = None self.active: bool = False # once handshake is successful this will be changed to True - self.close_event: asyncio.Event = close_event + self.close_event = close_event self.session = session self.close_callback = close_callback @@ -118,6 +124,7 @@ class WSChiaConnection: self.protocol_version = "" def _get_extra_info(self, name: str) -> Optional[Any]: + assert self.ws._writer is not None, "websocket's ._writer is None, was .prepare() called?" return self.ws._writer.transport.get_extra_info(name) async def perform_handshake( @@ -205,7 +212,12 @@ class WSChiaConnection: self.outbound_task = asyncio.create_task(self.outbound_handler()) self.inbound_task = asyncio.create_task(self.inbound_handler()) - async def close(self, ban_time: int = 0, ws_close_code: WSCloseCode = WSCloseCode.OK, error: Optional[Err] = None): + async def close( + self, + ban_time: int = 0, + ws_close_code: WSCloseCode = WSCloseCode.OK, + error: Optional[Err] = None, + ) -> None: """ Closes the connection, and finally calls the close_callback on the server, so the connection gets removed from the global list. @@ -236,24 +248,26 @@ class WSChiaConnection: error_stack = traceback.format_exc() self.log.warning(f"Exception closing socket: {error_stack}") try: - self.close_callback(self, ban_time) + if self.close_callback is not None: + self.close_callback(self, ban_time) except Exception: error_stack = traceback.format_exc() self.log.error(f"Error closing1: {error_stack}") raise try: - self.close_callback(self, ban_time) + if self.close_callback is not None: + self.close_callback(self, ban_time) except Exception: error_stack = traceback.format_exc() self.log.error(f"Error closing2: {error_stack}") - async def ban_peer_bad_protocol(self, log_err_msg: str): + async def ban_peer_bad_protocol(self, log_err_msg: str) -> None: """Ban peer for protocol violation""" ban_seconds = INTERNAL_PROTOCOL_ERROR_BAN_SECONDS self.log.error(f"Banning peer for {ban_seconds} seconds: {self.peer_host} {log_err_msg}") await self.close(ban_seconds, WSCloseCode.PROTOCOL_ERROR, Err.INVALID_PROTOCOL_MESSAGE) - def cancel_pending_requests(self): + def cancel_pending_requests(self) -> None: for message_id, event in self.pending_requests.items(): try: event.set() @@ -283,10 +297,10 @@ class WSChiaConnection: self.log.error(f"Exception: {e} with {self.peer_host}") self.log.error(f"Exception Stack: {error_stack}") - async def inbound_handler(self): + async def inbound_handler(self) -> None: try: while not self.closed: - message: Message = await self._read_one_message() + message = await self._read_one_message() if message is not None: if message.id in self.pending_requests: self.request_results[message.id] = message @@ -310,17 +324,19 @@ class WSChiaConnection: await self.outgoing_queue.put(message) return True - def __getattr__(self, attr_name: str): + def __getattr__(self, attr_name: str) -> Any: # TODO KWARGS - async def invoke(*args, **kwargs): + async def invoke(*args: Any, **kwargs: Any) -> Optional[Streamable]: timeout = 60 if "timeout" in kwargs: timeout = kwargs["timeout"] + if self.connection_type is None: + raise ValueError("handshake not done yet") attribute = getattr(class_for_type(self.connection_type), attr_name, None) if attribute is None: raise AttributeError(f"Node type {self.connection_type} does not have method {attr_name}") - request = Message(uint8(getattr(ProtocolMessageTypes, attr_name).value), None, args[0]) + request = Message(uint8(getattr(ProtocolMessageTypes, attr_name).value), None, bytes(args[0])) request_start_t = time.time() response = await self.send_request(request, timeout) self.log.debug( @@ -339,7 +355,9 @@ class WSChiaConnection: raise ProtocolError(Err.INVALID_PROTOCOL_MESSAGE, [error_message]) recv_method = getattr(class_for_type(self.local_type), recv_message_type.name) - return get_metadata(recv_method).message_class.from_bytes(response.data) + api_metadata = get_metadata(recv_method) + assert api_metadata is not None, f"ApiMetadata unavailable for {recv_method}" + return api_metadata.message_class.from_bytes(response.data) return invoke @@ -380,13 +398,13 @@ class WSChiaConnection: return result - async def send_messages(self, messages: List[Message]): + async def send_messages(self, messages: List[Message]) -> None: if self.closed: return None for message in messages: await self.outgoing_queue.put(message) - async def _wait_and_retry(self, msg: Message): + async def _wait_and_retry(self, msg: Message) -> None: try: await asyncio.sleep(1) await self.outgoing_queue.put(msg) @@ -394,7 +412,7 @@ class WSChiaConnection: self.log.debug(f"Exception {e} while waiting to retry sending rate limited message") return None - async def _send_message(self, message: Message): + async def _send_message(self, message: Message) -> None: encoded: bytes = bytes(message) size = len(encoded) assert len(encoded) < (2 ** (LENGTH_BYTES * 8)) @@ -507,7 +525,7 @@ class WSChiaConnection: def get_tls_version(self) -> str: ssl_obj = self._get_extra_info("ssl_object") if ssl_obj is not None: - return ssl_obj.version() + return str(ssl_obj.version()) else: return "unknown" diff --git a/mypy.ini b/mypy.ini index 5c6d3ba4e4b2..64a261a1784a 100644 --- a/mypy.ini +++ b/mypy.ini @@ -17,7 +17,7 @@ no_implicit_reexport = True strict_equality = True # list created by: venv/bin/mypy | sed -n 's/.py:.*//p' | sort | uniq | tr '/' '.' | tr '\n' ',' -[mypy-benchmarks.block_ref,benchmarks.block_store,benchmarks.coin_store,benchmarks.utils,build_scripts.installer-version,chia.cmds.configure,chia.cmds.db,chia.cmds.db_upgrade_func,chia.cmds.farm_funcs,chia.cmds.init,chia.cmds.init_funcs,chia.cmds.keys,chia.cmds.keys_funcs,chia.cmds.passphrase,chia.cmds.passphrase_funcs,chia.cmds.plotnft,chia.cmds.plotnft_funcs,chia.cmds.plots,chia.cmds.plotters,chia.cmds.show,chia.cmds.start_funcs,chia.cmds.wallet,chia.cmds.wallet_funcs,chia.daemon.keychain_server,chia.daemon.server,chia.farmer.farmer,chia.farmer.farmer_api,chia.full_node.weight_proof,chia.harvester.harvester,chia.harvester.harvester_api,chia.introducer.introducer,chia.introducer.introducer_api,chia.plotters.bladebit,chia.plotters.chiapos,chia.plotters.madmax,chia.plotters.plotters,chia.plotters.plotters_util,chia.plotting.check_plots,chia.plotting.create_plots,chia.plotting.manager,chia.plotting.util,chia.pools.pool_config,chia.pools.pool_puzzles,chia.pools.pool_wallet,chia.pools.pool_wallet_info,chia.protocols.pool_protocol,chia.rpc.crawler_rpc_api,chia.rpc.farmer_rpc_api,chia.rpc.farmer_rpc_client,chia.rpc.full_node_rpc_api,chia.rpc.full_node_rpc_client,chia.rpc.harvester_rpc_api,chia.rpc.harvester_rpc_client,chia.rpc.rpc_client,chia.rpc.timelord_rpc_api,chia.rpc.util,chia.rpc.wallet_rpc_api,chia.rpc.wallet_rpc_client,chia.seeder.crawler,chia.seeder.crawler_api,chia.seeder.crawl_store,chia.seeder.dns_server,chia.seeder.peer_record,chia.seeder.start_crawler,chia.server.address_manager,chia.server.address_manager_store,chia.server.connection_utils,chia.server.introducer_peers,chia.server.node_discovery,chia.server.peer_store_resolver,chia.server.rate_limits,chia.server.reconnect_task,chia.server.server,chia.server.ssl_context,chia.server.start_farmer,chia.server.start_full_node,chia.server.start_harvester,chia.server.start_introducer,chia.server.start_service,chia.server.start_timelord,chia.server.start_wallet,chia.server.ws_connection,chia.simulator.full_node_simulator,chia.simulator.start_simulator,chia.ssl.create_ssl,chia.timelord.iters_from_block,chia.timelord.timelord,chia.timelord.timelord_api,chia.timelord.timelord_launcher,chia.timelord.timelord_state,chia.types.announcement,chia.types.blockchain_format.classgroup,chia.types.blockchain_format.coin,chia.types.blockchain_format.program,chia.types.blockchain_format.proof_of_space,chia.types.blockchain_format.tree_hash,chia.types.blockchain_format.vdf,chia.types.full_block,chia.types.header_block,chia.types.mempool_item,chia.types.name_puzzle_condition,chia.types.peer_info,chia.types.spend_bundle,chia.types.transaction_queue_entry,chia.types.unfinished_block,chia.types.unfinished_header_block,chia.util.block_cache,chia.util.check_fork_next_block,chia.util.chia_logging,chia.util.config,chia.util.db_wrapper,chia.util.dump_keyring,chia.util.files,chia.util.hash,chia.util.json_util,chia.util.keychain,chia.util.keyring_wrapper,chia.util.log_exceptions,chia.util.make_test_constants,chia.util.merkle_set,chia.util.network,chia.util.partial_func,chia.util.pip_import,chia.util.profiler,chia.util.safe_cancel_task,chia.util.service_groups,chia.util.ssl_check,chia.util.validate_alert,chia.wallet.block_record,chia.wallet.chialisp,chia.wallet.did_wallet.did_wallet,chia.wallet.did_wallet.did_wallet_puzzles,chia.wallet.key_val_store,chia.wallet.lineage_proof,chia.wallet.payment,chia.wallet.puzzles.load_clvm,chia.wallet.puzzles.p2_conditions,chia.wallet.puzzles.p2_delegated_conditions,chia.wallet.puzzles.p2_delegated_puzzle,chia.wallet.puzzles.p2_delegated_puzzle_or_hidden_puzzle,chia.wallet.puzzles.p2_m_of_n_delegate_direct,chia.wallet.puzzles.p2_puzzle_hash,chia.wallet.puzzles.prefarm.spend_prefarm,chia.wallet.puzzles.puzzle_utils,chia.wallet.puzzles.singleton_top_layer,chia.wallet.puzzles.tails,chia.wallet.secret_key_store,chia.wallet.settings.user_settings,chia.wallet.trade_record,chia.wallet.trading.trade_store,chia.wallet.transaction_record,chia.wallet.util.debug_spend_bundle,chia.wallet.util.new_peak_queue,chia.wallet.util.wallet_sync_utils,chia.wallet.wallet,chia.wallet.wallet_blockchain,chia.wallet.wallet_coin_store,chia.wallet.wallet_interested_store,chia.wallet.wallet_node,chia.wallet.wallet_node_api,chia.wallet.wallet_pool_store,chia.wallet.wallet_puzzle_store,chia.wallet.wallet_state_manager,chia.wallet.wallet_sync_store,chia.wallet.wallet_transaction_store,chia.wallet.wallet_user_store,chia.wallet.wallet_weight_proof_handler,installhelper,tests.blockchain.blockchain_test_utils,tests.blockchain.test_blockchain,tests.blockchain.test_blockchain_transactions,chia.simulator.block_tools,tests.build-init-files,tests.build-workflows,tests.clvm.coin_store,tests.clvm.test_chialisp_deserialization,tests.clvm.test_clvm_compilation,tests.clvm.test_program,tests.clvm.test_puzzle_compression,tests.clvm.test_puzzles,tests.clvm.test_serialized_program,tests.clvm.test_singletons,tests.clvm.test_spend_sim,tests.conftest,tests.connection_utils,tests.core.cmds.test_keys,tests.core.consensus.test_pot_iterations,tests.core.custom_types.test_coin,tests.core.custom_types.test_proof_of_space,tests.core.custom_types.test_spend_bundle,tests.core.daemon.test_daemon,tests.core.full_node.full_sync.test_full_sync,tests.core.full_node.stores.test_block_store,tests.core.full_node.stores.test_coin_store,tests.core.full_node.stores.test_full_node_store,tests.core.full_node.stores.test_hint_store,tests.core.full_node.stores.test_sync_store,tests.core.full_node.test_address_manager,tests.core.full_node.test_block_height_map,tests.core.full_node.test_conditions,tests.core.full_node.test_full_node,tests.core.full_node.test_mempool,tests.core.full_node.test_mempool_performance,tests.core.full_node.test_node_load,tests.core.full_node.test_peer_store_resolver,tests.core.full_node.test_performance,tests.core.full_node.test_transactions,tests.core.make_block_generator,tests.core.node_height,tests.core.server.test_dos,tests.core.server.test_rate_limits,tests.core.ssl.test_ssl,tests.core.test_cost_calculation,tests.core.test_crawler_rpc,tests.core.test_daemon_rpc,tests.core.test_db_conversion,tests.core.test_db_validation,tests.core.test_farmer_harvester_rpc,tests.core.test_filter,tests.core.test_full_node_rpc,tests.core.test_merkle_set,tests.core.test_setproctitle,tests.core.util.test_cached_bls,tests.core.util.test_config,tests.core.util.test_file_keyring_synchronization,tests.core.util.test_files,tests.core.util.test_keychain,tests.core.util.test_keyring_wrapper,tests.core.util.test_lru_cache,tests.core.util.test_significant_bits,tests.farmer_harvester.test_farmer_harvester,tests.generator.test_compression,tests.generator.test_generator_types,tests.generator.test_list_to_batches,tests.generator.test_rom,tests.generator.test_scan,tests.plotting.test_plot_manager,tests.pools.test_pool_cmdline,tests.pools.test_pool_config,tests.pools.test_pool_puzzles_lifecycle,tests.pools.test_pool_rpc,tests.pools.test_wallet_pool_store,tests.setup_nodes,tests.setup_services,tests.simulation.test_simulation,chia.simulator.time_out_assert,tests.tools.test_full_sync,tests.tools.test_run_block,tests.util.alert_server,tests.util.benchmark_cost,tests.util.blockchain,tests.util.build_network_protocol_files,tests.util.db_connection,tests.util.generator_tools_testing,tests.util.keyring,tests.util.key_tool,tests.util.test_full_block_utils,tests.util.test_lock_queue,tests.util.test_misc,tests.util.test_network,tests.util.test_network_protocol_files,tests.wallet.cat_wallet.test_cat_lifecycle,tests.wallet.cat_wallet.test_cat_wallet,tests.wallet.cat_wallet.test_offer_lifecycle,tests.wallet.cat_wallet.test_trades,tests.wallet.did_wallet.test_did,tests.wallet.did_wallet.test_did_rpc,tests.wallet.did_wallet.test_nft_rpc,tests.wallet.did_wallet.test_nft_wallet,tests.wallet.rpc.test_wallet_rpc,tests.wallet.simple_sync.test_simple_sync_protocol,tests.wallet.sync.test_wallet_sync,tests.wallet.test_bech32m,tests.wallet.test_chialisp,tests.wallet.test_puzzle_store,tests.wallet.test_singleton,tests.wallet.test_singleton_lifecycle,tests.wallet.test_singleton_lifecycle_fast,tests.wallet.test_taproot,tests.wallet.test_wallet_blockchain,tests.wallet.test_wallet_interested_store,tests.wallet.test_wallet_key_val_store,tests.wallet.test_wallet_user_store,chia.simulator.wallet_tools,tests.weight_proof.test_weight_proof,tools.analyze-chain,tools.run_block,tools.test_full_sync,tests.wallet.nft_wallet.test_nft_wallet,chia.wallet.nft_wallet.nft_puzzles,tests.wallet.nft_wallet.test_nft_puzzles] +[mypy-benchmarks.block_ref,benchmarks.block_store,benchmarks.coin_store,benchmarks.utils,build_scripts.installer-version,chia.cmds.configure,chia.cmds.db,chia.cmds.db_upgrade_func,chia.cmds.farm_funcs,chia.cmds.init,chia.cmds.init_funcs,chia.cmds.keys,chia.cmds.keys_funcs,chia.cmds.passphrase,chia.cmds.passphrase_funcs,chia.cmds.plotnft,chia.cmds.plotnft_funcs,chia.cmds.plots,chia.cmds.plotters,chia.cmds.show,chia.cmds.start_funcs,chia.cmds.wallet,chia.cmds.wallet_funcs,chia.daemon.keychain_server,chia.daemon.server,chia.farmer.farmer,chia.farmer.farmer_api,chia.full_node.weight_proof,chia.harvester.harvester,chia.harvester.harvester_api,chia.introducer.introducer,chia.introducer.introducer_api,chia.plotters.bladebit,chia.plotters.chiapos,chia.plotters.madmax,chia.plotters.plotters,chia.plotters.plotters_util,chia.plotting.check_plots,chia.plotting.create_plots,chia.plotting.manager,chia.plotting.util,chia.pools.pool_config,chia.pools.pool_puzzles,chia.pools.pool_wallet,chia.pools.pool_wallet_info,chia.protocols.pool_protocol,chia.rpc.crawler_rpc_api,chia.rpc.farmer_rpc_api,chia.rpc.farmer_rpc_client,chia.rpc.full_node_rpc_api,chia.rpc.full_node_rpc_client,chia.rpc.harvester_rpc_api,chia.rpc.harvester_rpc_client,chia.rpc.rpc_client,chia.rpc.timelord_rpc_api,chia.rpc.util,chia.rpc.wallet_rpc_api,chia.rpc.wallet_rpc_client,chia.seeder.crawler,chia.seeder.crawler_api,chia.seeder.crawl_store,chia.seeder.dns_server,chia.seeder.peer_record,chia.seeder.start_crawler,chia.server.address_manager,chia.server.address_manager_store,chia.server.connection_utils,chia.server.introducer_peers,chia.server.node_discovery,chia.server.peer_store_resolver,chia.server.rate_limits,chia.server.reconnect_task,chia.server.server,chia.server.ssl_context,chia.server.start_farmer,chia.server.start_full_node,chia.server.start_harvester,chia.server.start_introducer,chia.server.start_service,chia.server.start_timelord,chia.server.start_wallet,chia.simulator.full_node_simulator,chia.simulator.start_simulator,chia.ssl.create_ssl,chia.timelord.iters_from_block,chia.timelord.timelord,chia.timelord.timelord_api,chia.timelord.timelord_launcher,chia.timelord.timelord_state,chia.types.announcement,chia.types.blockchain_format.classgroup,chia.types.blockchain_format.coin,chia.types.blockchain_format.program,chia.types.blockchain_format.proof_of_space,chia.types.blockchain_format.tree_hash,chia.types.blockchain_format.vdf,chia.types.full_block,chia.types.header_block,chia.types.mempool_item,chia.types.name_puzzle_condition,chia.types.peer_info,chia.types.spend_bundle,chia.types.transaction_queue_entry,chia.types.unfinished_block,chia.types.unfinished_header_block,chia.util.block_cache,chia.util.check_fork_next_block,chia.util.chia_logging,chia.util.config,chia.util.db_wrapper,chia.util.dump_keyring,chia.util.files,chia.util.hash,chia.util.json_util,chia.util.keychain,chia.util.keyring_wrapper,chia.util.log_exceptions,chia.util.make_test_constants,chia.util.merkle_set,chia.util.network,chia.util.partial_func,chia.util.pip_import,chia.util.profiler,chia.util.safe_cancel_task,chia.util.service_groups,chia.util.ssl_check,chia.util.validate_alert,chia.wallet.block_record,chia.wallet.chialisp,chia.wallet.did_wallet.did_wallet,chia.wallet.did_wallet.did_wallet_puzzles,chia.wallet.key_val_store,chia.wallet.lineage_proof,chia.wallet.payment,chia.wallet.puzzles.load_clvm,chia.wallet.puzzles.p2_conditions,chia.wallet.puzzles.p2_delegated_conditions,chia.wallet.puzzles.p2_delegated_puzzle,chia.wallet.puzzles.p2_delegated_puzzle_or_hidden_puzzle,chia.wallet.puzzles.p2_m_of_n_delegate_direct,chia.wallet.puzzles.p2_puzzle_hash,chia.wallet.puzzles.prefarm.spend_prefarm,chia.wallet.puzzles.puzzle_utils,chia.wallet.puzzles.singleton_top_layer,chia.wallet.puzzles.tails,chia.wallet.secret_key_store,chia.wallet.settings.user_settings,chia.wallet.trade_record,chia.wallet.trading.trade_store,chia.wallet.transaction_record,chia.wallet.util.debug_spend_bundle,chia.wallet.util.new_peak_queue,chia.wallet.util.wallet_sync_utils,chia.wallet.wallet,chia.wallet.wallet_blockchain,chia.wallet.wallet_coin_store,chia.wallet.wallet_interested_store,chia.wallet.wallet_node,chia.wallet.wallet_node_api,chia.wallet.wallet_pool_store,chia.wallet.wallet_puzzle_store,chia.wallet.wallet_state_manager,chia.wallet.wallet_sync_store,chia.wallet.wallet_transaction_store,chia.wallet.wallet_user_store,chia.wallet.wallet_weight_proof_handler,installhelper,tests.blockchain.blockchain_test_utils,tests.blockchain.test_blockchain,tests.blockchain.test_blockchain_transactions,chia.simulator.block_tools,tests.build-init-files,tests.build-workflows,tests.clvm.coin_store,tests.clvm.test_chialisp_deserialization,tests.clvm.test_clvm_compilation,tests.clvm.test_program,tests.clvm.test_puzzle_compression,tests.clvm.test_puzzles,tests.clvm.test_serialized_program,tests.clvm.test_singletons,tests.clvm.test_spend_sim,tests.conftest,tests.connection_utils,tests.core.cmds.test_keys,tests.core.consensus.test_pot_iterations,tests.core.custom_types.test_coin,tests.core.custom_types.test_proof_of_space,tests.core.custom_types.test_spend_bundle,tests.core.daemon.test_daemon,tests.core.full_node.full_sync.test_full_sync,tests.core.full_node.stores.test_block_store,tests.core.full_node.stores.test_coin_store,tests.core.full_node.stores.test_full_node_store,tests.core.full_node.stores.test_hint_store,tests.core.full_node.stores.test_sync_store,tests.core.full_node.test_address_manager,tests.core.full_node.test_block_height_map,tests.core.full_node.test_conditions,tests.core.full_node.test_full_node,tests.core.full_node.test_mempool,tests.core.full_node.test_mempool_performance,tests.core.full_node.test_node_load,tests.core.full_node.test_peer_store_resolver,tests.core.full_node.test_performance,tests.core.full_node.test_transactions,tests.core.make_block_generator,tests.core.node_height,tests.core.server.test_dos,tests.core.server.test_rate_limits,tests.core.ssl.test_ssl,tests.core.test_cost_calculation,tests.core.test_crawler_rpc,tests.core.test_daemon_rpc,tests.core.test_db_conversion,tests.core.test_db_validation,tests.core.test_farmer_harvester_rpc,tests.core.test_filter,tests.core.test_full_node_rpc,tests.core.test_merkle_set,tests.core.test_setproctitle,tests.core.util.test_cached_bls,tests.core.util.test_config,tests.core.util.test_file_keyring_synchronization,tests.core.util.test_files,tests.core.util.test_keychain,tests.core.util.test_keyring_wrapper,tests.core.util.test_lru_cache,tests.core.util.test_significant_bits,tests.farmer_harvester.test_farmer_harvester,tests.generator.test_compression,tests.generator.test_generator_types,tests.generator.test_list_to_batches,tests.generator.test_rom,tests.generator.test_scan,tests.plotting.test_plot_manager,tests.pools.test_pool_cmdline,tests.pools.test_pool_config,tests.pools.test_pool_puzzles_lifecycle,tests.pools.test_pool_rpc,tests.pools.test_wallet_pool_store,tests.setup_nodes,tests.setup_services,tests.simulation.test_simulation,chia.simulator.time_out_assert,tests.tools.test_full_sync,tests.tools.test_run_block,tests.util.alert_server,tests.util.benchmark_cost,tests.util.blockchain,tests.util.build_network_protocol_files,tests.util.db_connection,tests.util.generator_tools_testing,tests.util.keyring,tests.util.key_tool,tests.util.test_full_block_utils,tests.util.test_lock_queue,tests.util.test_misc,tests.util.test_network,tests.util.test_network_protocol_files,tests.wallet.cat_wallet.test_cat_lifecycle,tests.wallet.cat_wallet.test_cat_wallet,tests.wallet.cat_wallet.test_offer_lifecycle,tests.wallet.cat_wallet.test_trades,tests.wallet.did_wallet.test_did,tests.wallet.did_wallet.test_did_rpc,tests.wallet.did_wallet.test_nft_rpc,tests.wallet.did_wallet.test_nft_wallet,tests.wallet.rpc.test_wallet_rpc,tests.wallet.simple_sync.test_simple_sync_protocol,tests.wallet.sync.test_wallet_sync,tests.wallet.test_bech32m,tests.wallet.test_chialisp,tests.wallet.test_puzzle_store,tests.wallet.test_singleton,tests.wallet.test_singleton_lifecycle,tests.wallet.test_singleton_lifecycle_fast,tests.wallet.test_taproot,tests.wallet.test_wallet_blockchain,tests.wallet.test_wallet_interested_store,tests.wallet.test_wallet_key_val_store,tests.wallet.test_wallet_user_store,chia.simulator.wallet_tools,tests.weight_proof.test_weight_proof,tools.analyze-chain,tools.run_block,tools.test_full_sync,tests.wallet.nft_wallet.test_nft_wallet,chia.wallet.nft_wallet.nft_puzzles,tests.wallet.nft_wallet.test_nft_puzzles] disable_error_code = annotation-unchecked disallow_any_generics = False disallow_subclassing_any = False diff --git a/tests/connection_utils.py b/tests/connection_utils.py index f09933d81e38..3a83df50101f 100644 --- a/tests/connection_utils.py +++ b/tests/connection_utils.py @@ -63,7 +63,7 @@ async def add_dummy_connection( False, self_hostname, incoming_queue, - lambda x, y: x, + None, peer_id, 100, 30, diff --git a/tests/core/ssl/test_ssl.py b/tests/core/ssl/test_ssl.py index 1ca4273a4424..f0e888489345 100644 --- a/tests/core/ssl/test_ssl.py +++ b/tests/core/ssl/test_ssl.py @@ -9,6 +9,7 @@ from chia.server.server import ChiaServer, ssl_context_for_client from chia.server.ssl_context import chia_ssl_ca_paths, private_ssl_ca_paths from chia.server.ws_connection import WSChiaConnection from chia.ssl.create_ssl import generate_ca_signed_cert +from chia.types.blockchain_format.sized_bytes import bytes32 from chia.types.peer_info import PeerInfo from chia.util.ints import uint16 @@ -29,8 +30,8 @@ async def establish_connection(server: ChiaServer, self_hostname: str, ssl_conte False, self_hostname, incoming_queue, - lambda x, y: x, None, + bytes32(b"\x00" * 32), 100, 30, local_capabilities_for_handshake=capabilities, diff --git a/tests/plot_sync/test_plot_sync.py b/tests/plot_sync/test_plot_sync.py index 05e8c755e315..0c854bf70a66 100644 --- a/tests/plot_sync/test_plot_sync.py +++ b/tests/plot_sync/test_plot_sync.py @@ -20,8 +20,8 @@ from chia.plot_sync.util import Constants, State from chia.plotting.manager import PlotManager from chia.plotting.util import add_plot_directory, remove_plot_directory from chia.protocols.harvester_protocol import Plot +from chia.protocols.protocol_message_types import ProtocolMessageTypes from chia.server.start_service import Service -from chia.server.ws_connection import ProtocolMessageTypes from chia.simulator.block_tools import BlockTools from chia.simulator.time_out_assert import time_out_assert from chia.types.blockchain_format.sized_bytes import bytes32 diff --git a/tests/plot_sync/test_receiver.py b/tests/plot_sync/test_receiver.py index b29114652a73..9af0fd06228f 100644 --- a/tests/plot_sync/test_receiver.py +++ b/tests/plot_sync/test_receiver.py @@ -22,7 +22,7 @@ from chia.protocols.harvester_protocol import ( PlotSyncResponse, PlotSyncStart, ) -from chia.server.ws_connection import NodeType +from chia.server.outbound_message import NodeType from chia.types.blockchain_format.sized_bytes import bytes32 from chia.util.ints import uint8, uint32, uint64 from chia.util.misc import get_list_or_len diff --git a/tests/plot_sync/test_sender.py b/tests/plot_sync/test_sender.py index a8c1fb3468aa..f71cb62ef7bb 100644 --- a/tests/plot_sync/test_sender.py +++ b/tests/plot_sync/test_sender.py @@ -6,7 +6,8 @@ from chia.plot_sync.exceptions import AlreadyStartedError, InvalidConnectionType from chia.plot_sync.sender import ExpectedResponse, Sender from chia.plot_sync.util import Constants from chia.protocols.harvester_protocol import PlotSyncIdentifier, PlotSyncResponse -from chia.server.ws_connection import NodeType, ProtocolMessageTypes +from chia.protocols.protocol_message_types import ProtocolMessageTypes +from chia.server.outbound_message import NodeType from chia.simulator.block_tools import BlockTools from chia.util.ints import int16, uint64 from tests.plot_sync.util import get_dummy_connection, plot_sync_identifier diff --git a/tests/plot_sync/test_sync_simulated.py b/tests/plot_sync/test_sync_simulated.py index 581d3ea625f4..4e67fec95002 100644 --- a/tests/plot_sync/test_sync_simulated.py +++ b/tests/plot_sync/test_sync_simulated.py @@ -21,8 +21,10 @@ from chia.plot_sync.util import Constants from chia.plotting.manager import PlotManager from chia.plotting.util import PlotInfo from chia.protocols.harvester_protocol import PlotSyncError, PlotSyncResponse +from chia.protocols.protocol_message_types import ProtocolMessageTypes +from chia.server.outbound_message import make_msg from chia.server.start_service import Service -from chia.server.ws_connection import ProtocolMessageTypes, WSChiaConnection, make_msg +from chia.server.ws_connection import WSChiaConnection from chia.simulator.block_tools import BlockTools from chia.simulator.time_out_assert import time_out_assert from chia.types.blockchain_format.sized_bytes import bytes32 diff --git a/tests/plot_sync/util.py b/tests/plot_sync/util.py index c56de2b5c1ad..0eafba08b373 100644 --- a/tests/plot_sync/util.py +++ b/tests/plot_sync/util.py @@ -9,8 +9,8 @@ from chia.farmer.farmer import Farmer from chia.harvester.harvester import Harvester from chia.plot_sync.sender import Sender from chia.protocols.harvester_protocol import PlotSyncIdentifier +from chia.server.outbound_message import Message, NodeType from chia.server.start_service import Service -from chia.server.ws_connection import Message, NodeType from chia.simulator.time_out_assert import time_out_assert from chia.types.blockchain_format.sized_bytes import bytes32 from chia.types.peer_info import PeerInfo