1   package ch.qos.logback.access.spi;
2   
3   import static org.junit.Assert.assertEquals;
4   import static org.junit.Assert.assertNotNull;
5   
6   import java.io.ByteArrayInputStream;
7   import java.io.ByteArrayOutputStream;
8   import java.io.IOException;
9   import java.io.ObjectInputStream;
10  import java.io.ObjectOutputStream;
11  
12  import org.junit.Test;
13  
14  import ch.qos.logback.access.dummy.DummyAccessEventBuilder;
15  import ch.qos.logback.access.dummy.DummyRequest;
16  import ch.qos.logback.access.dummy.DummyResponse;
17  
18  public class AccessEventSerializationTest  {
19  
20    private Object buildSerializedAccessEvent() throws IOException,
21        ClassNotFoundException {
22      ByteArrayOutputStream baos = new ByteArrayOutputStream();
23      ObjectOutputStream oos = new ObjectOutputStream(baos);
24      AccessEvent ae = DummyAccessEventBuilder.buildNewAccessEvent();
25      // average time for the next method: 5000 nanos
26      ae.prepareForDeferredProcessing();
27      oos.writeObject(ae);
28      oos.flush();
29  
30      ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
31      ObjectInputStream ois = new ObjectInputStream(bais);
32  
33      return ois.readObject();
34    }
35  
36    @Test
37    public void testSerialization() throws IOException, ClassNotFoundException {
38      Object o = buildSerializedAccessEvent();
39      assertNotNull(o);
40      AccessEvent aeBack = (AccessEvent) o;
41  
42  
43      assertEquals(DummyResponse.DUMMY_DEFAULT_HDEADER_MAP, aeBack
44          .getResponseHeaderMap());
45      assertEquals(DummyResponse.DUMMY_DEFAULT_HDEADER_MAP.get("x"), aeBack
46          .getResponseHeader("x"));
47      assertEquals(DummyResponse.DUMMY_DEFAULT_HDEADER_MAP.get("headerName1"),
48          aeBack.getResponseHeader("headerName1"));
49      assertEquals(DummyResponse.DUMMY_DEFAULT_HDEADER_MAP.size(), aeBack
50          .getResponseHeaderNameList().size());
51      assertEquals(DummyResponse.DUMMY_DEFAULT_CONTENT_COUNT, aeBack
52          .getContentLength());
53      assertEquals(DummyResponse.DUMMY_DEFAULT_STATUS, aeBack.getStatusCode());
54  
55      assertEquals(DummyRequest.DUMMY_CONTENT_STRING, aeBack
56          .getRequestContent());
57      
58      assertEquals(DummyRequest.DUMMY_RESPONSE_CONTENT_STRING, aeBack
59          .getResponseContent());
60      
61    }
62  
63  }