def test_run_web(self, capfd): autokill_subprocess("prodstats", "run", "web", "--port", str(get_open_port())) captured = capfd.readouterr() logger.warning(captured.out) logger.warning(captured.err) assert "Uvicorn running" in captured.err
def test_launch_dev_server(self, capfd): autokill_subprocess("sunstruck", "run", "dev", "--port", str(get_open_port()), delay=5) captured = capfd.readouterr() assert "Uvicorn running" in captured.err
def _geth_command_arguments(geth_ipc_path, base_geth_command_arguments): geth_port = get_open_port() yield from base_geth_command_arguments yield from ( '--port', geth_port, '--ipcpath', geth_ipc_path, )
def geth_command_arguments(geth_binary, datadir, geth_ipc_path): geth_port = get_open_port() return ( geth_binary, '--datadir', str(datadir), '--ipcpath', geth_ipc_path, '--nodiscover', '--fakepow', '--port', geth_port, )
def generate_go_ethereum_fixture(destination_dir): with contextlib.ExitStack() as stack: datadir = stack.enter_context(common.tempdir()) keystore_dir = os.path.join(datadir, 'keystore') common.ensure_path_exists(keystore_dir) keyfile_path = os.path.join(keystore_dir, common.KEYFILE_FILENAME) with open(keyfile_path, 'w') as keyfile: keyfile.write(common.KEYFILE_DATA) genesis_file_path = os.path.join(datadir, 'genesis.json') with open(genesis_file_path, 'w') as genesis_file: genesis_file.write(json.dumps(common.GENESIS_DATA)) geth_ipc_path_dir = stack.enter_context(common.tempdir()) geth_ipc_path = os.path.join(geth_ipc_path_dir, 'geth.ipc') geth_port = get_open_port() geth_binary = common.get_geth_binary() with get_geth_process( geth_binary=geth_binary, datadir=datadir, genesis_file_path=genesis_file_path, geth_ipc_path=geth_ipc_path, geth_port=geth_port): common.wait_for_socket(geth_ipc_path) w3 = Web3(Web3.IPCProvider(geth_ipc_path)) chain_data = setup_chain_state(w3) # close geth by exiting context # must be closed before copying data dir verify_chain_state(w3, chain_data) # verify that chain state is still valid after closing # and re-opening geth with get_geth_process( geth_binary=geth_binary, datadir=datadir, genesis_file_path=genesis_file_path, geth_ipc_path=geth_ipc_path, geth_port=geth_port): common.wait_for_socket(geth_ipc_path) w3 = Web3(Web3.IPCProvider(geth_ipc_path)) verify_chain_state(w3, chain_data) static_data = { 'raw_txn_account': common.RAW_TXN_ACCOUNT, 'keyfile_pw': common.KEYFILE_PW, } config = merge(chain_data, static_data) pprint.pprint(config) write_config_json(config, datadir) shutil.make_archive(destination_dir, 'zip', datadir)
def generate_go_ethereum_fixture(destination_dir): with contextlib.ExitStack() as stack: datadir = stack.enter_context(tempdir()) keystore_dir = os.path.join(datadir, 'keystore') ensure_path_exists(keystore_dir) keyfile_path = os.path.join(keystore_dir, KEYFILE_FILENAME) with open(keyfile_path, 'w') as keyfile: keyfile.write(KEYFILE_DATA) genesis_file_path = os.path.join(datadir, 'genesis.json') with open(genesis_file_path, 'w') as genesis_file: genesis_file.write(json.dumps(GENESIS_DATA)) geth_ipc_path_dir = stack.enter_context(tempdir()) geth_ipc_path = os.path.join(geth_ipc_path_dir, 'geth.ipc') geth_port = get_open_port() geth_binary = get_geth_binary() with get_geth_process( geth_binary=geth_binary, datadir=datadir, genesis_file_path=genesis_file_path, geth_ipc_path=geth_ipc_path, geth_port=geth_port): wait_for_socket(geth_ipc_path) web3 = Web3(Web3.IPCProvider(geth_ipc_path)) chain_data = setup_chain_state(web3) # close geth by exiting context # must be closed before copying data dir verify_chain_state(web3, chain_data) # verify that chain state is still valid after closing # and re-opening geth with get_geth_process( geth_binary=geth_binary, datadir=datadir, genesis_file_path=genesis_file_path, geth_ipc_path=geth_ipc_path, geth_port=geth_port): wait_for_socket(geth_ipc_path) web3 = Web3(Web3.IPCProvider(geth_ipc_path)) verify_chain_state(web3, chain_data) static_data = { 'raw_txn_account': RAW_TXN_ACCOUNT, 'keyfile_pw': KEYFILE_PW, } config = merge(chain_data, static_data) pprint.pprint(config) write_config_json(config, datadir) shutil.copytree(datadir, destination_dir)
def geth_command_arguments(geth_binary, datadir, geth_ipc_path): geth_port = get_open_port() return ( geth_binary, '--datadir', str(datadir), '--ipcpath', geth_ipc_path, '--shh', '--nodiscover', '--fakepow', '--port', geth_port, )
def server(): host = "127.0.0.1" port = get_open_port() process = Process( target=uvicorn.run, # args=(app,), args=("tests.collector.test_client:app",), kwargs={"host": host, "port": port, "log_level": "warning"}, daemon=True, ) process.start() time.sleep(3) yield httpx.URL(f"http://{host}:{port}") process.kill()
def generate_go_ethereum_fixture(destination_dir): with contextlib.ExitStack() as stack: datadir = stack.enter_context(common.tempdir()) keystore_dir = os.path.join(datadir, 'keystore') common.ensure_path_exists(keystore_dir) keyfile_path = os.path.join(keystore_dir, common.KEYFILE_FILENAME) with open(keyfile_path, 'w') as keyfile: keyfile.write(common.KEYFILE_DATA) genesis_file_path = os.path.join(datadir, 'genesis.json') with open(genesis_file_path, 'w') as genesis_file: genesis_file.write(json.dumps(common.GENESIS_DATA)) geth_ipc_path_dir = stack.enter_context(common.tempdir()) geth_ipc_path = os.path.join(geth_ipc_path_dir, 'geth.ipc') geth_port = get_open_port() geth_binary = common.get_geth_binary() geth_proc = stack.enter_context(common.get_geth_process( # noqa: F841 geth_binary=geth_binary, datadir=datadir, genesis_file_path=genesis_file_path, ipc_path=geth_ipc_path, port=geth_port, networkid=str(common.GENESIS_DATA['config']['chainId']) )) common.wait_for_socket(geth_ipc_path) web3 = Web3(Web3.IPCProvider(geth_ipc_path)) chain_data = setup_chain_state(web3) static_data = { 'raw_txn_account': common.RAW_TXN_ACCOUNT, 'keyfile_pw': common.KEYFILE_PW, } pprint.pprint(merge(chain_data, static_data)) shutil.copytree(datadir, destination_dir)
def generate_go_ethereum_fixture(destination_dir): with contextlib.ExitStack() as stack: datadir = stack.enter_context(common.tempdir()) keystore_dir = os.path.join(datadir, 'keystore') common.ensure_path_exists(keystore_dir) keyfile_path = os.path.join(keystore_dir, common.KEYFILE_FILENAME) with open(keyfile_path, 'w') as keyfile: keyfile.write(common.KEYFILE_DATA) genesis_file_path = os.path.join(datadir, 'genesis.json') with open(genesis_file_path, 'w') as genesis_file: genesis_file.write(json.dumps(common.GENESIS_DATA)) geth_ipc_path_dir = stack.enter_context(common.tempdir()) geth_ipc_path = os.path.join(geth_ipc_path_dir, 'geth.ipc') geth_port = get_open_port() geth_binary = common.get_geth_binary() geth_proc = stack.enter_context( common.get_geth_process( # noqa: F841 geth_binary=geth_binary, datadir=datadir, genesis_file_path=genesis_file_path, ipc_path=geth_ipc_path, port=geth_port, networkid=str(common.GENESIS_DATA['config']['chainId']))) common.wait_for_socket(geth_ipc_path) web3 = Web3(Web3.IPCProvider(geth_ipc_path)) chain_data = setup_chain_state(web3) static_data = { 'raw_txn_account': common.RAW_TXN_ACCOUNT, 'keyfile_pw': common.KEYFILE_PW, } pprint.pprint(merge(chain_data, static_data)) shutil.make_archive(destination_dir, 'zip', datadir)
def ws_port(): return get_open_port()
def rpc_port(): return get_open_port()
def generate_parity_fixture(destination_dir): """ The parity fixture generation strategy is to start a geth client with existing fixtures copied into a temp datadir. Then a parity client is started is peered with the geth client. """ with contextlib.ExitStack() as stack: geth_datadir = stack.enter_context(common.tempdir()) geth_port = get_open_port() geth_ipc_path_dir = stack.enter_context(common.tempdir()) geth_ipc_path = os.path.join(geth_ipc_path_dir, 'geth.ipc') geth_keystore_dir = os.path.join(geth_datadir, 'keystore') common.ensure_path_exists(geth_keystore_dir) geth_keyfile_path = os.path.join(geth_keystore_dir, common.KEYFILE_FILENAME) with open(geth_keyfile_path, 'w') as keyfile: keyfile.write(common.KEYFILE_DATA) genesis_file_path = os.path.join(geth_datadir, 'genesis.json') with open(genesis_file_path, 'w') as genesis_file: genesis_file.write(json.dumps(common.GENESIS_DATA)) stack.enter_context( common.get_geth_process(common.get_geth_binary(), geth_datadir, genesis_file_path, geth_ipc_path, geth_port, str(CHAIN_CONFIG['params']['networkID']))) # set up fixtures common.wait_for_socket(geth_ipc_path) web3_geth = Web3(Web3.IPCProvider(geth_ipc_path)) chain_data = go_ethereum.setup_chain_state(web3_geth) fixture_block_count = web3_geth.eth.block_number datadir = stack.enter_context(common.tempdir()) keystore_dir = os.path.join(datadir, 'keys') os.makedirs(keystore_dir, exist_ok=True) parity_keyfile_path = os.path.join(keystore_dir, common.KEYFILE_FILENAME) with open(parity_keyfile_path, 'w') as keyfile: keyfile.write(common.KEYFILE_DATA) chain_config_file_path = os.path.join(datadir, 'chain_config.json') with open(chain_config_file_path, 'w') as chain_file: chain_file.write(json.dumps(CHAIN_CONFIG)) parity_ipc_path_dir = stack.enter_context(common.tempdir()) parity_ipc_path = os.path.join(parity_ipc_path_dir, 'jsonrpc.ipc') parity_port = get_open_port() parity_binary = get_parity_binary() parity_proc = stack.enter_context( get_parity_process( # noqa: F841 parity_binary=parity_binary, datadir=datadir, ipc_path=parity_ipc_path, keys_path=keystore_dir, chain_config_file_path=chain_config_file_path, parity_port=parity_port, )) common.wait_for_socket(parity_ipc_path) web3 = Web3(Web3.IPCProvider(parity_ipc_path)) time.sleep(10) connect_nodes(web3, web3_geth) time.sleep(10) wait_for_chain_sync(web3, fixture_block_count) static_data = { 'raw_txn_account': common.RAW_TXN_ACCOUNT, 'keyfile_pw': common.KEYFILE_PW, } pprint.pprint(merge(chain_data, static_data)) shutil.copytree(datadir, destination_dir) parity_proc = stack.enter_context( parity_export_blocks_process( # noqa: F841 parity_binary=parity_binary, datadir=destination_dir, chain_config_file_path=os.path.join(destination_dir, 'chain_config.json'), parity_port=parity_port, )) time.sleep(10) shutil.make_archive(destination_dir, 'zip', destination_dir) shutil.rmtree(destination_dir)
def generate_parity_fixture(destination_dir): """ The parity fixture generation strategy is to start a geth client with existing fixtures copied into a temp datadir. Then a parity client is started is peered with the geth client. """ with contextlib.ExitStack() as stack: geth_datadir = stack.enter_context(common.tempdir()) geth_port = get_open_port() geth_ipc_path_dir = stack.enter_context(common.tempdir()) geth_ipc_path = os.path.join(geth_ipc_path_dir, 'geth.ipc') geth_keystore_dir = os.path.join(geth_datadir, 'keystore') common.ensure_path_exists(geth_keystore_dir) geth_keyfile_path = os.path.join(geth_keystore_dir, common.KEYFILE_FILENAME) with open(geth_keyfile_path, 'w') as keyfile: keyfile.write(common.KEYFILE_DATA) genesis_file_path = os.path.join(geth_datadir, 'genesis.json') with open(genesis_file_path, 'w') as genesis_file: genesis_file.write(json.dumps(common.GENESIS_DATA)) stack.enter_context( common.get_geth_process( common.get_geth_binary(), geth_datadir, genesis_file_path, geth_ipc_path, geth_port, str(CHAIN_CONFIG['params']['networkID'])) ) # set up fixtures common.wait_for_socket(geth_ipc_path) web3_geth = Web3(Web3.IPCProvider(geth_ipc_path)) chain_data = go_ethereum.setup_chain_state(web3_geth) fixture_block_count = web3_geth.eth.blockNumber datadir = stack.enter_context(common.tempdir()) keystore_dir = os.path.join(datadir, 'keys') os.makedirs(keystore_dir, exist_ok=True) parity_keyfile_path = os.path.join(keystore_dir, common.KEYFILE_FILENAME) with open(parity_keyfile_path, 'w') as keyfile: keyfile.write(common.KEYFILE_DATA) chain_config_file_path = os.path.join(datadir, 'chain_config.json') with open(chain_config_file_path, 'w') as chain_file: chain_file.write(json.dumps(CHAIN_CONFIG)) parity_ipc_path_dir = stack.enter_context(common.tempdir()) parity_ipc_path = os.path.join(parity_ipc_path_dir, 'jsonrpc.ipc') parity_port = get_open_port() parity_binary = get_parity_binary() parity_proc = stack.enter_context(get_parity_process( # noqa: F841 parity_binary=parity_binary, datadir=datadir, ipc_path=parity_ipc_path, keys_path=keystore_dir, chain_config_file_path=chain_config_file_path, parity_port=parity_port, )) common.wait_for_socket(parity_ipc_path) web3 = Web3(Web3.IPCProvider(parity_ipc_path)) time.sleep(10) connect_nodes(web3, web3_geth) wait_for_chain_sync(web3, fixture_block_count) static_data = { 'raw_txn_account': common.RAW_TXN_ACCOUNT, 'keyfile_pw': common.KEYFILE_PW, } pprint.pprint(merge(chain_data, static_data)) shutil.copytree(datadir, destination_dir) parity_proc = stack.enter_context(parity_export_blocks_process( # noqa: F841 parity_binary=parity_binary, datadir=destination_dir, chain_config_file_path=os.path.join(destination_dir, 'chain_config.json'), parity_port=parity_port, ))
def eth_tester_provider(): port = get_open_port() provider = EthTestRPCProvider(port=port, request_kwargs={'timeout': 180}) return provider
def port(): yield get_open_port()
def open_port(): return get_open_port()