|
30 | 30 | plot_matches_filter,
|
31 | 31 | )
|
32 | 32 | from chia.farmer.farmer_rpc_client import FarmerRpcClient
|
| 33 | +from chia.farmer.farmer_service import FarmerService |
| 34 | +from chia.harvester.harvester_service import HarvesterService |
33 | 35 | from chia.plot_sync.receiver import Receiver, get_list_or_len
|
34 | 36 | from chia.plotting.util import add_plot_directory
|
35 | 37 | from chia.protocols import farmer_protocol
|
36 | 38 | from chia.protocols.harvester_protocol import Plot
|
37 |
| -from chia.simulator.block_tools import get_plot_dir |
| 39 | +from chia.rpc.rpc_client import ResponseFailureError |
| 40 | +from chia.simulator.block_tools import BlockTools, get_plot_dir |
| 41 | +from chia.solver.solver_service import SolverService |
38 | 42 | from chia.util.bech32m import decode_puzzle_hash, encode_puzzle_hash
|
39 | 43 | from chia.util.config import load_config, lock_and_load_config, save_config
|
40 | 44 | from chia.util.hash import std_hash
|
@@ -503,3 +507,32 @@ async def assert_added(path: Path) -> None:
|
503 | 507 | added_directories = await harvester_rpc_client.get_plot_directories()
|
504 | 508 | assert str(test_path) in added_directories
|
505 | 509 | assert str(test_path_other) in added_directories
|
| 510 | + |
| 511 | + |
| 512 | +@pytest.mark.anyio |
| 513 | +async def test_farmer_connect_to_solver( |
| 514 | + farmer_one_harvester_solver: tuple[list[HarvesterService], FarmerService, SolverService, BlockTools], |
| 515 | +) -> None: |
| 516 | + _, farmer_service, solver_service, bt = farmer_one_harvester_solver |
| 517 | + assert farmer_service.rpc_server is not None |
| 518 | + farmer_rpc_client = await FarmerRpcClient.create( |
| 519 | + bt.config["self_hostname"], |
| 520 | + farmer_service.rpc_server.listen_port, |
| 521 | + farmer_service.root_path, |
| 522 | + farmer_service.config, |
| 523 | + ) |
| 524 | + |
| 525 | + try: |
| 526 | + # Test successful connection to existing solver |
| 527 | + solver_host = bt.config["self_hostname"] |
| 528 | + solver_port = solver_service._server.get_port() |
| 529 | + result = await farmer_rpc_client.connect_to_solver(solver_host, solver_port) |
| 530 | + assert result["success"] is True |
| 531 | + |
| 532 | + # Test connection failure to non-existent solver |
| 533 | + with pytest.raises(ResponseFailureError) as exc_info: |
| 534 | + await farmer_rpc_client.connect_to_solver("localhost", 65000) |
| 535 | + assert "Could not connect to solver" in exc_info.value.response["error"] |
| 536 | + finally: |
| 537 | + farmer_rpc_client.close() |
| 538 | + await farmer_rpc_client.await_closed() |
0 commit comments