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