blob: 1e09cd03f5963560b9f8c6b69307c10a9d36056c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
package org.simpleframework.transport;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
import java.util.concurrent.Executor;
import junit.framework.TestCase;
import org.simpleframework.common.thread.ConcurrentExecutor;
import org.simpleframework.transport.reactor.ExecutorReactor;
import org.simpleframework.transport.reactor.Reactor;
import org.simpleframework.transport.trace.MockTrace;
import org.simpleframework.transport.trace.Trace;
public class SocketTransportTest 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);
Executor executor = new ConcurrentExecutor(Runnable.class);
Reactor reactor = new ExecutorReactor(executor);
SocketTransport transport = new SocketTransport(wrapper,reactor);
for(int i = 0; i < 10000; i++){
transport.write(ByteBuffer.wrap(("message-"+i+"\n").getBytes()));
}
transport.close();
reader.awaitClose();
String data = reader.getBuffer().toString();
String[] list = data.split("\\n");
for(int i = 0; i < 10000; i++){
if(!list[i].equals("message-"+i)) {
System.err.println(list[i]);
}
assertEquals("At index " + i + " value="+list[i] +" expect message-"+i, list[i], "message-"+i);
}
}
}
|