Move harvester_farmer_environment to conftest.py (#15590)

Move harvester_farmer_environment to conftest.py.
This commit is contained in:
Amine Khaldi 2023-06-22 17:13:55 +01:00 committed by GitHub
parent ad3353d9b4
commit b498188c0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 43 deletions

View File

@ -20,9 +20,15 @@ from chia.clvm.spend_sim import CostLogger
# Set spawn after stdlib imports, but before other imports
from chia.consensus.constants import ConsensusConstants
from chia.farmer.farmer import Farmer
from chia.farmer.farmer_api import FarmerAPI
from chia.full_node.full_node import FullNode
from chia.full_node.full_node_api import FullNodeAPI
from chia.harvester.harvester import Harvester
from chia.harvester.harvester_api import HarvesterAPI
from chia.protocols import full_node_protocol
from chia.rpc.farmer_rpc_client import FarmerRpcClient
from chia.rpc.harvester_rpc_client import HarvesterRpcClient
from chia.rpc.wallet_rpc_client import WalletRpcClient
from chia.seeder.crawler import Crawler
from chia.seeder.crawler_api import CrawlerAPI
@ -890,3 +896,38 @@ async def simulation(consensus_mode, bt):
pytest.skip("Skipping this run. This test only supports one running at a time.")
async for _ in setup_full_system(test_constants_modified, bt, db_version=1):
yield _
HarvesterFarmerEnvironment = Tuple[
Service[Farmer, FarmerAPI], FarmerRpcClient, Service[Harvester, HarvesterAPI], HarvesterRpcClient, BlockTools
]
@pytest_asyncio.fixture(scope="function")
async def harvester_farmer_environment(
farmer_one_harvester: Tuple[List[Service[Harvester, HarvesterAPI]], Service[Farmer, FarmerAPI], BlockTools],
self_hostname: str,
) -> AsyncIterator[HarvesterFarmerEnvironment]:
harvesters, farmer_service, bt = farmer_one_harvester
harvester_service = harvesters[0]
assert farmer_service.rpc_server is not None
farmer_rpc_cl = await FarmerRpcClient.create(
self_hostname, farmer_service.rpc_server.listen_port, farmer_service.root_path, farmer_service.config
)
assert harvester_service.rpc_server is not None
harvester_rpc_cl = await HarvesterRpcClient.create(
self_hostname, harvester_service.rpc_server.listen_port, harvester_service.root_path, harvester_service.config
)
async def have_connections() -> bool:
return len(await farmer_rpc_cl.get_connections()) > 0
await time_out_assert(15, have_connections, True)
yield farmer_service, farmer_rpc_cl, harvester_service, harvester_rpc_cl, bt
farmer_rpc_cl.close()
harvester_rpc_cl.close()
await farmer_rpc_cl.await_closed()
await harvester_rpc_cl.await_closed()

View File

@ -9,16 +9,12 @@ from math import ceil
from os import mkdir
from pathlib import Path
from shutil import copy
from typing import Any, AsyncIterator, Awaitable, Callable, Dict, List, Tuple, Union, cast
from typing import Any, Awaitable, Callable, Dict, List, Union, cast
import pytest
import pytest_asyncio
from chia.consensus.coinbase import create_puzzlehash_for_pk
from chia.farmer.farmer import Farmer
from chia.farmer.farmer_api import FarmerAPI
from chia.harvester.harvester import Harvester
from chia.harvester.harvester_api import HarvesterAPI
from chia.plot_sync.receiver import Receiver
from chia.plotting.util import add_plot_directory
from chia.protocols import farmer_protocol
@ -31,9 +27,7 @@ from chia.rpc.farmer_rpc_api import (
plot_matches_filter,
)
from chia.rpc.farmer_rpc_client import FarmerRpcClient
from chia.rpc.harvester_rpc_client import HarvesterRpcClient
from chia.server.start_service import Service
from chia.simulator.block_tools import BlockTools, get_plot_dir
from chia.simulator.block_tools import get_plot_dir
from chia.simulator.time_out_assert import time_out_assert, time_out_assert_custom_interval
from chia.types.blockchain_format.sized_bytes import bytes32
from chia.util.bech32m import decode_puzzle_hash, encode_puzzle_hash
@ -42,6 +36,7 @@ from chia.util.hash import std_hash
from chia.util.ints import uint8, uint32, uint64
from chia.util.misc import get_list_or_len
from chia.wallet.derive_keys import master_sk_to_wallet_sk, master_sk_to_wallet_sk_unhardened
from tests.conftest import HarvesterFarmerEnvironment
from tests.plot_sync.test_delta import dummy_plot
from tests.util.misc import assert_rpc_error
from tests.util.rpc import validate_get_routes
@ -66,41 +61,6 @@ async def wait_for_synced_receiver(farmer: Farmer, harvester_id: bytes32) -> Non
await time_out_assert(30, wait)
HarvesterFarmerEnvironment = Tuple[
Service[Farmer, FarmerAPI], FarmerRpcClient, Service[Harvester, HarvesterAPI], HarvesterRpcClient, BlockTools
]
@pytest_asyncio.fixture(scope="function")
async def harvester_farmer_environment(
farmer_one_harvester: Tuple[List[Service[Harvester, HarvesterAPI]], Service[Farmer, FarmerAPI], BlockTools],
self_hostname: str,
) -> AsyncIterator[HarvesterFarmerEnvironment]:
harvesters, farmer_service, bt = farmer_one_harvester
harvester_service = harvesters[0]
assert farmer_service.rpc_server is not None
farmer_rpc_cl = await FarmerRpcClient.create(
self_hostname, farmer_service.rpc_server.listen_port, farmer_service.root_path, farmer_service.config
)
assert harvester_service.rpc_server is not None
harvester_rpc_cl = await HarvesterRpcClient.create(
self_hostname, harvester_service.rpc_server.listen_port, harvester_service.root_path, harvester_service.config
)
async def have_connections() -> bool:
return len(await farmer_rpc_cl.get_connections()) > 0
await time_out_assert(15, have_connections, True)
yield farmer_service, farmer_rpc_cl, harvester_service, harvester_rpc_cl, bt
farmer_rpc_cl.close()
harvester_rpc_cl.close()
await farmer_rpc_cl.await_closed()
await harvester_rpc_cl.await_closed()
@pytest.mark.asyncio
async def test_get_routes(harvester_farmer_environment: HarvesterFarmerEnvironment) -> None:
farmer_service, farmer_rpc_client, harvester_service, harvester_rpc_client, _ = harvester_farmer_environment