示例#1
0
    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')])
示例#2
0
    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')])
示例#3
0
    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()])
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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()]
        )
示例#7
0
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)