You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by jv...@apache.org on 2011/09/19 13:27:34 UTC
svn commit: r1172571 - in /mina/trunk/core/src:
main/java/org/apache/mina/api/ main/java/org/apache/mina/filterchain/
main/java/org/apache/mina/transport/tcp/
test/java/org/apache/mina/filterchain/ test/java/org/apache/mina/session/
Author: jvermillard
Date: Mon Sep 19 11:27:33 2011
New Revision: 1172571
URL: http://svn.apache.org/viewvc?rev=1172571&view=rev
Log:
Unit testing for chain
Added:
mina/trunk/core/src/main/java/org/apache/mina/api/DefaultIoFilter.java (with props)
mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterControllerTest.java (contents, props changed)
- copied, changed from r1171914, mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java
Removed:
mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterController.java
mina/trunk/core/src/main/java/org/apache/mina/filterchain/IoFilterController.java
mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java
mina/trunk/core/src/test/java/org/apache/mina/session/AbstractIoSessionTest.java
Added: mina/trunk/core/src/main/java/org/apache/mina/api/DefaultIoFilter.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/api/DefaultIoFilter.java?rev=1172571&view=auto
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/api/DefaultIoFilter.java (added)
+++ mina/trunk/core/src/main/java/org/apache/mina/api/DefaultIoFilter.java Mon Sep 19 11:27:33 2011
@@ -0,0 +1,58 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.mina.api;
+
+import org.apache.mina.filterchain.ReadFilterChainController;
+import org.apache.mina.filterchain.WriteFilterChainController;
+
+/**
+ * A convenient {@link IoFilter} implementation to be sub-classed for easier IoFilter implementation.
+ *
+ * @author <a href="http://mina.apache.org">Apache MINA Project</a>
+ */
+public abstract class DefaultIoFilter implements IoFilter {
+
+ @Override
+ public void sessionCreated(IoSession session) {
+
+ }
+
+ @Override
+ public void sessionOpened(IoSession session) {
+ }
+
+ @Override
+ public void sessionClosed(IoSession session) {
+ }
+
+ @Override
+ public void sessionIdle(IoSession session, IdleStatus status) {
+ }
+
+ @Override
+ public void messageReceived(IoSession session, Object message, ReadFilterChainController controller) {
+ controller.callReadNextFilter(session, message);
+ }
+
+ @Override
+ public void messageWriting(IoSession session, Object message, WriteFilterChainController controller) {
+ controller.callWriteNextFilter(session, message);
+ }
+
+}
Propchange: mina/trunk/core/src/main/java/org/apache/mina/api/DefaultIoFilter.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterController.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterController.java?rev=1172571&r1=1172570&r2=1172571&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterController.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filterchain/DefaultIoFilterController.java Mon Sep 19 11:27:33 2011
@@ -39,6 +39,9 @@ public class DefaultIoFilterController i
* The instance of {@link DefaultIoFilterController} with the {@link IoService} chain.
*/
public DefaultIoFilterController(IoFilter[] chain) {
+ if (chain == null) {
+ throw new IllegalArgumentException("chain");
+ }
this.chain = chain;
}
@@ -51,7 +54,7 @@ public class DefaultIoFilterController i
}
@Override
- public void processSessionOpen(IoSession session) {
+ public void processSessionOpened(IoSession session) {
LOG.debug("processing session open event");
for (IoFilter filter : chain) {
filter.sessionOpened(session);
Modified: mina/trunk/core/src/main/java/org/apache/mina/filterchain/IoFilterController.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filterchain/IoFilterController.java?rev=1172571&r1=1172570&r2=1172571&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/filterchain/IoFilterController.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/filterchain/IoFilterController.java Mon Sep 19 11:27:33 2011
@@ -41,7 +41,7 @@ public interface IoFilterController {
* Call this method for processing a session open event using this chain.
* @param session {@link IoSession} the opened session
*/
- void processSessionOpen(IoSession session);
+ void processSessionOpened(IoSession session);
/**
* Call this method for processing a session closed event using the chain.
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java?rev=1172571&r1=1172570&r2=1172571&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/tcp/NioSelectorProcessor.java Mon Sep 19 11:27:33 2011
@@ -233,7 +233,7 @@ public class NioSelectorProcessor implem
session.setConnected();
// fire the event
((AbstractIoService) session.getService()).fireSessionCreated(session);
- session.getFilterChain().processSessionOpen(session);
+ session.getFilterChain().processSessionOpened(session);
}
}
Copied: mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterControllerTest.java (from r1171914, mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java)
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterControllerTest.java?p2=mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterControllerTest.java&p1=mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java&r1=1171914&r2=1172571&rev=1172571&view=diff
==============================================================================
--- mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterChainTest.java (original)
+++ mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterControllerTest.java Mon Sep 19 11:27:33 2011
@@ -19,49 +19,108 @@
*/
package org.apache.mina.filterchain;
-import org.apache.mina.api.IdleStatus;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.*;
+import static org.mockito.Mockito.*;
+
+import java.nio.ByteBuffer;
+
+import org.apache.mina.api.DefaultIoFilter;
import org.apache.mina.api.IoFilter;
import org.apache.mina.api.IoSession;
+import org.junit.Test;
-public class DefaultIoFilterChainTest {
+public class DefaultIoFilterControllerTest {
- private static class DummyFilter implements IoFilter {
+ @Test
+ public void constructor() {
- String id;
-
- public DummyFilter(String id) {
- this.id = id;
+ // null chain
+ try {
+ new DefaultIoFilterController(null);
+ fail();
+ } catch (IllegalArgumentException e) {
+ // happy
+ }
+
+ // nominal
+ try {
+ DefaultIoFilterController ctrl = new DefaultIoFilterController(new IoFilter[] {});
+ } catch (IllegalArgumentException e) {
+ fail();
}
+ }
- @Override
- public void sessionCreated(IoSession session) {
- }
+ @Test
+ public void chain_reads() {
+ IoFilter filter1 = spy(new PassthruFilter());
+ IoFilter filter2 = spy(new PassthruFilter());
+ IoFilter filter3 = spy(new PassthruFilter());
+ DefaultIoFilterController ctrl = new DefaultIoFilterController(new IoFilter[] { filter1, filter2, filter3 });
+ IoSession session = mock(IoSession.class);
+ ByteBuffer buffer = mock(ByteBuffer.class);
+ ctrl.processMessageReceived(session, buffer);
+ verify(filter1).messageReceived(eq(session), eq(buffer), any(ReadFilterChainController.class));
+ verify(filter2).messageReceived(eq(session), eq(buffer), any(ReadFilterChainController.class));
+ verify(filter3).messageReceived(eq(session), eq(buffer), any(ReadFilterChainController.class));
+ }
- @Override
- public void sessionOpened(IoSession session) {
- }
+ @Test
+ public void chain_writes() {
+ IoFilter filter1 = spy(new PassthruFilter());
+ IoFilter filter2 = spy(new PassthruFilter());
+ IoFilter filter3 = spy(new PassthruFilter());
+ DefaultIoFilterController ctrl = new DefaultIoFilterController(new IoFilter[] { filter1, filter2, filter3 });
+ IoSession session = mock(IoSession.class);
+ ByteBuffer buffer = mock(ByteBuffer.class);
+ ctrl.processMessageWriting(session, buffer);
+ verify(filter1).messageWriting(eq(session), eq(buffer), any(WriteFilterChainController.class));
+ verify(filter2).messageWriting(eq(session), eq(buffer), any(WriteFilterChainController.class));
+ verify(filter3).messageWriting(eq(session), eq(buffer), any(WriteFilterChainController.class));
+ verify(session).enqueueWriteRequest(eq(buffer));
+ }
- @Override
- public void sessionClosed(IoSession session) {
- }
+ @Test
+ public void chain_created() {
+ IoFilter filter1 = spy(new PassthruFilter());
+ IoFilter filter2 = spy(new PassthruFilter());
+ IoFilter filter3 = spy(new PassthruFilter());
+ DefaultIoFilterController ctrl = new DefaultIoFilterController(new IoFilter[] { filter1, filter2, filter3 });
+ IoSession session = mock(IoSession.class);
+ ctrl.processSessionCreated(session);
+ verify(filter1).sessionCreated(eq(session));
+ verify(filter2).sessionCreated(eq(session));
+ verify(filter3).sessionCreated(eq(session));
+ }
- @Override
- public void sessionIdle(IoSession session, IdleStatus status) {
- }
+ @Test
+ public void chain_open() {
+ IoFilter filter1 = spy(new PassthruFilter());
+ IoFilter filter2 = spy(new PassthruFilter());
+ IoFilter filter3 = spy(new PassthruFilter());
+ DefaultIoFilterController ctrl = new DefaultIoFilterController(new IoFilter[] { filter1, filter2, filter3 });
+ IoSession session = mock(IoSession.class);
+ ctrl.processSessionOpened(session);
+ verify(filter1).sessionOpened(eq(session));
+ verify(filter2).sessionOpened(eq(session));
+ verify(filter3).sessionOpened(eq(session));
+ }
- public String toString() {
- return "DummyFilter(" + id + ")";
- }
+ @Test
+ public void chain_close() {
+ IoFilter filter1 = spy(new PassthruFilter());
+ IoFilter filter2 = spy(new PassthruFilter());
+ IoFilter filter3 = spy(new PassthruFilter());
+ DefaultIoFilterController ctrl = new DefaultIoFilterController(new IoFilter[] { filter1, filter2, filter3 });
+ IoSession session = mock(IoSession.class);
+ ctrl.processSessionClosed(session);
+ verify(filter1).sessionClosed(eq(session));
+ verify(filter2).sessionClosed(eq(session));
+ verify(filter3).sessionClosed(eq(session));
+ }
- @Override
- public void messageReceived(IoSession session, Object message, ReadFilterChainController controller) {
- controller.callReadNextFilter(session, message);
- }
+ private class PassthruFilter extends DefaultIoFilter {
- @Override
- public void messageWriting(IoSession session, Object message, WriteFilterChainController controller) {
- controller.callWriteNextFilter(session, message);
- }
}
}
Propchange: mina/trunk/core/src/test/java/org/apache/mina/filterchain/DefaultIoFilterControllerTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: mina/trunk/core/src/test/java/org/apache/mina/session/AbstractIoSessionTest.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/test/java/org/apache/mina/session/AbstractIoSessionTest.java?rev=1172571&r1=1172570&r2=1172571&view=diff
==============================================================================
--- mina/trunk/core/src/test/java/org/apache/mina/session/AbstractIoSessionTest.java (original)
+++ mina/trunk/core/src/test/java/org/apache/mina/session/AbstractIoSessionTest.java Mon Sep 19 11:27:33 2011
@@ -1,3 +1,21 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package org.apache.mina.session;
import static org.mockito.Mockito.mock;