Пример #1
0
 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
Пример #2
0
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
Пример #4
0
 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()
Пример #5
0
 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)
Пример #6
0
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
Пример #8
0
 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
Пример #9
0
 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
Пример #10
0
 def __init__(self) -> None:
     session = get_tracking_database(Path(":memory:"))
     super().__init__(session)
Пример #11
0
def test_get_tracking_db_from_empty():
    session = get_tracking_database(Path(':memory:'))
    assert _check_schema_version(session) is True