Skip to content

Commit 5c15e29

Browse files
committed
fix test
1 parent 0299439 commit 5c15e29

File tree

3 files changed

+49
-15
lines changed

3 files changed

+49
-15
lines changed

chia/_tests/conftest.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1307,10 +1307,13 @@ async def farmer_harvester_2_simulators_zero_bits_plot_filter(
13071307
)
13081308
for index in range(len(bts))
13091309
]
1310-
1311-
[harvester_service], farmer_service, _ = await async_exit_stack.enter_async_context(
1312-
setup_farmer_solver_multi_harvester(bt, 1, tmp_path, bt.constants, start_services=True)
1313-
)
1310+
async with setup_solver(tmp_path / "solver", bt, bt.constants) as solver_service:
1311+
solver_peer = UnresolvedPeerInfo(bt.config["self_hostname"], solver_service._server.get_port())
1312+
[harvester_service], farmer_service, _ = await async_exit_stack.enter_async_context(
1313+
setup_farmer_solver_multi_harvester(
1314+
bt, 1, tmp_path, bt.constants, start_services=True, solver_peer=solver_peer
1315+
)
1316+
)
13141317

13151318
yield farmer_service, harvester_service, simulators[0], simulators[1], bt
13161319

chia/_tests/core/test_farmer_harvester_rpc.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,15 @@
3030
plot_matches_filter,
3131
)
3232
from chia.farmer.farmer_rpc_client import FarmerRpcClient
33+
from chia.farmer.farmer_service import FarmerService
34+
from chia.harvester.harvester_service import HarvesterService
3335
from chia.plot_sync.receiver import Receiver, get_list_or_len
3436
from chia.plotting.util import add_plot_directory
3537
from chia.protocols import farmer_protocol
3638
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
3842
from chia.util.bech32m import decode_puzzle_hash, encode_puzzle_hash
3943
from chia.util.config import load_config, lock_and_load_config, save_config
4044
from chia.util.hash import std_hash
@@ -503,3 +507,32 @@ async def assert_added(path: Path) -> None:
503507
added_directories = await harvester_rpc_client.get_plot_directories()
504508
assert str(test_path) in added_directories
505509
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()

chia/_tests/farmer_harvester/test_third_party_harvesters.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,16 @@ async def test_harvester_receive_source_signing_data(
8484
full_node_1: FullNode = full_node_service_1._node
8585
full_node_2: FullNode = full_node_service_2._node
8686

87+
await time_out_assert(60, node_type_connected, True, farmer.server, NodeType.HARVESTER)
8788
# Connect peers to each other
8889
farmer_service.add_peer(
8990
UnresolvedPeerInfo(str(full_node_service_2.self_hostname), full_node_service_2._server.get_port())
9091
)
92+
await time_out_assert(60, node_type_connected, True, farmer.server, NodeType.FULL_NODE)
9193
full_node_service_2.add_peer(
9294
UnresolvedPeerInfo(str(full_node_service_1.self_hostname), full_node_service_1._server.get_port())
9395
)
94-
95-
await wait_until_node_type_connected(farmer.server, NodeType.FULL_NODE)
96-
await wait_until_node_type_connected(farmer.server, NodeType.HARVESTER) # Should already be connected
97-
await wait_until_node_type_connected(full_node_1.server, NodeType.FULL_NODE)
96+
await time_out_assert(60, node_type_connected, True, full_node_1.server, NodeType.FULL_NODE)
9897

9998
# Prepare test data
10099
blocks: list[FullBlock]
@@ -429,12 +428,11 @@ def log_has_new_text() -> bool:
429428
return False
430429

431430

432-
async def wait_until_node_type_connected(server: ChiaServer, node_type: NodeType) -> WSChiaConnection:
433-
while True:
434-
for peer in server.all_connections.values():
435-
if peer.connection_type == node_type.value:
436-
return peer
437-
await asyncio.sleep(1)
431+
def node_type_connected(server: ChiaServer, node_type: NodeType) -> bool:
432+
for peer in server.all_connections.values():
433+
if peer.connection_type == node_type.value:
434+
return True
435+
return False
438436

439437

440438
def decode_sp(

0 commit comments

Comments
 (0)