def __init__(self, hostname, reactor=None, **kwargs): """ Args: hostname : The hostname for the server. """ if not reactor: from twisted.internet import reactor self._reactor = reactor self.hostname = hostname self._building = {} self._listening_services = [] self.start_time = None self.clock = Clock(reactor) self.distributor = Distributor() self.ratelimiter = Ratelimiter() self.admin_redaction_ratelimiter = Ratelimiter() self.registration_ratelimiter = Ratelimiter() self.datastores = None # Other kwargs are explicit dependencies for depname in kwargs: setattr(self, depname, kwargs[depname])
def __init__(self, hostname: str, config: HomeServerConfig, reactor=None, **kwargs): """ Args: hostname : The hostname for the server. config: The full config for the homeserver. """ if not reactor: from twisted.internet import reactor self._reactor = reactor self.hostname = hostname self.config = config self._building = {} self._listening_services = [] self.start_time = None self._instance_id = random_string(5) self._instance_name = config.worker_name or "master" self.clock = Clock(reactor) self.distributor = Distributor() self.ratelimiter = Ratelimiter() self.admin_redaction_ratelimiter = Ratelimiter() self.registration_ratelimiter = Ratelimiter() self.datastores = None # Other kwargs are explicit dependencies for depname in kwargs: setattr(self, depname, kwargs[depname])
def __init__(self, hostname, **kwargs): """ Args: hostname : The hostname for the server. """ self.hostname = hostname self._building = {} self.clock = Clock() self.distributor = Distributor() self.ratelimiter = Ratelimiter() # Other kwargs are explicit dependencies for depname in kwargs: setattr(self, depname, kwargs[depname])
def __init__(self, hostname, reactor=None, **kwargs): """ Args: hostname : The hostname for the server. """ if not reactor: from twisted.internet import reactor self._reactor = reactor self.hostname = hostname self._building = {} self.clock = Clock(reactor) self.distributor = Distributor() self.ratelimiter = Ratelimiter() # Other kwargs are explicit dependencies for depname in kwargs: setattr(self, depname, kwargs[depname])
def __init__(self, hostname: str, config: HomeServerConfig, reactor=None, **kwargs): """ Args: hostname : The hostname for the server. config: The full config for the homeserver. """ if not reactor: from twisted.internet import reactor as _reactor reactor = _reactor self._reactor = reactor self.hostname = hostname # the key we use to sign events and requests self.signing_key = config.key.signing_key[0] self.config = config self._listening_services = [] # type: List[twisted.internet.tcp.Port] self.start_time = None # type: Optional[int] self._instance_id = random_string(5) self._instance_name = config.worker_name or "master" self.clock = Clock(reactor) self.distributor = Distributor() self.registration_ratelimiter = Ratelimiter( clock=self.clock, rate_hz=config.rc_registration.per_second, burst_count=config.rc_registration.burst_count, ) self.datastores = None # type: Optional[Databases] # Other kwargs are explicit dependencies for depname in kwargs: setattr(self, depname, kwargs[depname])
def setUp(self): self.dist = Distributor()
class DistributorTestCase(unittest.TestCase): def setUp(self): self.dist = Distributor() def test_signal_dispatch(self): self.dist.declare("alert") observer = Mock() self.dist.observe("alert", observer) self.dist.fire("alert", 1, 2, 3) observer.assert_called_with(1, 2, 3) def test_signal_catch(self): self.dist.declare("alarm") observers = [Mock() for i in (1, 2)] for o in observers: self.dist.observe("alarm", o) observers[0].side_effect = Exception("Awoogah!") with patch("synapse.util.distributor.logger", spec=["warning"]) as mock_logger: self.dist.fire("alarm", "Go") observers[0].assert_called_once_with("Go") observers[1].assert_called_once_with("Go") self.assertEquals(mock_logger.warning.call_count, 1) self.assertIsInstance(mock_logger.warning.call_args[0][0], str) def test_signal_prereg(self): observer = Mock() self.dist.observe("flare", observer) self.dist.declare("flare") self.dist.fire("flare", 4, 5) observer.assert_called_with(4, 5) def test_signal_undeclared(self): def code(): self.dist.fire("notification") self.assertRaises(KeyError, code)
def get_distributor(self) -> Distributor: return Distributor()
def build_distributor(self): return Distributor()
class DistributorTestCase(unittest.TestCase): def setUp(self): self.dist = Distributor() @defer.inlineCallbacks def test_signal_dispatch(self): self.dist.declare("alert") observer = Mock() self.dist.observe("alert", observer) d = self.dist.fire("alert", 1, 2, 3) yield d self.assertTrue(d.called) observer.assert_called_with(1, 2, 3) @defer.inlineCallbacks def test_signal_dispatch_deferred(self): self.dist.declare("whine") d_inner = defer.Deferred() def observer(): return d_inner self.dist.observe("whine", observer) d_outer = self.dist.fire("whine") self.assertFalse(d_outer.called) d_inner.callback(None) yield d_outer self.assertTrue(d_outer.called) @defer.inlineCallbacks def test_signal_catch(self): self.dist.declare("alarm") observers = [Mock() for i in (1, 2)] for o in observers: self.dist.observe("alarm", o) observers[0].side_effect = Exception("Awoogah!") with patch("synapse.util.distributor.logger", spec=["warning"]) as mock_logger: d = self.dist.fire("alarm", "Go") yield d self.assertTrue(d.called) observers[0].assert_called_once_with("Go") observers[1].assert_called_once_with("Go") self.assertEquals(mock_logger.warning.call_count, 1) self.assertIsInstance(mock_logger.warning.call_args[0][0], str) @defer.inlineCallbacks def test_signal_catch_no_suppress(self): # Gut-wrenching self.dist.suppress_failures = False self.dist.declare("whail") class MyException(Exception): pass @defer.inlineCallbacks def observer(): raise MyException("Oopsie") self.dist.observe("whail", observer) d = self.dist.fire("whail") yield self.assertFailure(d, MyException) self.dist.suppress_failures = True @defer.inlineCallbacks def test_signal_prereg(self): observer = Mock() self.dist.observe("flare", observer) self.dist.declare("flare") yield self.dist.fire("flare", 4, 5) observer.assert_called_with(4, 5) def test_signal_undeclared(self): def code(): self.dist.fire("notification") self.assertRaises(KeyError, code)
class DistributorTestCase(unittest.TestCase): def setUp(self): self.dist = Distributor() @defer.inlineCallbacks def test_signal_dispatch(self): self.dist.declare("alert") observer = Mock() self.dist.observe("alert", observer) d = self.dist.fire("alert", 1, 2, 3) yield d self.assertTrue(d.called) observer.assert_called_with(1, 2, 3) @defer.inlineCallbacks def test_signal_dispatch_deferred(self): self.dist.declare("whine") d_inner = defer.Deferred() def observer(): return d_inner self.dist.observe("whine", observer) d_outer = self.dist.fire("whine") self.assertFalse(d_outer.called) d_inner.callback(None) yield d_outer self.assertTrue(d_outer.called) @defer.inlineCallbacks def test_signal_catch(self): self.dist.declare("alarm") observers = [Mock() for i in 1, 2] for o in observers: self.dist.observe("alarm", o) observers[0].side_effect = Exception("Awoogah!") with patch( "synapse.util.distributor.logger", spec=["warning"] ) as mock_logger: d = self.dist.fire("alarm", "Go") yield d self.assertTrue(d.called) observers[0].assert_called_once_with("Go") observers[1].assert_called_once_with("Go") self.assertEquals(mock_logger.warning.call_count, 1) self.assertIsInstance( mock_logger.warning.call_args[0][0], str ) @defer.inlineCallbacks def test_signal_catch_no_suppress(self): # Gut-wrenching self.dist.suppress_failures = False self.dist.declare("whail") class MyException(Exception): pass @defer.inlineCallbacks def observer(): yield run_on_reactor() raise MyException("Oopsie") self.dist.observe("whail", observer) d = self.dist.fire("whail") yield self.assertFailure(d, MyException) self.dist.suppress_failures = True @defer.inlineCallbacks def test_signal_prereg(self): observer = Mock() self.dist.observe("flare", observer) self.dist.declare("flare") yield self.dist.fire("flare", 4, 5) observer.assert_called_with(4, 5) def test_signal_undeclared(self): def code(): self.dist.fire("notification") self.assertRaises(KeyError, code)