1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.filter.util;
21
22 import static org.junit.Assert.assertEquals;
23
24 import java.util.ArrayList;
25 import java.util.List;
26
27 import org.apache.mina.core.filterchain.IoFilter;
28 import org.apache.mina.core.filterchain.IoFilterEvent;
29 import org.apache.mina.core.session.DummySession;
30 import org.apache.mina.core.session.IdleStatus;
31 import org.apache.mina.core.session.IoEventType;
32 import org.apache.mina.core.session.IoSession;
33 import org.apache.mina.core.write.DefaultWriteRequest;
34 import org.apache.mina.core.write.WriteRequest;
35 import org.easymock.EasyMock;
36 import org.junit.Before;
37 import org.junit.Test;
38
39
40
41
42
43
44
45 public class WrappingFilterTest {
46 private IoSession session;
47
48 private IoFilter.NextFilter nextFilter;
49
50 @Before
51 public void setUp() throws Exception {
52
53
54
55 session = new DummySession();
56 nextFilter = EasyMock.createMock(IoFilter.NextFilter.class);
57
58 }
59
60 @Test
61 public void testFilter() throws Exception {
62 MyWrappingFilter wrappingFilter = new MyWrappingFilter();
63
64
65 Object message1 = "message one";
66 Object message2 = "message two";
67 WriteRequest writeRequest1 = new DefaultWriteRequest("test1");
68 WriteRequest writeRequest2 = new DefaultWriteRequest("test2");
69 Throwable cause = new Throwable("testing");
70
71 nextFilter.sessionCreated(session);
72 nextFilter.sessionOpened(session);
73 nextFilter.sessionIdle(session, IdleStatus.READER_IDLE);
74 nextFilter.messageReceived(session, message1);
75 nextFilter.messageSent(session, writeRequest1);
76 nextFilter.messageSent(session, writeRequest2);
77 nextFilter.messageReceived(session, message2);
78 nextFilter.filterWrite(session, writeRequest1);
79 nextFilter.filterClose(session);
80 nextFilter.exceptionCaught(session, cause);
81 nextFilter.sessionClosed(session);
82
83
84 EasyMock.replay(nextFilter);
85 wrappingFilter.sessionCreated(nextFilter, session);
86 wrappingFilter.sessionOpened(nextFilter, session);
87 wrappingFilter.sessionIdle(nextFilter, session, IdleStatus.READER_IDLE);
88 wrappingFilter.messageReceived(nextFilter, session, message1);
89 wrappingFilter.messageSent(nextFilter, session, writeRequest1);
90 wrappingFilter.messageSent(nextFilter, session, writeRequest2);
91 wrappingFilter.messageReceived(nextFilter, session, message2);
92 wrappingFilter.filterWrite(nextFilter, session, writeRequest1);
93 wrappingFilter.filterClose(nextFilter, session);
94 wrappingFilter.exceptionCaught(nextFilter, session, cause);
95 wrappingFilter.sessionClosed(nextFilter, session);
96
97
98 EasyMock.verify(nextFilter);
99
100
101 assertEquals(11, wrappingFilter.eventsBefore.size());
102 assertEquals(IoEventType.SESSION_CREATED, wrappingFilter.eventsBefore.get(0));
103 assertEquals(IoEventType.SESSION_OPENED, wrappingFilter.eventsBefore.get(1));
104 assertEquals(IoEventType.SESSION_IDLE, wrappingFilter.eventsBefore.get(2));
105 assertEquals(IoEventType.MESSAGE_RECEIVED, wrappingFilter.eventsBefore.get(3));
106 assertEquals(IoEventType.MESSAGE_SENT, wrappingFilter.eventsBefore.get(4));
107 assertEquals(IoEventType.MESSAGE_SENT, wrappingFilter.eventsBefore.get(5));
108 assertEquals(IoEventType.MESSAGE_RECEIVED, wrappingFilter.eventsBefore.get(6));
109 assertEquals(IoEventType.WRITE, wrappingFilter.eventsBefore.get(7));
110 assertEquals(IoEventType.CLOSE, wrappingFilter.eventsBefore.get(8));
111 assertEquals(IoEventType.EXCEPTION_CAUGHT, wrappingFilter.eventsBefore.get(9));
112 assertEquals(IoEventType.SESSION_CLOSED, wrappingFilter.eventsBefore.get(10));
113 assertEquals(wrappingFilter.eventsBefore, wrappingFilter.eventsAfter);
114 }
115
116 private static class MyWrappingFilter extends CommonEventFilter {
117 List<IoEventType> eventsBefore = new ArrayList<>();
118
119 List<IoEventType> eventsAfter = new ArrayList<>();
120
121
122
123
124 public MyWrappingFilter() {
125 super();
126 }
127
128 @Override
129 protected void filter(IoFilterEvent event) {
130 eventsBefore.add(event.getType());
131 event.fire();
132 eventsAfter.add(event.getType());
133 }
134 }
135 }