blob: a893f04c92a9d3e89ed1059e640a20dbca5110d6 [file] [log] [blame]
package org.simpleframework.transport;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import junit.framework.TestCase;
import org.simpleframework.transport.trace.MockTrace;
import org.simpleframework.transport.trace.Trace;
public class SocketBufferTest extends TestCase {
public void testBulkWrite() throws Exception {
ServerBuffer reader = new ServerBuffer();
SocketAddress address = new InetSocketAddress("localhost", reader.getPort());
SocketChannel channel = SocketChannel.open();
channel.configureBlocking(false); // underlying socket must be non-blocking
channel.connect(address);
while(!channel.finishConnect()) { // wait to finish connection
Thread.sleep(10);
};
Trace trace = new MockTrace();
SocketWrapper wrapper = new SocketWrapper(channel, trace);
SocketBuffer builder = new SocketBuffer(wrapper, 100, 4096);
for(int i = 0; i < 10000; i++){
ByteBuffer buf = ByteBuffer.wrap(("message-"+i+"\n").getBytes());
if(i > 18) {
System.err.println("FAIL......."+i);
}
if(!builder.write(buf)){
while(!builder.flush()) {
System.err.println("FLUSHING!!!");
Thread.sleep(1);
}
}
}
while(!builder.flush()) {
System.err.println("FLUSHING!!!");
}
builder.close();
reader.awaitClose();
String data = reader.getBuffer().toString();
String[] list = data.split("\\n");
for(int i = 0; i < 10000; i++){
String msg = list[i];
if(!msg.equals("message-"+i)) {
System.err.println(list[i]);
}
assertEquals("At index " + i + " value="+list[i] +" expect message-"+i, list[i], "message-"+i);
}
}
public void testSimpleWrite() throws Exception {
ServerBuffer reader = new ServerBuffer();
SocketAddress address = new InetSocketAddress("localhost", reader.getPort());
SocketChannel channel = SocketChannel.open();
channel.configureBlocking(false); // underlying socket must be non-blocking
channel.connect(address);
while(!channel.finishConnect()) { // wait to finish connection
Thread.sleep(10);
};
Trace trace = new MockTrace();
SocketWrapper wrapper = new SocketWrapper(channel, trace);
SocketBuffer builder = new SocketBuffer(wrapper, 100, 4096);
builder.write(ByteBuffer.wrap("hello there ".getBytes()));
builder.write(ByteBuffer.wrap("this ".getBytes()));
builder.write(ByteBuffer.wrap("is ".getBytes()));
builder.write(ByteBuffer.wrap("a ".getBytes()));
builder.write(ByteBuffer.wrap("test".getBytes()));
builder.flush();
builder.close();
reader.awaitClose();
assertEquals(reader.getBuffer().toString(), "hello there this is a test");
}
}