aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Becker2012-04-27 05:06:34 (EDT)
committerThomas Becker2012-04-27 05:13:44 (EDT)
commit011ae1f447073aa8dae51028b1368decfa0446fa (patch)
tree41320c47dc889df3fe08e93587864967a897a81d
parentf70886cec0e80105710471f4f9ccb6e3e5bce938 (diff)
downloadorg.eclipse.jetty.project-011ae1f447073aa8dae51028b1368decfa0446fa.zip
org.eclipse.jetty.project-011ae1f447073aa8dae51028b1368decfa0446fa.tar.gz
org.eclipse.jetty.project-011ae1f447073aa8dae51028b1368decfa0446fa.tar.bz2
377587: UnitTest for ConnectHandler.write() with partial writes and non full buffer.refs/changes/88/5688/1
Change-Id: I8a8a3d57cba7a9c3502d1b6af6ff6eb5ac4e4ef5 377587: UnitTest for ConnectHandler.write() with partial writes and non full buffer. Change-Id: I8d104d54de55e22325d14e69b474b245fe9d126c
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/Buffer.java6
-rw-r--r--jetty-server/src/test/java/org/eclipse/jetty/server/handler/ConnectHandlerUnitTest.java68
2 files changed, 71 insertions, 3 deletions
diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/Buffer.java b/jetty-io/src/main/java/org/eclipse/jetty/io/Buffer.java
index cfa3011..e7611b3 100644
--- a/jetty-io/src/main/java/org/eclipse/jetty/io/Buffer.java
+++ b/jetty-io/src/main/java/org/eclipse/jetty/io/Buffer.java
@@ -24,7 +24,7 @@ import java.io.OutputStream;
* This is a byte buffer that is designed to work like a FIFO for bytes. Puts and Gets operate on different
* pointers into the buffer and the valid _content of the buffer is always between the getIndex and the putIndex.
*
- * This buffer interface is designed to be similar, but not dependant on the java.nio buffers, which may
+ * This buffer interface is designed to be similar, but not dependent on the java.nio buffers, which may
* be used to back an implementation of this Buffer. The main difference is that NIO buffer after a put have
* their valid _content before the position and a flip is required to access that data.
*
@@ -56,14 +56,14 @@ public interface Buffer extends Cloneable
byte[] asArray();
/**
- * Get the unerlying buffer. If this buffer wraps a backing buffer.
+ * Get the underlying buffer. If this buffer wraps a backing buffer.
* @return The root backing buffer or this if there is no backing buffer;
*/
Buffer buffer();
/**
*
- * @return a non volitile version of this <code>Buffer</code> value
+ * @return a non volatile version of this <code>Buffer</code> value
*/
Buffer asNonVolatileBuffer();
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ConnectHandlerUnitTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ConnectHandlerUnitTest.java
new file mode 100644
index 0000000..37c2e85
--- /dev/null
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/handler/ConnectHandlerUnitTest.java
@@ -0,0 +1,68 @@
+// ========================================================================
+// Copyright (c) 2012 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+
+package org.eclipse.jetty.server.handler;
+
+import static org.mockito.Mockito.when;
+import static org.mockito.Matchers.*;
+import static org.junit.Assert.*;
+import static org.hamcrest.Matchers.*;
+
+import java.io.IOException;
+
+import org.eclipse.jetty.io.Buffer;
+import org.eclipse.jetty.io.ByteArrayBuffer;
+import org.eclipse.jetty.io.EndPoint;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.stubbing.Answer;
+
+/* ------------------------------------------------------------ */
+/**
+ */
+@RunWith(MockitoJUnitRunner.class)
+public class ConnectHandlerUnitTest
+{
+ @Mock
+ private EndPoint endPoint;
+
+ @Test
+ public void testPartialWritesWithNonFullBuffer() throws IOException
+ {
+ ConnectHandler connectHandler = new ConnectHandler();
+ final byte[] bytes = "foo bar".getBytes();
+ Buffer buffer = new ByteArrayBuffer(bytes.length * 2);
+ buffer.put(bytes);
+ when(endPoint.flush(buffer)).thenAnswer(new Answer<Object>()
+ {
+ public Object answer(InvocationOnMock invocation)
+ {
+ Object[] args = invocation.getArguments();
+ Buffer buffer = (Buffer)args[0];
+ int skip = bytes.length/2;
+ buffer.skip(skip);
+ return skip;
+ }
+ });
+ when(endPoint.blockWritable(anyInt())).thenReturn(true);
+
+ // method to test
+ connectHandler.write(endPoint,buffer,null);
+
+ assertThat(buffer.length(),is(0));
+ }
+
+}