def test_check_before_activate_with_notifications(lcs1, lcs2):
    ret = LocalConventionState(
        ActorAddress(1), {
            'Admin Port': 1,
            'Convention Address.IPv4': ActorAddress(1),
            'popsicle': 'cold'
        }, StatsManager(), lambda x: ActorAddress(1))
    # Activate the system
    verify_io(ret.setup_convention(), [])

    notifyAddr = ActorAddress('notify')

    lcs1.add_notification_handler(notifyAddr)

    ret = LocalConventionState(
        ActorAddress(2), {
            'Admin Port': 2,
            'Convention Address.IPv4': ActorAddress(1),
            'apple pie': 'hot'
        }, StatsManager(), lambda x: ActorAddress(1))
    ret._expected_setup_convreg = ConventionRegister(ActorAddress(2),
                                                     ret.capabilities,
                                                     firstTime=True,
                                                     preRegister=False)

    verify_io(ret.check_convention(), [])

    # Activate the system
    verify_io(ret.setup_convention(), [
        (ConventionRegister, lambda r, a:
         (r == ret._expected_setup_convreg and a == ActorAddress(1))),
        (LogAggregator, None),
    ])
def lcs1():
    ret = LocalConventionState(
        ActorAddress(1), {
            'Admin Port': 1,
            'Convention Address.IPv4': ActorAddress(1),
            'popsicle': 'cold'
        }, StatsManager(), lambda x: ActorAddress(1))
    # Activate the system
    verify_io(ret.setup_convention(activation=True), [])
    return ret
Beispiel #3
0
 def __init__(self, adminAddr, transport):
     self._adminAddr   = adminAddr
     self.transport    = transport
     self._addrManager = ActorAddressManager(adminAddr, self.transport.myAddress)
     self.transport.setAddressManager(self._addrManager)
     self._pendingTransmits = PendingTransmits(self._addrManager)
     self._awaitingAddressUpdate = AddressWaitTransmits()
     self._receiveQueue = []  # array of ReceiveMessage to be processed
     self._children = []  # array of Addresses of children of this Actor/Admin
     self._governer = RateThrottle(RATE_THROTTLE)
     self._sCBStats = StatsManager()
def solo_lcs2():
    # Like lcs2, but does not specify a convention address; intended
    # for use with pre-registration (e.g. to simulate TXOnly
    # environments.
    ret = LocalConventionState(ActorAddress(2), {
        'Admin Port': 2,
        'apple pie': 'hot'
    }, StatsManager(), lambda x: None)
    # Activate the system
    assert [] == ret.setup_convention()
    return ret
Beispiel #5
0
 def __init__(self, adminAddr, transport):
     self._adminAddr = adminAddr
     self.transport = transport
     self._addrManager = ActorAddressManager(adminAddr,
                                             self.transport.myAddress)
     self.transport.setAddressManager(self._addrManager)
     self._finalTransmitPending = {
     }  # key = target ActorAddress, value=None or the last pending Intent
     self._awaitingAddressUpdate = {
     }  # key = actorAddress waited on (usually local), value=array of transmit Intents
     self._receiveQueue = []  # array of ReceiveMessage to be processed
     self._children = [
     ]  # array of Addresses of children of this Actor/Admin
     self._governer = RateThrottle(RATE_THROTTLE)
     self._sCBStats = StatsManager()
def lcs2():
    ret = LocalConventionState(
        ActorAddress(2), {
            'Admin Port': 2,
            'Convention Address.IPv4': ActorAddress(1),
            'apple pie': 'hot'
        }, StatsManager(), lambda x: ActorAddress(1))
    ret._expected_setup_convreg = ConventionRegister(ActorAddress(2),
                                                     ret.capabilities,
                                                     firstTime=True,
                                                     preRegister=False)
    # Activate the system
    verify_io(ret.setup_convention(activation=True), [
        (ConventionRegister, lambda r, a:
         (r == ret._expected_setup_convreg and a == ActorAddress(1))),
        (LogAggregator, None),
    ])
    # KWQ: above is a HysteresisSend
    return ret