Speed up tests

This commit is contained in:
Mariano Sorgente 2020-07-06 15:06:55 +09:00 committed by Gene Hoffman
parent a7cd787477
commit 04edeb5255
11 changed files with 72 additions and 45 deletions

View File

@ -12,6 +12,7 @@ version_data = copy_metadata(get_distribution("chia-blockchain"))[0]
SUBCOMMANDS = [
"init",
"plots",
"keys",
"show",
"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.push_aiter", "aiter.sharable_aiter", "aiter.stoppable_aiter"]
entry_points = ["src.cmds.check_plots",
"src.cmds.create_plots",
entry_points = ["src.cmds.chia",
"src.server.start_wallet",
"src.server.start_full_node",
"src.server.start_harvester",
@ -83,7 +83,7 @@ wallet = Analysis([f"{root}/src/server/start_wallet.py"],
cipher=block_cipher,
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}"],
binaries = [],
datas=[version_data],
@ -122,7 +122,7 @@ harvester = Analysis([f"{root}/src/server/start_harvester.py"],
cipher=block_cipher,
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}"],
binaries = [],
datas=[version_data],

View File

@ -16,6 +16,7 @@ version_data = copy_metadata(get_distribution("chia-blockchain"))[0]
SUBCOMMANDS = [
"init",
"keys",
"plots",
"show",
"start",
"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"]
entry_points = ["aiohttp", "aiohttp",
"src.cmds.check_plots",
"src.cmds.create_plots",
"src.cmds.chia",
"src.server.start_wallet",
"src.server.start_full_node",
"src.server.start_harvester",
@ -86,7 +86,7 @@ wallet = Analysis([f"../src/server/start_wallet.py"],
cipher=block_cipher,
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".."],
binaries = [],
datas=[version_data],
@ -125,7 +125,7 @@ harvester = Analysis([f"../src/server/start_harvester.py"],
cipher=block_cipher,
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"../"],
binaries = [],
datas=[version_data],

View File

@ -1,9 +1,12 @@
from pathlib import Path
import logging
import pathlib
from src.plotting.plot_tools import add_plot_directory
from src.plotting.create_plots import create_plots
from src.plotting.check_plots import check_plots
from src.util.logging import initialize_logging
from argparse import ArgumentParser
from src.util.default_root import DEFAULT_ROOT_PATH
log = logging.getLogger(__name__)
@ -108,3 +111,22 @@ def handler(args, parser):
elif command == "add":
str_path = args.final_dir
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()

View File

@ -7,9 +7,13 @@ from datetime import datetime
from src.types.proof_of_space import ProofOfSpace
from src.types.sized_bytes import bytes32
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.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__)
@ -78,6 +82,8 @@ def create_plots(args, root_path, use_datetime=True):
mkdir(args.tmp2_dir)
mkdir(args.final_dir)
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):
# Generate a sk based on the seed, plot size (k), and index
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"
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:
# Adds the directory to the plot directories if it is not present
config["harvester"]["plot_directories"].append(
if (
str(args.final_dir.resolve())
)
save_config(root_path, config_filename, config)
not in config["harvester"]["plot_directories"]
):
# 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():
# Creates the plot. This will take a long time for larger plots.

View File

@ -72,6 +72,7 @@ def add_plot_directory(str_path, root_path):
if str(Path(str_path).resolve()) not in config["harvester"]["plot_directories"]:
config["harvester"]["plot_directories"].append(str(Path(str_path).resolve()))
save_config(root_path, "config.yaml", config)
return config
def load_plots(

View File

@ -17,13 +17,14 @@ from src.util.api_decorators import api_request
from src.util.ints import uint64
from tests.block_tools import BlockTools
bt = BlockTools()
OutboundMessageGenerator = AsyncGenerator[OutboundMessage, None]
class FullNodeSimulator(FullNode):
def __init__(self, config, root_path, name, override_constants):
super().__init__(config, root_path, name, override_constants)
self.bt = BlockTools()
def __init__(self, config, root_path, consensus_constants, name):
super().__init__(config, root_path, consensus_constants, name)
self.bt = bt
def _set_server(self, server: ChiaServer):
super()._set_server(server)

View File

@ -11,8 +11,6 @@ from src.types.full_block import FullBlock
from src.types.header import Header, HeaderData
from src.types.proof_of_space import ProofOfSpace
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.types.sized_bytes import bytes32
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 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,
"DISCRIMINANT_SIZE_BITS": 8,

View File

@ -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")
final_test_constants = test_constants.replace(GENESIS_BLOCK=bytes(new_genesis_block))
return final_test_constants
final_test_constants = test_constants.replace(
GENESIS_BLOCK=bytes(new_genesis_block)
)
return final_test_constants, bt

View File

@ -1,5 +1,5 @@
[pytest]
; logging options
log_cli = 1
log_level = WARNING
log_level = INFO
log_format = %(asctime)s %(name)s: %(levelname)s %(message)s

View File

@ -11,7 +11,6 @@ from src.simulator.full_node_simulator import FullNodeSimulator
from src.timelord_launcher import spawn_process, kill_processes
from src.util.keychain import Keychain
from src.wallet.wallet_node import WalletNode
from tests.block_tools import BlockTools
from src.util.config import load_config
from src.harvester import Harvester
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
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")
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):
return test_constants.replace(**dic)

View File

@ -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
test_constants = make_test_constants_with_genesis(
test_constants, bt = make_test_constants_with_genesis(
{
"DIFFICULTY_STARTING": 500,
"MIN_ITERS_STARTING": 500,