Re: [infinispan-dev] simulating connection timeout

2012-01-19 Thread Manik Surtani
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(2);
} 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@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/infinispan-dev

--
Manik Surtani
ma...@jboss.org
twitter.com/maniksurtani

Lead, Infinispan
http://www.infinispan.org




___
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev


Re: [infinispan-dev] simulating connection timeout

2012-01-19 Thread Michal Linhard
I wanted to test my theory that the hot rod client connection timeout we 
added as part of
https://issues.jboss.org/browse/ISPN-1565
is being ignored
(taking into account https://issues.jboss.org/browse/ISPN-1755)
I configured both socket timeout and connect timeout for 2 min but in 
certain tests I'm getting connection timeuot after cca 20secs.

m.
On 01/19/2012 12:01 PM, Manik Surtani wrote:
 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(2);
 } 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@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/infinispan-dev
 --
 Manik Surtani
 ma...@jboss.org
 twitter.com/maniksurtani

 Lead, Infinispan
 http://www.infinispan.org




 ___
 infinispan-dev mailing list
 infinispan-dev@lists.jboss.org
 https://lists.jboss.org/mailman/listinfo/infinispan-dev


-- 
Michal Linhard
Quality Assurance Engineer
JBoss Enterprise Datagrid

Red Hat Czech s.r.o.
Purkynova 99 612 45 Brno, Czech Republic
phone: +420 532 294 320 ext. 62320
mobile: +420 728 626 363

___
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev


Re: [infinispan-dev] simulating connection timeout

2012-01-18 Thread Bela Ban
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(2);
 } 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@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev