Exemple #1
0
def test_get_extended_debug_logger_if_other_logger_in_cache():
    path = "testing.{0}".format(uuid.uuid4())
    normal_logger = get_logger(path)
    assert not isinstance(normal_logger, ExtendedDebugLogger)
    assert normal_logger.name == path

    extended_logger = get_extended_debug_logger(path)
    assert isinstance(extended_logger, ExtendedDebugLogger)
    assert extended_logger.name == path
def test_extended_debug_logger_pickling():
    name = "testing.{0}".format(uuid.uuid4())
    extended_logger = get_extended_debug_logger(name)
    pickled = pickle.dumps(extended_logger)

    # logging.Logger.__reduce__() returns (getLogger, name), which could give us a regular Logger
    # instance after pickling/unpickling an ExtendedDebugLogger (e.g. when crossing process
    # boundaries since the other process wouldn't have an ExtendedDebugLogger with that name in
    # the logging module's cache). This test ensures an unpickled ExtendedDebugLogger is still an
    # ExtendedDebugLogger even when it's not in the logging's module cache.
    del logging.Logger.manager.loggerDict[name]
    unpickled_logger = pickle.loads(pickled)
    assert isinstance(unpickled_logger, ExtendedDebugLogger)
Exemple #3
0
class BaseConnectionTracker(ABC):
    """
    Base API which defines the interface that the peer pool uses to record
    information about connection failures when attempting to connect to peers
    """
    logger = get_extended_debug_logger(
        'p2p.tracking.connection.ConnectionTracker')

    def record_failure(self, remote: NodeAPI, failure: BaseP2PError) -> None:
        timeout_seconds = get_timeout_for_failure(failure)
        failure_name = type(failure).__name__

        return self.record_blacklist(remote, timeout_seconds, failure_name)

    @abstractmethod
    def record_blacklist(self, remote: NodeAPI, timeout_seconds: int,
                         reason: str) -> None:
        ...

    @abstractmethod
    async def get_blacklisted(self) -> Tuple[NodeID, ...]:
        ...
Exemple #4
0
)
from trinity.protocol.les.api import LESV1API, LESV2API

from trinity.components.builtin.network_db.connection.tracker import ConnectionTrackerClient
from trinity.components.builtin.network_db.eth1_peer_db.tracker import (
    BaseEth1PeerTracker,
    EventBusEth1PeerTracker,
    NoopEth1PeerTracker,
)

from .boot import DAOCheckBootManager
from .context import ChainContext
from .events import (
    DisconnectPeerEvent, )

p2p_logger = get_extended_debug_logger('p2p')


class BaseChainPeer(BasePeer):
    boot_manager_class = DAOCheckBootManager
    context: ChainContext

    @cached_property
    def chain_api(self) -> Union[ETHAPI, ETHV63API, LESV1API, LESV2API]:
        return choose_eth_or_les_api(self.connection)

    @cached_property
    def head_info(self) -> HeadInfoAPI:
        return self.connection.get_logic(HeadInfo.name, HeadInfo)

    @cached_property
Exemple #5
0
def test_get_extended_debug_logger():
    path = "testing.{0}".format(uuid.uuid4())
    logger = get_extended_debug_logger(path)
    assert isinstance(logger, ExtendedDebugLogger)
    assert logger.name == path