def validate_cli(cls, boot_info: BootInfo) -> None: try: get_tracking_database(get_networkdb_path(boot_info.trinity_config)) except BadDatabaseError as err: raise ValidationError( "Error loading network database. Trying removing database " f"with `remove-network-db` command:\n{err}") from err
def test_get_tracking_db_from_valid_existing(db_path): session_a = get_tracking_database(db_path) assert _check_schema_version(session_a) is True del session_a # ensure the session was persisted to disk session_b = _get_session(db_path) assert _check_schema_version(session_b) is True del session_b session_c = get_tracking_database(db_path) assert _check_schema_version(session_c) is True
async def test_sql_does_persist(tmpdir): db_path = Path(tmpdir.join("nodedb")) node = NodeFactory() connection_tracker_a = SQLiteConnectionTracker(get_tracking_database(db_path)) assert await connection_tracker_a.should_connect_to(node) is True connection_tracker_a.record_failure(node, HandshakeFailure()) assert await connection_tracker_a.should_connect_to(node) is False del connection_tracker_a # open a second instance connection_tracker_b = SQLiteConnectionTracker(get_tracking_database(db_path)) # the second instance remembers the failure assert await connection_tracker_b.should_connect_to(node) is False
def on_ready(self, manager_eventbus: EndpointAPI) -> None: if self.boot_info.args.disable_networkdb_component: self.logger.warning("Network Database disabled via CLI flag") # Allow this component to be disabled for extreme cases such as the # user swapping in an equivalent experimental version. return else: try: get_tracking_database(get_networkdb_path(self.boot_info.trinity_config)) except BadDatabaseError as err: manager_eventbus.broadcast_nowait(ShutdownRequest( "Error loading network database. Trying removing database " f"with `remove-network-db` command:\n{err}" )) else: self.start()
def __init__(self, genesis_hash: Hash32 = None, protocols: Tuple[str, ...] = None, protocol_versions: Tuple[int, ...] = None, network_id: int = None) -> None: session = get_tracking_database(Path(":memory:")) super().__init__(session, genesis_hash, protocols, protocol_versions, network_id)
def test_get_tracking_db_errors_bad_schema_version(db_path): session_a = get_tracking_database(db_path) assert _check_schema_version(session_a) is True # change version to unknown value schema_version = session_a.query(SchemaVersion).one() schema_version.version = 'unknown' session_a.add(schema_version) session_a.commit() del session_a # ensure the session was persisted to disk session_b = _get_session(db_path) assert _check_schema_version(session_b) is False del session_b with pytest.raises(BadDatabaseError): get_tracking_database(db_path)
async def test_sql_does_persist(tmpdir): db_path = Path(tmpdir.join("nodedb")) node = NodeFactory() connection_tracker_a = SQLiteConnectionTracker( get_tracking_database(db_path)) blacklisted_ids = await connection_tracker_a.get_blacklisted() assert node.id not in blacklisted_ids connection_tracker_a.record_failure(node, HandshakeFailure()) blacklisted_ids = await connection_tracker_a.get_blacklisted() assert node.id in blacklisted_ids del connection_tracker_a # open a second instance connection_tracker_b = SQLiteConnectionTracker( get_tracking_database(db_path)) blacklisted_ids = await connection_tracker_b.get_blacklisted() # the second instance remembers the failure assert node.id in blacklisted_ids
def _get_database_session(self) -> Session: if self._session is None: self._session = get_tracking_database(get_networkdb_path(self.boot_info.trinity_config)) return self._session
def _get_database_session(cls, boot_info: BootInfo) -> Session: if cls._session is None: cls._session = get_tracking_database( get_networkdb_path(boot_info.trinity_config)) return cls._session
def __init__(self) -> None: session = get_tracking_database(Path(":memory:")) super().__init__(session)
def test_get_tracking_db_from_empty(): session = get_tracking_database(Path(':memory:')) assert _check_schema_version(session) is True