def test_project_directory_properties(project_dir): project = Project() contracts_dir = get_contracts_dir(project_dir) assert is_same_path(project.contracts_dir, contracts_dir) build_dir = get_build_dir(project_dir) assert is_same_path(project.build_dir, build_dir) compiled_contracts_file_path = get_compiled_contracts_file_path( project_dir) assert is_same_path(project.compiled_contracts_file_path, compiled_contracts_file_path) blockchains_dir = get_blockchains_dir(project_dir) assert is_same_path(project.blockchains_dir, blockchains_dir) data_dir = get_data_dir(project_dir, 'some-test-chain-name') assert is_same_path( project.get_blockchain_data_dir('some-test-chain-name'), data_dir) chaindata_dir = get_chaindata_dir(data_dir) assert is_same_path( project.get_blockchain_chaindata_dir('some-test-chain-name'), chaindata_dir) geth_ipc_path = get_geth_ipc_path(data_dir) assert is_same_path( project.get_blockchain_ipc_path('some-test-chain-name'), geth_ipc_path)
def start_private_geth(chain_name, project_dir, host, port, verbosity=5, p2p_port=30303): """Start a local geth process that mines isolated private testnet.""" blockchains_dir = get_blockchains_dir(project_dir) os.makedirs(os.path.join(project_dir, "logs"), exist_ok=True) overrides = { "rpc_port": str(port), "rpc_addr": host, "ipc_disable": "true", "verbosity": str(verbosity), # https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options "port": str(p2p_port) } geth = LoggedDevGethProcess( chain_name=chain_name, project_dir=project_dir, blockchains_dir=blockchains_dir, overrides=overrides ) logger.info("Starting geth") geth.start() if geth.is_mining: logger.info("Waiting for DAG") geth.wait_for_dag(600) if geth.ipc_enabled: logger.info("Waiting for IPC") geth.wait_for_ipc(30) if geth.rpc_enabled: logger.info("Waiting for RPC") geth.wait_for_rpc(30) return geth
def start_geth(self): geth_proc = DevGethProcess( chain_name=current_app.config.get('FLASKWEB3_CHAIN_NAME'), base_dir=get_blockchains_dir( current_app.config.get('FLASKWEB3_PROJECTDIR'))) geth_proc.start() return geth_proc
def get_geth_process_instance(self): tmp_project_dir = self.stack.enter_context(tempdir()) blockchains_dir = get_blockchains_dir(tmp_project_dir) return LoggedDevGethProcess( project_dir=self.project.project_dir, blockchains_dir=blockchains_dir, chain_name=self.chain_name, overrides=self.geth_kwargs, )
def project_dir(tmpdir, monkeypatch): from populus.utils.filesystem import ( ensure_path_exists, get_contracts_dir, get_build_dir, get_blockchains_dir, ) _project_dir = str(tmpdir.mkdir("project-dir")) # setup project directories ensure_path_exists(get_contracts_dir(_project_dir)) ensure_path_exists(get_build_dir(_project_dir)) ensure_path_exists(get_blockchains_dir(_project_dir)) monkeypatch.chdir(_project_dir) monkeypatch.syspath_prepend(_project_dir) return _project_dir
def test_project_directory_properties(project_dir): project = Project() contracts_dir = get_contracts_dir(project_dir) assert is_same_path(project.contracts_dir, contracts_dir) build_dir = get_build_dir(project_dir) assert is_same_path(project.build_dir, build_dir) compiled_contracts_file_path = get_compiled_contracts_file_path(project_dir) assert is_same_path(project.compiled_contracts_file_path, compiled_contracts_file_path) blockchains_dir = get_blockchains_dir(project_dir) assert is_same_path(project.blockchains_dir, blockchains_dir) data_dir = get_data_dir(project_dir, "some-test-chain-name") assert is_same_path(project.get_blockchain_data_dir("some-test-chain-name"), data_dir) chaindata_dir = get_chaindata_dir(data_dir) assert is_same_path(project.get_blockchain_chaindata_dir("some-test-chain-name"), chaindata_dir) geth_ipc_path = get_geth_ipc_path(data_dir) assert is_same_path(project.get_blockchain_ipc_path("some-test-chain-name"), geth_ipc_path)
def blockchains_dir(self): return get_blockchains_dir(self.project_dir)