/** * Copyright (C) 2009-2013 Barchart, Inc. <http://www.barchart.com/> * * All rights reserved. Licensed under the OSI BSD License. * * http://www.opensource.org/licenses/bsd-license.php */ package com.barchart.udt; import static org.junit.Assert.*; import java.nio.ByteBuffer; import java.util.Arrays; public class TestSendRecv2 extends TestSendRecvAbstract<ByteBuffer> { final static int POSITION = 1234; final static int LIMIT = POSITION + SIZE; final static int CAPACITY = 3 * 1024; @Override protected void doClientReader() throws Exception { // blocks here final ByteBuffer bufferSent = clientQueue.take(); final ByteBuffer bufferReceived = ByteBuffer.allocateDirect(CAPACITY); bufferReceived.position(POSITION); bufferReceived.limit(LIMIT); // blocks here final int size = client.receive(bufferReceived); assertEquals(size, SIZE); final byte[] dataSent = new byte[SIZE]; final byte[] dataReceived = new byte[SIZE]; bufferSent.position(POSITION); bufferSent.get(dataSent); bufferReceived.position(POSITION); bufferReceived.get(dataReceived); assertTrue(Arrays.equals(dataSent, dataReceived)); } @Override protected void doClientWriter() throws Exception { final byte[] array = new byte[SIZE]; generator.nextBytes(array); final ByteBuffer buffer = ByteBuffer.allocateDirect(CAPACITY); buffer.position(POSITION); buffer.put(array); buffer.position(POSITION); buffer.limit(LIMIT); // blocks here final int size = client.send(buffer); assertEquals(size, SIZE); assertEquals(buffer.position(), buffer.limit()); assertEquals(LIMIT, buffer.limit()); clientQueue.put(buffer); } @Override protected void doServerReader() throws Exception { final ByteBuffer buffer = ByteBuffer.allocateDirect(CAPACITY); buffer.position(POSITION); buffer.limit(LIMIT); // blocks here final int size = connector.receive(buffer); assertEquals(size, SIZE); assertEquals(buffer.position(), buffer.limit()); assertEquals(LIMIT, buffer.limit()); serverQueue.put(buffer); } @Override protected void doServerWriter() throws Exception { // blocks here final ByteBuffer buffer = serverQueue.take(); buffer.position(POSITION); buffer.limit(LIMIT); // blocks here final int size = connector.send(buffer); assertEquals(size, SIZE); assertEquals(buffer.position(), buffer.limit()); assertEquals(LIMIT, buffer.limit()); } }