1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package net.grinder.util.logback;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
26 import static org.mockito.Matchers.isA;
27 import static org.mockito.Mockito.doThrow;
28 import static org.mockito.Mockito.mock;
29 import static org.mockito.Mockito.verify;
30 import static org.mockito.Mockito.when;
31
32 import java.io.ByteArrayOutputStream;
33 import java.io.IOException;
34 import java.io.OutputStream;
35
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.mockito.Mock;
39 import org.mockito.MockitoAnnotations;
40
41 import ch.qos.logback.classic.spi.ILoggingEvent;
42 import ch.qos.logback.core.Context;
43 import ch.qos.logback.core.CoreConstants;
44 import ch.qos.logback.core.status.ErrorStatus;
45 import ch.qos.logback.core.status.StatusManager;
46
47
48
49
50
51
52
53 public class TestBufferedEchoMessageEncoder {
54 private final BufferedEchoMessageEncoder m_encoder =
55 new BufferedEchoMessageEncoder();
56
57 @Mock private ILoggingEvent m_event;
58
59 @Before public void setUp() {
60 MockitoAnnotations.initMocks(this);
61 }
62
63 @Test public void testBufferSize() {
64
65 assertTrue(m_encoder.getBufferSize() > 0);
66
67 m_encoder.setBufferSize(1234);
68 assertEquals(1234, m_encoder.getBufferSize());
69 }
70
71 @Test(expected=IllegalStateException.class)
72 public void testCantSetBuferSizeAfterInitialised() throws Exception {
73 m_encoder.init(null);
74
75 m_encoder.setBufferSize(256);
76 }
77
78 @Test public void testDoEncode() throws Exception {
79 final ByteArrayOutputStream baos = new ByteArrayOutputStream();
80
81 m_encoder.init(baos);
82 m_encoder.start();
83
84 when(m_event.getMessage()).thenReturn("hello");
85 m_encoder.doEncode(m_event);
86 when(m_event.getMessage()).thenReturn("world");
87 m_encoder.doEncode(m_event);
88 m_encoder.close();
89
90 assertEquals("hello" + CoreConstants.LINE_SEPARATOR +
91 "world" + CoreConstants.LINE_SEPARATOR, baos.toString());
92 }
93
94 @Test public void testBadClose() throws Exception {
95 final Context context = mock(Context.class);
96 final StatusManager statusManager = mock(StatusManager.class);
97
98 when(context.getStatusManager()).thenReturn(statusManager);
99
100 final OutputStream os = mock(OutputStream.class);
101
102 doThrow(new IOException()).when(os).flush();
103
104 m_encoder.setContext(context);
105 m_encoder.init(os);
106 m_encoder.start();
107 m_encoder.close();
108
109 verify(statusManager).add(isA(ErrorStatus.class));
110 }
111
112 }