@Test public void batchDeliveryAddObjectDelegatesToProvidedBatchOperationsObjectApi() { // given Builder batchDeliveryBuilder = createTestBatchDeliveryBuilder(); ClientObjectFactory clientObjectFactory = spy(createTestObjectFactoryBuilder().build()); BatchOperations batchOperations = spy(clientObjectFactory.createBatchOperations()); when(clientObjectFactory.createBatchOperations()).thenReturn(batchOperations); batchDeliveryBuilder.withClientObjectFactory(clientObjectFactory); BatchDelivery batchDelivery = batchDeliveryBuilder.build(); String indexName = UUID.randomUUID().toString(); String logObject = UUID.randomUUID().toString(); // when batchDelivery.add(indexName, logObject); // then verify(batchOperations).createBatchItem(eq(indexName), eq(logObject)); }
@Test public void batchDeliveryAddItemSourceDelegatesToProvidedBatchOperationsItemSourceApi() { // given Builder batchDeliveryBuilder = createTestBatchDeliveryBuilder(); ClientObjectFactory clientObjectFactory = spy(createTestObjectFactoryBuilder().build()); BatchOperations batchOperations = spy(clientObjectFactory.createBatchOperations()); when(clientObjectFactory.createBatchOperations()).thenReturn(batchOperations); batchDeliveryBuilder.withClientObjectFactory(clientObjectFactory); BatchDelivery batchDelivery = batchDeliveryBuilder.build(); String indexName = UUID.randomUUID().toString(); ItemSource itemSource = mock(ItemSource.class); // when batchDelivery.add(indexName, itemSource); // then verify(batchOperations).createBatchItem(eq(indexName), eq(itemSource)); }
@Test public void throwsExceptionWhenNoServiceWasFound() { // given BatchEmitterServiceProvider serviceProvider = spy(new BatchEmitterServiceProvider()); Iterator iterator = mock(Iterator.class); when(iterator.hasNext()).thenReturn(false); when(mockServiceLoader.iterator()).thenReturn(iterator); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("No compatible BatchEmitter implementations"); // when serviceProvider.createInstance(TEST_BATCH_SIZE, LARGE_TEST_INTERVAL, createTestObjectFactoryBuilder().build(), createTestFailoverPolicy("testRefAppender", mock(Configuration.class)) ); }
@Test public void lifecycleStartStartsBatchEmitter() { // given BatchEmitter batchEmitter = mock(BatchEmitter.class); BatchEmitterServiceProvider batchEmitterFactory = new TestBatchEmitterFactory() { @Override public BatchEmitter createInstance(int batchSize, int deliveryInterval, ClientObjectFactory clientObjectFactory, FailoverPolicy failoverPolicy) { return batchEmitter; } }; TestAsyncBatchDelivery batchDelivery = spy(new TestAsyncBatchDelivery( TEST_BATCH_SIZE, TEST_DELIVERY_INTERVAL, createTestObjectFactoryBuilder().build(), new NoopFailoverPolicy(), null) { @Override protected BatchEmitterServiceProvider createBatchEmitterServiceProvider() { return batchEmitterFactory; } }); // when batchDelivery.start(); // then verify(batchEmitter).start(); }
@Test public void deliveryAddsBatchItemToBatchEmitter() { // given TestHttpObjectFactory objectFactory = createTestObjectFactoryBuilder().build(); TestBatchEmitterFactory batchEmitterFactory = spy(new TestBatchEmitterFactory()); BatchEmitter emitter = batchEmitterFactory.createInstance(TEST_BATCH_SIZE, TEST_DELIVERY_INTERVAL, objectFactory, new NoopFailoverPolicy()); TestAsyncBatchDelivery delivery = spy(new TestAsyncBatchDelivery( TEST_BATCH_SIZE, TEST_DELIVERY_INTERVAL, objectFactory, new NoopFailoverPolicy(), null) { @Override protected BatchEmitterServiceProvider createBatchEmitterServiceProvider() { return batchEmitterFactory; } }); String testMessage = "test message"; // when delivery.add("testIndexName", testMessage); // then ArgumentCaptor<BulkEmitterTest.TestBatchItem> captor = ArgumentCaptor.forClass(BulkEmitterTest.TestBatchItem.class); verify(emitter, times(1)).add(captor.capture()); assertEquals(testMessage, captor.getValue().getData(null)); }
@Test public void lifecycleStartSetsUpIndexTemplateExecutionIfIndexTemplateIsConfigured() { // given TestHttpObjectFactory objectFactory = spy(createTestObjectFactoryBuilder().build()); IndexTemplate indexTemplate = mock(IndexTemplate.class); BatchDelivery batchDelivery = createTestBatchDeliveryBuilder() .withClientObjectFactory(objectFactory) .withIndexTemplate(indexTemplate) .build(); // when batchDelivery.start(); // then verify(objectFactory).addOperation(any()); }
@Test public void lifecycleStartDoesntSetUpIndexTemplateExecutionIfIndexTemplateIsNotConfigured() { // given TestHttpObjectFactory objectFactory = spy(createTestObjectFactoryBuilder().build()); BatchDelivery batchDelivery = createTestBatchDeliveryBuilder() .withClientObjectFactory(objectFactory) .withIndexTemplate(null) .build(); // when batchDelivery.start(); // then verify(objectFactory, never()).addOperation(any()); }
public static Builder createTestBatchDeliveryBuilder() { return spy(AsyncBatchDelivery.newBuilder() .withBatchSize(TEST_BATCH_SIZE) .withDeliveryInterval(TEST_DELIVERY_INTERVAL) .withClientObjectFactory(createTestObjectFactoryBuilder().build())) .withFailoverPolicy(new NoopFailoverPolicy()) .withIndexTemplate(new IndexTemplate(TEST_INDEX_TEMPLATE, TEST_PATH)); }
private BatchEmitter createWithTestValues(BatchEmitterServiceProvider serviceProvider) { return serviceProvider.createInstance(TEST_BATCH_SIZE, LARGE_TEST_INTERVAL, createTestObjectFactoryBuilder().build(), createTestFailoverPolicy("testRefAppender", mock(Configuration.class)) ); }