mirror of
https://github.com/Chia-Network/chia-blockchain.git
synced 2024-09-17 13:49:19 +03:00
Speed up tests
This commit is contained in:
parent
a7cd787477
commit
04edeb5255
@ -12,6 +12,7 @@ version_data = copy_metadata(get_distribution("chia-blockchain"))[0]
|
|||||||
|
|
||||||
SUBCOMMANDS = [
|
SUBCOMMANDS = [
|
||||||
"init",
|
"init",
|
||||||
|
"plots",
|
||||||
"keys",
|
"keys",
|
||||||
"show",
|
"show",
|
||||||
"start",
|
"start",
|
||||||
@ -26,8 +27,7 @@ other = ["aiter.active_aiter", "aiter.aiter_forker", "aiter.aiter_to_iter", "ait
|
|||||||
"aiter.iter_to_aiter", "aiter.join_aiters", "aiter.map_aiter", "aiter.map_filter_aiter", "aiter.preload_aiter",
|
"aiter.iter_to_aiter", "aiter.join_aiters", "aiter.map_aiter", "aiter.map_filter_aiter", "aiter.preload_aiter",
|
||||||
"aiter.push_aiter", "aiter.sharable_aiter", "aiter.stoppable_aiter"]
|
"aiter.push_aiter", "aiter.sharable_aiter", "aiter.stoppable_aiter"]
|
||||||
|
|
||||||
entry_points = ["src.cmds.check_plots",
|
entry_points = ["src.cmds.chia",
|
||||||
"src.cmds.create_plots",
|
|
||||||
"src.server.start_wallet",
|
"src.server.start_wallet",
|
||||||
"src.server.start_full_node",
|
"src.server.start_full_node",
|
||||||
"src.server.start_harvester",
|
"src.server.start_harvester",
|
||||||
@ -83,7 +83,7 @@ wallet = Analysis([f"{root}/src/server/start_wallet.py"],
|
|||||||
cipher=block_cipher,
|
cipher=block_cipher,
|
||||||
noarchive=False)
|
noarchive=False)
|
||||||
|
|
||||||
plotter = Analysis([f"{root}/src/cmds/create_plots.py"],
|
plotter = Analysis([f"{root}/src/cmds/chia.py"],
|
||||||
pathex=[f"{root}/venv/lib/python3.7/site-packages/aiter/", f"{root}"],
|
pathex=[f"{root}/venv/lib/python3.7/site-packages/aiter/", f"{root}"],
|
||||||
binaries = [],
|
binaries = [],
|
||||||
datas=[version_data],
|
datas=[version_data],
|
||||||
@ -122,7 +122,7 @@ harvester = Analysis([f"{root}/src/server/start_harvester.py"],
|
|||||||
cipher=block_cipher,
|
cipher=block_cipher,
|
||||||
noarchive=False)
|
noarchive=False)
|
||||||
|
|
||||||
check_plots = Analysis([f"{root}/src/cmds/check_plots.py"],
|
check_plots = Analysis([f"{root}/src/cmds/chia.py"],
|
||||||
pathex=[f"{root}/venv/lib/python3.7/site-packages/aiter/", f"{root}"],
|
pathex=[f"{root}/venv/lib/python3.7/site-packages/aiter/", f"{root}"],
|
||||||
binaries = [],
|
binaries = [],
|
||||||
datas=[version_data],
|
datas=[version_data],
|
||||||
|
@ -16,6 +16,7 @@ version_data = copy_metadata(get_distribution("chia-blockchain"))[0]
|
|||||||
SUBCOMMANDS = [
|
SUBCOMMANDS = [
|
||||||
"init",
|
"init",
|
||||||
"keys",
|
"keys",
|
||||||
|
"plots",
|
||||||
"show",
|
"show",
|
||||||
"start",
|
"start",
|
||||||
"stop",
|
"stop",
|
||||||
@ -30,8 +31,7 @@ other = ["aiter.active_aiter", "aiter.aiter_forker", "aiter.aiter_to_iter", "ait
|
|||||||
"aiter.push_aiter", "aiter.sharable_aiter", "aiter.stoppable_aiter", "win32timezone", "win32cred", "pywintypes", "win32ctypes.pywin32"]
|
"aiter.push_aiter", "aiter.sharable_aiter", "aiter.stoppable_aiter", "win32timezone", "win32cred", "pywintypes", "win32ctypes.pywin32"]
|
||||||
|
|
||||||
entry_points = ["aiohttp", "aiohttp",
|
entry_points = ["aiohttp", "aiohttp",
|
||||||
"src.cmds.check_plots",
|
"src.cmds.chia",
|
||||||
"src.cmds.create_plots",
|
|
||||||
"src.server.start_wallet",
|
"src.server.start_wallet",
|
||||||
"src.server.start_full_node",
|
"src.server.start_full_node",
|
||||||
"src.server.start_harvester",
|
"src.server.start_harvester",
|
||||||
@ -86,7 +86,7 @@ wallet = Analysis([f"../src/server/start_wallet.py"],
|
|||||||
cipher=block_cipher,
|
cipher=block_cipher,
|
||||||
noarchive=False)
|
noarchive=False)
|
||||||
|
|
||||||
plotter = Analysis([f"../src/cmds/create_plots.py"],
|
plotter = Analysis([f"../src/cmds/chia.py"],
|
||||||
pathex=[f"../venv/lib/python3.7/site-packages/aiter/", f".."],
|
pathex=[f"../venv/lib/python3.7/site-packages/aiter/", f".."],
|
||||||
binaries = [],
|
binaries = [],
|
||||||
datas=[version_data],
|
datas=[version_data],
|
||||||
@ -125,7 +125,7 @@ harvester = Analysis([f"../src/server/start_harvester.py"],
|
|||||||
cipher=block_cipher,
|
cipher=block_cipher,
|
||||||
noarchive=False)
|
noarchive=False)
|
||||||
|
|
||||||
check_plots = Analysis([f"../src/cmds/check_plots.py"],
|
check_plots = Analysis([f"../src/cmds/chia.py"],
|
||||||
pathex=[f"../venv/lib/python3.7/site-packages/aiter/", f"../"],
|
pathex=[f"../venv/lib/python3.7/site-packages/aiter/", f"../"],
|
||||||
binaries = [],
|
binaries = [],
|
||||||
datas=[version_data],
|
datas=[version_data],
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import logging
|
import logging
|
||||||
|
import pathlib
|
||||||
from src.plotting.plot_tools import add_plot_directory
|
from src.plotting.plot_tools import add_plot_directory
|
||||||
from src.plotting.create_plots import create_plots
|
from src.plotting.create_plots import create_plots
|
||||||
from src.plotting.check_plots import check_plots
|
from src.plotting.check_plots import check_plots
|
||||||
from src.util.logging import initialize_logging
|
from src.util.logging import initialize_logging
|
||||||
|
from argparse import ArgumentParser
|
||||||
|
from src.util.default_root import DEFAULT_ROOT_PATH
|
||||||
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@ -108,3 +111,22 @@ def handler(args, parser):
|
|||||||
elif command == "add":
|
elif command == "add":
|
||||||
str_path = args.final_dir
|
str_path = args.final_dir
|
||||||
add_plot_directory(str_path, root_path)
|
add_plot_directory(str_path, root_path)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
# TODO: remove: this is a hack to get pypacker to be able to call the script
|
||||||
|
parser: ArgumentParser = ArgumentParser(description="Chia plots")
|
||||||
|
parser.add_argument(
|
||||||
|
"-r",
|
||||||
|
"--root-path",
|
||||||
|
help="Config file root (defaults to %s)." % DEFAULT_ROOT_PATH,
|
||||||
|
type=pathlib.Path,
|
||||||
|
default=DEFAULT_ROOT_PATH,
|
||||||
|
)
|
||||||
|
make_parser(parser)
|
||||||
|
args = parser.parse_args()
|
||||||
|
handler(args, parser)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
@ -7,9 +7,13 @@ from datetime import datetime
|
|||||||
from src.types.proof_of_space import ProofOfSpace
|
from src.types.proof_of_space import ProofOfSpace
|
||||||
from src.types.sized_bytes import bytes32
|
from src.types.sized_bytes import bytes32
|
||||||
from src.util.keychain import Keychain
|
from src.util.keychain import Keychain
|
||||||
from src.util.config import config_path_for_filename, load_config, save_config
|
from src.util.config import config_path_for_filename, load_config
|
||||||
from src.util.path import mkdir
|
from src.util.path import mkdir
|
||||||
from src.plotting.plot_tools import get_plot_filenames, stream_plot_info
|
from src.plotting.plot_tools import (
|
||||||
|
get_plot_filenames,
|
||||||
|
stream_plot_info,
|
||||||
|
add_plot_directory,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
@ -78,6 +82,8 @@ def create_plots(args, root_path, use_datetime=True):
|
|||||||
mkdir(args.tmp2_dir)
|
mkdir(args.tmp2_dir)
|
||||||
mkdir(args.final_dir)
|
mkdir(args.final_dir)
|
||||||
finished_filenames = []
|
finished_filenames = []
|
||||||
|
config = load_config(root_path, config_filename)
|
||||||
|
plot_filenames = get_plot_filenames(config["harvester"])
|
||||||
for i in range(args.index, args.index + num):
|
for i in range(args.index, args.index + num):
|
||||||
# Generate a sk based on the seed, plot size (k), and index
|
# Generate a sk based on the seed, plot size (k), and index
|
||||||
sk: PrivateKey = PrivateKey.from_seed(
|
sk: PrivateKey = PrivateKey.from_seed(
|
||||||
@ -101,14 +107,13 @@ def create_plots(args, root_path, use_datetime=True):
|
|||||||
filename = f"plot-k{args.size}-{plot_seed}.plot"
|
filename = f"plot-k{args.size}-{plot_seed}.plot"
|
||||||
full_path: Path = args.final_dir / filename
|
full_path: Path = args.final_dir / filename
|
||||||
|
|
||||||
config = load_config(root_path, config_filename)
|
|
||||||
plot_filenames = get_plot_filenames(config["harvester"])
|
|
||||||
if args.final_dir.resolve() not in plot_filenames:
|
if args.final_dir.resolve() not in plot_filenames:
|
||||||
# Adds the directory to the plot directories if it is not present
|
if (
|
||||||
config["harvester"]["plot_directories"].append(
|
|
||||||
str(args.final_dir.resolve())
|
str(args.final_dir.resolve())
|
||||||
)
|
not in config["harvester"]["plot_directories"]
|
||||||
save_config(root_path, config_filename, config)
|
):
|
||||||
|
# Adds the directory to the plot directories if it is not present
|
||||||
|
config = add_plot_directory(str(args.final_dir.resolve()), root_path)
|
||||||
|
|
||||||
if not full_path.exists():
|
if not full_path.exists():
|
||||||
# Creates the plot. This will take a long time for larger plots.
|
# Creates the plot. This will take a long time for larger plots.
|
||||||
|
@ -72,6 +72,7 @@ def add_plot_directory(str_path, root_path):
|
|||||||
if str(Path(str_path).resolve()) not in config["harvester"]["plot_directories"]:
|
if str(Path(str_path).resolve()) not in config["harvester"]["plot_directories"]:
|
||||||
config["harvester"]["plot_directories"].append(str(Path(str_path).resolve()))
|
config["harvester"]["plot_directories"].append(str(Path(str_path).resolve()))
|
||||||
save_config(root_path, "config.yaml", config)
|
save_config(root_path, "config.yaml", config)
|
||||||
|
return config
|
||||||
|
|
||||||
|
|
||||||
def load_plots(
|
def load_plots(
|
||||||
|
@ -17,13 +17,14 @@ from src.util.api_decorators import api_request
|
|||||||
from src.util.ints import uint64
|
from src.util.ints import uint64
|
||||||
from tests.block_tools import BlockTools
|
from tests.block_tools import BlockTools
|
||||||
|
|
||||||
|
bt = BlockTools()
|
||||||
OutboundMessageGenerator = AsyncGenerator[OutboundMessage, None]
|
OutboundMessageGenerator = AsyncGenerator[OutboundMessage, None]
|
||||||
|
|
||||||
|
|
||||||
class FullNodeSimulator(FullNode):
|
class FullNodeSimulator(FullNode):
|
||||||
def __init__(self, config, root_path, name, override_constants):
|
def __init__(self, config, root_path, consensus_constants, name):
|
||||||
super().__init__(config, root_path, name, override_constants)
|
super().__init__(config, root_path, consensus_constants, name)
|
||||||
self.bt = BlockTools()
|
self.bt = bt
|
||||||
|
|
||||||
def _set_server(self, server: ChiaServer):
|
def _set_server(self, server: ChiaServer):
|
||||||
super()._set_server(server)
|
super()._set_server(server)
|
||||||
|
@ -11,8 +11,6 @@ from src.types.full_block import FullBlock
|
|||||||
from src.types.header import Header, HeaderData
|
from src.types.header import Header, HeaderData
|
||||||
from src.types.proof_of_space import ProofOfSpace
|
from src.types.proof_of_space import ProofOfSpace
|
||||||
from src.util.ints import uint8, uint64, uint32
|
from src.util.ints import uint8, uint64, uint32
|
||||||
from src.consensus.constants import ConsensusConstants
|
|
||||||
from tests.block_tools import BlockTools
|
|
||||||
from src.util.errors import Err
|
from src.util.errors import Err
|
||||||
from src.types.sized_bytes import bytes32
|
from src.types.sized_bytes import bytes32
|
||||||
from src.types.pool_target import PoolTarget
|
from src.types.pool_target import PoolTarget
|
||||||
@ -22,10 +20,9 @@ from src.full_node.coin_store import CoinStore
|
|||||||
from src.consensus.find_fork_point import find_fork_point_in_chain
|
from src.consensus.find_fork_point import find_fork_point_in_chain
|
||||||
from tests.make_test_constants import make_test_constants_with_genesis
|
from tests.make_test_constants import make_test_constants_with_genesis
|
||||||
|
|
||||||
from tests.setup_nodes import bt
|
|
||||||
|
|
||||||
test_constants: Dict[str, Any] = consensus_constants.copy()
|
|
||||||
test_constants.update(
|
test_constants, bt = make_test_constants_with_genesis(
|
||||||
{
|
{
|
||||||
"DIFFICULTY_STARTING": 1,
|
"DIFFICULTY_STARTING": 1,
|
||||||
"DISCRIMINANT_SIZE_BITS": 8,
|
"DISCRIMINANT_SIZE_BITS": 8,
|
||||||
|
@ -12,5 +12,7 @@ def make_test_constants_with_genesis(test_constants_overrides: Dict):
|
|||||||
|
|
||||||
new_genesis_block = bt.create_genesis_block(test_constants, bytes([0] * 32), b"0")
|
new_genesis_block = bt.create_genesis_block(test_constants, bytes([0] * 32), b"0")
|
||||||
|
|
||||||
final_test_constants = test_constants.replace(GENESIS_BLOCK=bytes(new_genesis_block))
|
final_test_constants = test_constants.replace(
|
||||||
return final_test_constants
|
GENESIS_BLOCK=bytes(new_genesis_block)
|
||||||
|
)
|
||||||
|
return final_test_constants, bt
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[pytest]
|
[pytest]
|
||||||
; logging options
|
; logging options
|
||||||
log_cli = 1
|
log_cli = 1
|
||||||
log_level = WARNING
|
log_level = INFO
|
||||||
log_format = %(asctime)s %(name)s: %(levelname)s %(message)s
|
log_format = %(asctime)s %(name)s: %(levelname)s %(message)s
|
||||||
|
@ -11,7 +11,6 @@ from src.simulator.full_node_simulator import FullNodeSimulator
|
|||||||
from src.timelord_launcher import spawn_process, kill_processes
|
from src.timelord_launcher import spawn_process, kill_processes
|
||||||
from src.util.keychain import Keychain
|
from src.util.keychain import Keychain
|
||||||
from src.wallet.wallet_node import WalletNode
|
from src.wallet.wallet_node import WalletNode
|
||||||
from tests.block_tools import BlockTools
|
|
||||||
from src.util.config import load_config
|
from src.util.config import load_config
|
||||||
from src.harvester import Harvester
|
from src.harvester import Harvester
|
||||||
from src.farmer import Farmer
|
from src.farmer import Farmer
|
||||||
@ -24,25 +23,26 @@ from tests.make_test_constants import make_test_constants_with_genesis
|
|||||||
from tests.time_out_assert import time_out_assert
|
from tests.time_out_assert import time_out_assert
|
||||||
|
|
||||||
|
|
||||||
bt = BlockTools()
|
test_constants, bt = make_test_constants_with_genesis(
|
||||||
|
{
|
||||||
|
"DIFFICULTY_STARTING": 1,
|
||||||
|
"DISCRIMINANT_SIZE_BITS": 8,
|
||||||
|
"BLOCK_TIME_TARGET": 10,
|
||||||
|
"DIFFICULTY_EPOCH": 12, # The number of blocks per epoch
|
||||||
|
"DIFFICULTY_DELAY": 3, # EPOCH / WARP_FACTOR
|
||||||
|
"PROPAGATION_THRESHOLD": 10,
|
||||||
|
"PROPAGATION_DELAY_THRESHOLD": 20,
|
||||||
|
"TX_PER_SEC": 1,
|
||||||
|
"MEMPOOL_BLOCK_BUFFER": 10,
|
||||||
|
"MIN_ITERS_STARTING": 50 * 1,
|
||||||
|
"NUMBER_ZERO_BITS_CHALLENGE_SIG": 1,
|
||||||
|
"CLVM_COST_RATIO_CONSTANT": 108,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
global_config = load_config(bt.root_path, "config.yaml")
|
global_config = load_config(bt.root_path, "config.yaml")
|
||||||
self_hostname = global_config["self_hostname"]
|
self_hostname = global_config["self_hostname"]
|
||||||
|
|
||||||
test_constants = make_test_constants_with_genesis({
|
|
||||||
"DIFFICULTY_STARTING": 1,
|
|
||||||
"DISCRIMINANT_SIZE_BITS": 8,
|
|
||||||
"BLOCK_TIME_TARGET": 10,
|
|
||||||
"DIFFICULTY_EPOCH": 12, # The number of blocks per epoch
|
|
||||||
"DIFFICULTY_DELAY": 3, # EPOCH / WARP_FACTOR
|
|
||||||
"PROPAGATION_THRESHOLD": 10,
|
|
||||||
"PROPAGATION_DELAY_THRESHOLD": 20,
|
|
||||||
"TX_PER_SEC": 1,
|
|
||||||
"MEMPOOL_BLOCK_BUFFER": 10,
|
|
||||||
"MIN_ITERS_STARTING": 50 * 1,
|
|
||||||
"CLVM_COST_RATIO_CONSTANT": 108,
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
def constants_for_dic(dic):
|
def constants_for_dic(dic):
|
||||||
return test_constants.replace(**dic)
|
return test_constants.replace(**dic)
|
||||||
|
@ -8,8 +8,7 @@ from tests.make_test_constants import make_test_constants_with_genesis
|
|||||||
from tests.time_out_assert import time_out_assert, time_out_assert_custom_interval
|
from tests.time_out_assert import time_out_assert, time_out_assert_custom_interval
|
||||||
|
|
||||||
|
|
||||||
|
test_constants, bt = make_test_constants_with_genesis(
|
||||||
test_constants = make_test_constants_with_genesis(
|
|
||||||
{
|
{
|
||||||
"DIFFICULTY_STARTING": 500,
|
"DIFFICULTY_STARTING": 500,
|
||||||
"MIN_ITERS_STARTING": 500,
|
"MIN_ITERS_STARTING": 500,
|
||||||
|
Loading…
Reference in New Issue
Block a user