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
|
||||
* 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();
|
||||
|
||||
|
|
|
@ -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