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