def test_delete_calls_delete_on_protocol(self): protocol = pretend.stub( delete=pretend.call_recorder(lambda key: succeed(True)), transport=pretend.stub(loseConnection=lambda: None)) endpoint = pretend.stub(connect=lambda factory: succeed(protocol)) cache = MemcachedCache(endpoint) d = cache.delete('foo') self.successResultOf(d) self.assertEqual(protocol.delete.calls, [pretend.call('foo')])
def test_delete_calls_delete_on_protocol(self): protocol = pretend.stub( delete=pretend.call_recorder(lambda key: succeed(True)), transport=pretend.stub(loseConnection=lambda: None) ) endpoint = pretend.stub( connect=lambda factory: succeed(protocol) ) cache = MemcachedCache(endpoint) d = cache.delete('foo') self.successResultOf(d) self.assertEqual(protocol.delete.calls, [pretend.call('foo')])
def test_delete_loses_connection_after_delete_fires(self): d = Deferred() protocol = pretend.stub( delete=lambda key: d, transport=pretend.stub( loseConnection=pretend.call_recorder(lambda: None))) endpoint = pretend.stub(connect=lambda factory: succeed(protocol)) cache = MemcachedCache(endpoint) d2 = cache.delete('foo') self.assertNoResult(d2) self.assertEqual(protocol.transport.loseConnection.calls, []) d.callback(True) self.assertEqual(protocol.transport.loseConnection.calls, [pretend.call()])
def test_delete_connects_to_endpoint(self): protocol = pretend.stub( delete=lambda key: succeed(True), transport=pretend.stub(loseConnection=lambda: None)) endpoint = pretend.stub( connect=pretend.call_recorder(lambda factory: succeed(protocol))) cache = MemcachedCache(endpoint) d = cache.delete('foo') self.successResultOf(d) self.assertEqual(len(endpoint.connect.calls), 1) factory = endpoint.connect.calls[0].args[0] self.assertIsInstance(factory, Factory) self.assertIs(factory.protocol, MemCacheProtocol)
def test_delete_connects_to_endpoint(self): protocol = pretend.stub( delete=lambda key: succeed(True), transport=pretend.stub(loseConnection=lambda: None) ) endpoint = pretend.stub( connect=pretend.call_recorder(lambda factory: succeed(protocol)) ) cache = MemcachedCache(endpoint) d = cache.delete('foo') self.successResultOf(d) self.assertEqual(len(endpoint.connect.calls), 1) factory = endpoint.connect.calls[0].args[0] self.assertIsInstance(factory, Factory) self.assertIs(factory.protocol, MemCacheProtocol)
def test_delete_loses_connection_after_delete_fires(self): d = Deferred() protocol = pretend.stub( delete=lambda key: d, transport=pretend.stub( loseConnection=pretend.call_recorder(lambda: None) ) ) endpoint = pretend.stub( connect=lambda factory: succeed(protocol) ) cache = MemcachedCache(endpoint) d2 = cache.delete('foo') self.assertNoResult(d2) self.assertEqual(protocol.transport.loseConnection.calls, []) d.callback(True) self.assertEqual( protocol.transport.loseConnection.calls, [pretend.call()] )
def makeService(options): from twisted.internet import task as cooperator from twisted.internet import reactor from twisted.python import log with open(options['config']) as f: data = f.read() config = yaml.safe_load(data) key_maker = FormattingKeyMaker(data["on_update"]) cache_backend = MultiCache([ MemcachedCache(TCP4ClientEndpoint(reactor, cache, DEFAULT_PORT)) for cache in config['caches'] ]) driver = Driver(key_maker, cache_backend, log) connection = BinLogStreamReader(connection_settings=config['database']) listener = MySQLDatabaseListener(reactor, connection, driver, log) return DatabaseListenerService(cooperator, listener, log)