protected ItemAppenderFactory createItemAppenderFactory() { return new ItemAppenderFactory(); }
protected ItemAppenderFactory createItemAppenderFactory() { return new ItemAppenderFactory(); }
@Test public void givenAbstractLayoutImplementingItemSourceLayoutDelegatesToItemSourceLayoutFactoryMethod() { // given ItemAppenderFactory factory = spy(new ItemAppenderFactory()); BatchDelivery batchDelivery = mock(BatchDelivery.class); ItemSourceLayout itemSourceLayout = spy(new TestItemSourceaLayout(mock(Configuration.class))); // when factory.createInstance(false, (AbstractLayout)itemSourceLayout, batchDelivery); // then verify(factory).createInstance(eq(false), eq(itemSourceLayout), eq(batchDelivery)); }
@Test public void messageOnlyAbstractStringLayout() { // given ItemAppenderFactory factory = new ItemAppenderFactory(); String formattedIndexName = UUID.randomUUID().toString(); BatchDelivery batchDelivery = mock(BatchDelivery.class); AbstractStringLayout abstractStringLayout = mock(AbstractStringLayout.class); ItemAppender itemAppender = factory.createInstance(true, abstractStringLayout, batchDelivery); String expectedMessage = UUID.randomUUID().toString(); LogEvent logEvent = mock(LogEvent.class); Message message = mock(Message.class); when(message.getFormattedMessage()).thenReturn(expectedMessage); when(logEvent.getMessage()).thenReturn(message); // when itemAppender.append(formattedIndexName, logEvent); // then assertEquals(StringAppender.class, itemAppender.getClass()); verify(abstractStringLayout, never()).toSerializable(any()); verify(batchDelivery).add(indexNameCaptor.capture(), stringLogCaptor.capture()); assertEquals(formattedIndexName, indexNameCaptor.getValue()); assertEquals(expectedMessage, stringLogCaptor.getValue()); }
@Test public void unsupportedLayout() { // given ItemAppenderFactory factory = new ItemAppenderFactory(); expectedException.expect(ConfigurationException.class); expectedException.expectMessage("Unsupported layout"); // when factory.createInstance(false, mock(AbstractLayout.class), mock(BatchDelivery.class)); }
@Test public void nonMessageOnlyAbstractStringLayout() { // given ItemAppenderFactory factory = new ItemAppenderFactory(); String formattedIndexName = UUID.randomUUID().toString(); BatchDelivery batchDelivery = mock(BatchDelivery.class); AbstractStringLayout stringBasedLayout = mock(AbstractStringLayout.class); ItemAppender itemAppender = factory.createInstance(false, stringBasedLayout, batchDelivery); String expectedMessage = UUID.randomUUID().toString(); when(stringBasedLayout.toSerializable(any(LogEvent.class))).thenReturn(expectedMessage); LogEvent logEvent = createDefaultTestLogEvent(); // when itemAppender.append(formattedIndexName, logEvent); // then assertEquals(StringAppender.class, itemAppender.getClass()); verify(stringBasedLayout).toSerializable(logEventCaptor.capture()); assertEquals(logEvent, logEventCaptor.getValue()); verify(batchDelivery).add(indexNameCaptor.capture(), stringLogCaptor.capture()); assertEquals(formattedIndexName, indexNameCaptor.getValue()); assertEquals(expectedMessage, stringLogCaptor.getValue()); }
@Test public void messageOnlyItemSourceLayout() { // given ItemAppenderFactory factory = new ItemAppenderFactory(); String formattedIndexName = UUID.randomUUID().toString(); BatchDelivery batchDelivery = mock(BatchDelivery.class); ItemSourceLayout itemSourceLayout = spy(new TestItemSourceaLayout(mock(Configuration.class))); ItemSourceAppender itemAppender = (ItemSourceAppender) factory.createInstance(true, (AbstractLayout)itemSourceLayout, batchDelivery); String expectedMessage = UUID.randomUUID().toString(); ItemSource itemSource = new StringItemSource(expectedMessage); when(itemSourceLayout.serialize(any(Message.class))).thenReturn(itemSource); LogEvent logEvent = mock(LogEvent.class); Message message = mock(Message.class); when(logEvent.getMessage()).thenReturn(message); // when itemAppender.append(formattedIndexName, logEvent); // then assertEquals(ItemSourceAppender.class, itemAppender.getClass()); verify(itemSourceLayout).serialize(messageCaptor.capture()); assertEquals(message, messageCaptor.getValue()); verify(batchDelivery).add(indexNameCaptor.capture(), itemSourceCaptor.capture()); assertEquals(formattedIndexName, indexNameCaptor.getValue()); assertEquals(expectedMessage, itemSourceCaptor.getValue().getSource()); }
@Test public void nonMessageOnlyItemSourceLayout() { // given ItemAppenderFactory factory = new ItemAppenderFactory(); String formattedIndexName = UUID.randomUUID().toString(); BatchDelivery batchDelivery = mock(BatchDelivery.class); ItemSourceLayout itemSourceLayout = spy(new TestItemSourceaLayout(mock(Configuration.class))); ItemSourceAppender itemAppender = (ItemSourceAppender) factory.createInstance(false, (AbstractLayout)itemSourceLayout, batchDelivery); String expectedMessage = UUID.randomUUID().toString(); ItemSource itemSource = new StringItemSource(expectedMessage); when(itemSourceLayout.serialize(any(LogEvent.class))).thenReturn(itemSource); LogEvent logEvent = createDefaultTestLogEvent(); // when itemAppender.append(formattedIndexName, logEvent); // then assertEquals(ItemSourceAppender.class, itemAppender.getClass()); verify(itemSourceLayout).serialize(logEventCaptor.capture()); assertEquals(logEvent, logEventCaptor.getValue()); verify(batchDelivery).add(indexNameCaptor.capture(), itemSourceCaptor.capture()); assertEquals(formattedIndexName, indexNameCaptor.getValue()); assertEquals(expectedMessage, itemSourceCaptor.getValue().getSource()); }