nucypher/tests/constants.py

135 lines
3.2 KiB
Python
Raw Normal View History

2018-11-22 18:21:28 +00:00
import string
import tempfile
from datetime import datetime
from pathlib import Path
from random import SystemRandom
from web3 import Web3
from nucypher.blockchain.eth.token import NU
from nucypher.config.constants import (
NUCYPHER_ENVVAR_KEYSTORE_PASSWORD,
NUCYPHER_ENVVAR_OPERATOR_ETH_PASSWORD,
)
2018-11-22 18:21:28 +00:00
#
# Ursula
#
NUMBER_OF_URSULAS_IN_BLOCKCHAIN_TESTS = 10
2022-02-09 20:03:49 +00:00
NUMBER_OF_STAKING_PROVIDERS_IN_BLOCKCHAIN_TESTS = NUMBER_OF_URSULAS_IN_BLOCKCHAIN_TESTS
2022-02-09 20:03:49 +00:00
# Ursulas (Operators) and Staking Providers have their own account
NUMBER_OF_ETH_TEST_ACCOUNTS = NUMBER_OF_URSULAS_IN_BLOCKCHAIN_TESTS + NUMBER_OF_STAKING_PROVIDERS_IN_BLOCKCHAIN_TESTS + 10
NUMBER_OF_URSULAS_IN_DEVELOPMENT_NETWORK = NUMBER_OF_URSULAS_IN_BLOCKCHAIN_TESTS
#
# Local Signer Keystore
#
KEYFILE_NAME_TEMPLATE = 'UTC--2020-{month}-21T03-42-07.869432648Z--{address}'
MOCK_KEYSTORE_PATH = '/home/fakeMcfakeson/.ethereum/llamanet/keystore/'
MOCK_SIGNER_URI = f'keystore://{MOCK_KEYSTORE_PATH}'
NUMBER_OF_MOCK_KEYSTORE_ACCOUNTS = NUMBER_OF_ETH_TEST_ACCOUNTS
#
# Testerchain
#
ONE_YEAR_IN_SECONDS = ((60 * 60) * 24) * 365
DEVELOPMENT_TOKEN_AIRDROP_AMOUNT = NU(1_000_000, 'NU')
MIN_STAKE_FOR_TESTS = NU(750_000, 'NU').to_units()
BONUS_TOKENS_FOR_TESTS = NU(150_000, 'NU').to_units()
DEVELOPMENT_ETH_AIRDROP_AMOUNT = int(Web3().to_wei(100, 'ether'))
NUMBER_OF_ALLOCATIONS_IN_TESTS = 50 # TODO: Move to constants
#
# Insecure Secrets
#
__valid_password_chars = string.ascii_uppercase + string.ascii_lowercase + string.digits
2021-05-18 20:21:48 +00:00
INSECURE_DEVELOPMENT_PASSWORD = ''.join(SystemRandom().choice(__valid_password_chars) for _ in range(32))
2018-11-22 18:21:28 +00:00
#
# Temporary Directories and Files
#
BASE_TEMP_DIR = Path(tempfile.gettempdir())
BASE_TEMP_PREFIX = 'nucypher-tmp-'
2019-09-07 12:08:27 +00:00
DATETIME_FORMAT = "%Y-%m-%d_%H-%M-%S.%f"
MOCK_CUSTOM_INSTALLATION_PATH = BASE_TEMP_DIR / f'{BASE_TEMP_PREFIX}test-custom-{datetime.now().strftime(DATETIME_FORMAT)}'
MOCK_CUSTOM_INSTALLATION_PATH_2 = BASE_TEMP_DIR / f'{BASE_TEMP_PREFIX}test-custom-2-{datetime.now().strftime(DATETIME_FORMAT)}'
MOCK_REGISTRY_FILEPATH = BASE_TEMP_DIR / f'{BASE_TEMP_PREFIX}mock-registry-{datetime.now().strftime(DATETIME_FORMAT)}.json'
GETH_DEV_URI = f'ipc://{BASE_TEMP_DIR}/geth.ipc' # Standard IPC path for `geth --dev`
PYEVM_DEV_URI = "tester://pyevm"
TEST_ETH_PROVIDER_URI = PYEVM_DEV_URI # TODO: Pytest flag entry point?
TEST_POLYGON_PROVIDER_URI = "tester://polygon"
MOCK_ETH_PROVIDER_URI = 'tester://mock'
#
# Node Configuration
#
MOCK_POLICY_DEFAULT_THRESHOLD = 3
# These IP addresses are reserved for usage in documentation
# https://tools.ietf.org/html/rfc5737
MOCK_IP_ADDRESS = '192.0.2.100'
MOCK_IP_ADDRESS_2 = '203.0.113.20'
FEE_RATE_RANGE = (5, 10, 15)
#
# Gas
#
2019-08-28 11:10:51 +00:00
TEST_GAS_LIMIT = 8_000_000 # gas
PYEVM_GAS_LIMIT = TEST_GAS_LIMIT # TODO: move elsewhere (used to set pyevm gas limit in tests)?
2019-05-17 16:33:07 +00:00
#
# CLI
#
YES = 'Y'
YES_ENTER = YES + '\n'
NO = 'N'
NO_ENTER = NO + '\n'
FAKE_PASSWORD_CONFIRMED = '{password}\n{password}\n'.format(password=INSECURE_DEVELOPMENT_PASSWORD)
2021-06-08 20:59:43 +00:00
CLI_TEST_ENV = {NUCYPHER_ENVVAR_KEYSTORE_PASSWORD: INSECURE_DEVELOPMENT_PASSWORD}
2021-06-08 20:59:43 +00:00
CLI_ENV = {NUCYPHER_ENVVAR_KEYSTORE_PASSWORD: INSECURE_DEVELOPMENT_PASSWORD,
2022-02-02 19:34:05 +00:00
NUCYPHER_ENVVAR_OPERATOR_ETH_PASSWORD: INSECURE_DEVELOPMENT_PASSWORD}
2022-11-09 11:38:06 +00:00
TESTERCHAIN_CHAIN_ID = 131277322940537