[infinispan-dev] simulating connection timeout
Manik Surtani
manik at jboss.org
Thu Jan 19 06:01:11 EST 2012
What is this for? Perhaps just mock up the client to use a mock socket?
On 19 Jan 2012, at 12:57, Bela Ban wrote:
> If this is done in Java code, you could use byteman to change the behavior.
>
> Intercepting and changing the data flow in the TCP/IP stack itself gets
> more tricky; you have to insert a packet filter and then drop/reorder
> packets. In Java, you might be able to use jnetpcap, which allows you to
> get access to the individual packets.
>
> Maybe iptables will also allow you to do this, but it's rather static.
>
> On 1/18/12 10:05 PM, Michal Linhard wrote:
>> Hi all,
>>
>> probably stupid question from the area of java server programming and
>> networking if anyone's interrested:
>> (otherwise sorry for spam)
>>
>> is there a simple way of creating a server in java that would always
>> give me connection timeout ? (not connection refused, nor socket timeout
>> during read)
>> is it even possible to control establishing tcp connection from java ?
>>
>> what layer does control this ?
>> it seems that once you bind a socket the connections are automatically
>> established.
>> probably on some JVM level ?
>> so when I get
>>
>> java.net.ConnectException: Connection timed out
>> at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
>> at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
>> at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:100)
>> at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransport.<init>(TcpTransport.java:80)
>>
>>
>> this means that server JVM or OS networking layer or whatever was so
>> stressed that it didn't have time to respond with SYN,ACK flagged packet
>> to establish the connection ?
>>
>> m.
>>
>>
>> ----------- my test code:
>> public class EchoServer {
>> public static void main(String[] args) {
>> try {
>> ServerSocketChannel serverChannel = ServerSocketChannel.open();
>> InetSocketAddress isa = new InetSocketAddress("localhost", 9090);
>> serverChannel.socket().bind(isa);
>> Thread.sleep(20000);
>> } catch (Exception e) {
>> e.printStackTrace();
>> }
>>
>> }
>> }
>>
>> public class EchoClient {
>> public static void main(String[] args) {
>> long startTime = System.currentTimeMillis();
>> try {
>> SocketAddress serverAddress = new
>> InetSocketAddress("localhost", 9090);
>> SocketChannel socketChannel = SocketChannel.open();
>> Socket socket = socketChannel.socket();
>> socket.connect(serverAddress, 5000);
>> socket.setSoTimeout(5000);
>> BufferedInputStream socketInputStream = new
>> BufferedInputStream(socket.getInputStream(), socket.getReceiveBufferSize());
>> BufferedOutputStream socketOutputStream = new
>> BufferedOutputStream(socket.getOutputStream(), socket.getSendBufferSize());
>> PrintWriter out = new PrintWriter(socketOutputStream);
>> out.println("Hello");
>> out.flush();
>> BufferedReader in = new BufferedReader(new
>> InputStreamReader(socketInputStream));
>> System.out.println(in.readLine());
>> } catch (Exception e) {
>> System.out.println("Exception occured after " +
>> (System.currentTimeMillis() - startTime) + " ms");
>> e.printStackTrace();
>> }
>> }
>> }
>>
>
> --
> Bela Ban
> Lead JGroups (http://www.jgroups.org)
> JBoss / Red Hat
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Manik Surtani
manik at jboss.org
twitter.com/maniksurtani
Lead, Infinispan
http://www.infinispan.org
More information about the infinispan-dev
mailing list