1
2
3
4
5
6
7
8
9
10 package ch.qos.logback.access.net;
11
12 import static org.junit.Assert.assertEquals;
13 import static org.junit.Assert.assertTrue;
14
15 import org.junit.Test;
16
17 import ch.qos.logback.access.dummy.DummyRequest;
18 import ch.qos.logback.access.dummy.DummyResponse;
19 import ch.qos.logback.access.dummy.DummyServerAdapter;
20 import ch.qos.logback.access.spi.AccessContext;
21 import ch.qos.logback.access.spi.AccessEvent;
22
23
24 public class SocketAppenderTest {
25
26 private AccessContext context;
27 private MockSocketServer mockSocketServer;
28
29 @Test
30 public void testStartFailNoRemoteHost() {
31 context = new AccessContext();
32 SocketAppender appender = new SocketAppender();
33 appender.setContext(context);
34 appender.setPort(123);
35 appender.start();
36 assertEquals(1, context.getStatusManager().getCount());
37 }
38
39 @Test
40 public void testRecieveMessage() throws InterruptedException {
41 startServer(1);
42 configureClient();
43
44 context.callAppenders(buildNewAccessEvent());
45
46
47 mockSocketServer.join(2000);
48 assertTrue(mockSocketServer.finished);
49 assertEquals(1, mockSocketServer.accessEventList.size());
50
51 AccessEvent remoteEvent = mockSocketServer.accessEventList.get(0);
52
53
54 assertEquals("headerValue1", remoteEvent.getRequestHeader("headerName1"));
55 assertEquals("testHost", remoteEvent.getRemoteHost());
56 }
57
58 private void startServer(int expectedEventNumber) throws InterruptedException {
59 mockSocketServer = new MockSocketServer(expectedEventNumber);
60 mockSocketServer.start();
61
62 Thread.sleep(100);
63 }
64
65 private void configureClient() {
66 context = new AccessContext();
67 context.setName("test");
68 SocketAppender socketAppender = new SocketAppender();
69 socketAppender.setContext(context);
70 socketAppender.setName("socket");
71 socketAppender.setPort(MockSocketServer.PORT);
72 socketAppender.setRemoteHost("localhost");
73 context.addAppender(socketAppender);
74 socketAppender.start();
75 }
76
77 private AccessEvent buildNewAccessEvent() {
78 DummyRequest request = new DummyRequest();
79 DummyResponse response = new DummyResponse();
80 DummyServerAdapter adapter = new DummyServerAdapter(request, response);
81
82 AccessEvent ae = new AccessEvent(request, response, adapter);
83 return ae;
84 }
85 }