예제 #1
0
    def test_makeRequest(self):
        id1 = 54321
        id2 = 76543
        reactor = MemoryReactorClock()
        c = KafkaBrokerClient('testmakeRequest', reactor=reactor)
        request = KafkaCodec.encode_fetch_request('testmakeRequest', id1)
        d = c.makeRequest(id1, request)
        eb1 = Mock()
        self.assertIsInstance(d, Deferred)
        d.addErrback(eb1)
        # Make sure the request shows unsent
        self.assertFalse(c.requests[id1].sent)
        # Make sure a connection was attempted
        self.assertTrue(c.connector)
        c.connector.factory = c  # MemoryReactor doesn't make this connection.
        # Bring up the "connection"...
        c.buildProtocol(None)
        # Replace the created proto with a mock
        c.proto = Mock()
        # Advance the clock so sendQueued() will be called
        reactor.advance(1.0)
        # The proto should have be asked to sendString the request
        c.proto.sendString.assert_called_once_with(request)

        # now call with 'expectReply=False'
        c.proto = Mock()
        request = KafkaCodec.encode_fetch_request('testmakeRequest2', id2)
        d2 = c.makeRequest(id2, request, expectResponse=False)
        self.assertIsInstance(d2, Deferred)
        c.proto.sendString.assert_called_once_with(request)

        # Now close the KafkaBrokerClient
        c.close()
        fail1 = eb1.call_args[0][0]  # The actual failure sent to errback
        self.assertTrue(fail1.check(CancelledError))
예제 #2
0
    def test_makeRequest(self):
        id1 = 54321
        id2 = 76543
        reactor = MemoryReactorClock()
        c = KafkaBrokerClient('testmakeRequest', reactor=reactor)
        request = KafkaCodec.encode_fetch_request('testmakeRequest', id1)
        d = c.makeRequest(id1, request)
        eb1 = Mock()
        self.assertIsInstance(d, Deferred)
        d.addErrback(eb1)
        # Make sure the request shows unsent
        self.assertFalse(c.requests[id1].sent)
        # Make sure a connection was attempted
        self.assertTrue(c.connector)
        c.connector.factory = c  # MemoryReactor doesn't make this connection.
        # Bring up the "connection"...
        c.buildProtocol(None)
        # Replace the created proto with a mock
        c.proto = Mock()
        # Advance the clock so sendQueued() will be called
        reactor.advance(1.0)
        # The proto should have be asked to sendString the request
        c.proto.sendString.assert_called_once_with(request)

        # now call with 'expectReply=False'
        c.proto = Mock()
        request = KafkaCodec.encode_fetch_request('testmakeRequest2', id2)
        d2 = c.makeRequest(id2, request, expectResponse=False)
        self.assertIsInstance(d2, Deferred)
        c.proto.sendString.assert_called_once_with(request)

        # Now close the KafkaBrokerClient
        c.close()
        fail1 = eb1.call_args[0][0]  # The actual failure sent to errback
        self.assertTrue(fail1.check(CancelledError))
예제 #3
0
 def test_closeNotifyDuringConnect(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotify', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     reactor.advance(1.0)
     self.assertFalse(c.clock.getDelayedCalls())
     c.close()
     c.clientConnectionFailed(c.connector, Failure(UserError()))
     reactor.advance(1.0)
     self.assertFalse(c.clock.getDelayedCalls())
예제 #4
0
 def test_closeNotifyDuringConnect(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotify', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     reactor.advance(1.0)
     self.assertFalse(c.clock.getDelayedCalls())
     c.close()
     c.clientConnectionFailed(c.connector, Failure(UserError()))
     reactor.advance(1.0)
     self.assertFalse(c.clock.getDelayedCalls())
예제 #5
0
 def test_closeNotify(self):
     from twisted.internet.error import ConnectionDone
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotify', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     c.buildProtocol(None)
     reactor.advance(1.0)
     self.assertFalse(c.clock.getDelayedCalls())
     c.continueTrying = False
     c.close()
     c.clientConnectionLost(c.connector, Failure(ConnectionDone()))
     reactor.advance(1.0)
     self.assertFalse(c.clock.getDelayedCalls())
예제 #6
0
 def test_closeNotify(self):
     from twisted.internet.error import ConnectionDone
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotify', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     c.buildProtocol(None)
     reactor.advance(1.0)
     self.assertFalse(c.clock.getDelayedCalls())
     c.continueTrying = False
     c.close()
     c.clientConnectionLost(c.connector, Failure(ConnectionDone()))
     reactor.advance(1.0)
     self.assertFalse(c.clock.getDelayedCalls())
예제 #7
0
 def test_closeNotConnected(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotConnected', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     d = c.close()
     self.assertIsInstance(d, Deferred)
예제 #8
0
 def test_makeRequest_after_close(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotConnected', reactor=reactor)
     d = c.close()
     self.assertIsInstance(d, Deferred)
     d2 = c.makeRequest(1, 'fake request')
     self.successResultOf(self.failUnlessFailure(d2, ClientError))
예제 #9
0
 def test_closeNotConnected(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotConnected', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     d = c.close()
     self.assertIsInstance(d, Deferred)
예제 #10
0
 def test_makeRequest_after_close(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotConnected', reactor=reactor)
     d = c.close()
     self.assertIsInstance(d, Deferred)
     d2 = c.makeRequest(1, 'fake request')
     self.successResultOf(
         self.failUnlessFailure(d2, ClientError))
예제 #11
0
 def test_close_disconnected(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_close', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     c.connector.state = 'disconnected'  # set connector's state for test
     dd = c.close()
     self.assertIsInstance(dd, Deferred)
     r = self.successResultOf(dd)
     self.assertIs(r, None)
예제 #12
0
 def test_close_disconnected(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_close', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     c.connector.state = 'disconnected'  # set connector's state for test
     dd = c.close()
     self.assertIsInstance(dd, Deferred)
     r = self.successResultOf(dd)
     self.assertIs(r, None)
예제 #13
0
    def test_makeRequest_fails(self):
        id1 = 15432
        reactor = MemoryReactorClock()
        c = KafkaBrokerClient('testmakeRequest', reactor=reactor)
        request = KafkaCodec.encode_fetch_request('testmakeRequest', id1)
        d = c.makeRequest(id1, request)
        eb1 = Mock()
        self.assertIsInstance(d, Deferred)
        d.addErrback(eb1)
        c.connector.factory = c  # MemoryReactor doesn't make this connection.
        # Bring up the "connection"...
        c.buildProtocol(None)
        # Replace the created proto with a mock
        c.proto = Mock()
        c.proto.sendString.side_effect = StringTooLongError(
            "Tried to send too many bytes")
        # Advance the clock so sendQueued() will be called
        reactor.advance(1.0)
        # The proto should have be asked to sendString the request
        c.proto.sendString.assert_called_once_with(request)

        # Now close the KafkaBrokerClient
        c.close()
예제 #14
0
    def test_makeRequest_fails(self):
        id1 = 15432
        reactor = MemoryReactorClock()
        c = KafkaBrokerClient('testmakeRequest', reactor=reactor)
        request = KafkaCodec.encode_fetch_request('testmakeRequest', id1)
        d = c.makeRequest(id1, request)
        eb1 = Mock()
        self.assertIsInstance(d, Deferred)
        d.addErrback(eb1)
        c.connector.factory = c  # MemoryReactor doesn't make this connection.
        # Bring up the "connection"...
        c.buildProtocol(None)
        # Replace the created proto with a mock
        c.proto = Mock()
        c.proto.sendString.side_effect = StringTooLongError(
            "Tried to send too many bytes")
        # Advance the clock so sendQueued() will be called
        reactor.advance(1.0)
        # The proto should have be asked to sendString the request
        c.proto.sendString.assert_called_once_with(request)

        # Now close the KafkaBrokerClient
        c.close()
예제 #15
0
 def test_close(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_close', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     c.connector.state = 'connected'  # set the connector to connected state
     dd = c.close()
     self.assertIsInstance(dd, Deferred)
     self.assertNoResult(dd)
     f = Failure(ConnectionDone('test_close'))
     c.clientConnectionLost(c.connector, f)
     self.assertNoResult(dd)
     # Advance the clock so the notify() call fires
     reactor.advance(0.1)
     r = self.successResultOf(dd)
     self.assertIs(r, None)
예제 #16
0
 def test_close(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_close', reactor=reactor)
     c._connect()  # Force a connection attempt
     c.connector.factory = c  # MemoryReactor doesn't make this connection.
     c.connector.state = 'connected'  # set the connector to connected state
     dd = c.close()
     self.assertIsInstance(dd, Deferred)
     self.assertNoResult(dd)
     f = Failure(ConnectionDone('test_close'))
     c.clientConnectionLost(c.connector, f)
     self.assertNoResult(dd)
     # Advance the clock so the notify() call fires
     reactor.advance(0.1)
     r = self.successResultOf(dd)
     self.assertIs(r, None)
예제 #17
0
 def test_close_no_connect(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotConnected', reactor=reactor)
     d = c.close()
     self.assertIsInstance(d, Deferred)
예제 #18
0
 def test_close_no_connect(self):
     reactor = MemoryReactorClock()
     c = KafkaBrokerClient('test_closeNotConnected', reactor=reactor)
     d = c.close()
     self.assertIsInstance(d, Deferred)