377587: UnitTest for ConnectHandler.write() with partial writes and non full buffer.
Change-Id: I8a8a3d57cba7a9c3502d1b6af6ff6eb5ac4e4ef5 377587: UnitTest for ConnectHandler.write() with partial writes and non full buffer. Change-Id: I8d104d54de55e22325d14e69b474b245fe9d126c
This commit is contained in:
parent
f70886cec0
commit
011ae1f447
|
@ -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
|
* 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.
|
* 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
|
* 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.
|
* 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();
|
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;
|
* @return The root backing buffer or this if there is no backing buffer;
|
||||||
*/
|
*/
|
||||||
Buffer 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();
|
Buffer asNonVolatileBuffer();
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue