it('retries on LEADER_NOT_AVAILABLE errors', async () => { const leaderNotAvailableError = new KafkaJSProtocolError({ message: 'LEADER_NOT_AVAILABLE', type: 'LEADER_NOT_AVAILABLE', code: 5, }) brokerPool.findConnectedBroker = jest.fn(() => brokerPool.seedBroker) jest.spyOn(brokerPool.seedBroker, 'metadata').mockImplementationOnce(() => { throw leaderNotAvailableError }) expect(brokerPool.metadata).toEqual(null) await brokerPool.refreshMetadata([topicName]) expect(brokerPool.metadata).not.toEqual(null) })
beforeEach(() => { jest.spyOn(global.console, 'info').mockImplementation(() => true) jest.spyOn(global.console, 'error').mockImplementation(() => true) jest.spyOn(global.console, 'warn').mockImplementation(() => true) jest.spyOn(global.console, 'log').mockImplementation(() => true) timeNow = new Date('2017-12-29T14:15:38.572Z') MockDate.set(timeNow.getTime()) logger = createLogger({ level: LEVELS.DEBUG, logCreator: LoggerConsole }) })
jest.spyOn(request, 'rejected') request.enforceRequestTimeout = true request.send()
it('cleans up unused brokers', async () => { await brokerPool.refreshMetadata([topicName]) const nodeId = 'fakebroker' const fakeBroker = new Broker({ connection: createConnection(), logger: newLogger(), }) jest.spyOn(fakeBroker, 'disconnect') brokerPool.brokers[nodeId] = fakeBroker expect(Object.keys(brokerPool.brokers)).toEqual(['0', '1', '2', 'fakebroker']) await brokerPool.refreshMetadata([topicName]) expect(fakeBroker.disconnect).toHaveBeenCalled() expect(Object.keys(brokerPool.brokers)).toEqual(['0', '1', '2']) })
await brokerPool.refreshMetadata([topicName]) lastBroker = brokerPool.brokers[Object.keys(brokerPool.brokers).length - 1] jest.spyOn(brokerPool, 'findConnectedBroker').mockImplementation(() => lastBroker) }) jest.spyOn(lastBroker, 'metadata').mockImplementationOnce(() => ({ ...brokerPool.metadata, brokers: brokerPool.metadata.brokers.map(broker => jest.spyOn(lastBroker, 'metadata').mockImplementationOnce(() => ({ ...brokerPool.metadata, brokers: brokerPool.metadata.brokers.map(broker => jest.spyOn(lastBroker, 'metadata').mockImplementationOnce(() => ({ ...brokerPool.metadata, brokers: brokerPool.metadata.brokers.map(broker =>
}) jest.spyOn(cluster, 'refreshMetadataIfNecessary')
it('consume messages', async () => { jest.spyOn(cluster, 'refreshMetadataIfNecessary')
jest.spyOn(requests.ApiVersions, 'protocol').mockImplementationOnce(() => () => { throw new KafkaJSProtocolError(createErrorFromCode(UNSUPPORTED_VERSION_CODE)) }) jest.spyOn(requests.ApiVersions, 'protocol').mockImplementation(() => () => { throw new KafkaJSProtocolError(createErrorFromCode(UNSUPPORTED_VERSION_CODE)) })
}) jest.spyOn(cluster, 'refreshMetadataIfNecessary')
jest.spyOn(cluster, 'refreshMetadataIfNecessary')
expect(brokerPool.seedBroker.isConnected()).toEqual(true) jest.spyOn(brokerPool.seedBroker, 'connect') await brokerPool.connect() expect(brokerPool.seedBroker.connect).not.toHaveBeenCalled() expect(brokerPool.seedBroker.isConnected()).toEqual(false) jest.spyOn(brokerPool.seedBroker, 'connect') await brokerPool.connect() expect(brokerPool.seedBroker.connect).not.toHaveBeenCalled()
logger: newLogger(), }) jest.spyOn(mockBroker, 'connect').mockImplementationOnce(() => { throw new KafkaJSConnectionError('Connection lost') })
}) jest.spyOn(cluster, 'refreshMetadataIfNecessary')
}) jest.spyOn(cluster, 'refreshMetadataIfNecessary')