NetCrusher is a java TCP/UDP proxy framework and command line tool that allows to test software service for network failover.
NetCrusher proxy framework:
NetCrusher is build on top of Java 8 NIO and has no external dependencies except SLF4J.
Project is hosted on GitHub
Download the latest dist.tar.gz to get the command line tool.
NioReactor reactor = new NioReactor(); TcpCrusher crusher = TcpCrusherBuilder.builder() .withReactor(reactor) .withBindAddress("localhost", 10080) .withConnectAddress("google.com", 80) .buildAndOpen(); // ... some actions // emulate reconnect crusher.reopen(); // ... check the client connection is reestablished successfully // closing crusher.close(); reactor.close();
NioReactor reactor = new NioReactor(); DatagramCrusher crusher = DatagramCrusherBuilder.builder() .withReactor(reactor) .withBindAddress("localhost", 10188) .withConnectAddress("time-nw.nist.gov", 37) .buildAndOpen(); // ... some actions // check data is sent Assert.assertTrue(crusher.getInner().getReadDatagramMeter().getTotal() > 0); // closing crusher.close(); reactor.close();
For manual QA the command-line proxy is available both for TCP and Datagram mode
$ ./run-tcp-crusher.sh 127.0.0.1:12345 google.com:80 # Version: 0.10 # Print `HELP` for the list of the commands # enter the command in the next line CLOSE [20:19:20.586] INFO TcpCrusher </127.0.0.1:12345>-<google.com/64.233.161.101:80> is closed [20:19:20.586] INFO Crusher is closed # enter the command in the next line OPEN [20:19:21.655] INFO TcpCrusher </127.0.0.1:12345>-<google.com/64.233.161.101:80> is open [20:19:21.655] INFO Crusher is open
Read more about the command line proxy mode.
<dependency> <groupId>com.github.netcrusherorg</groupId> <artifactId>netcrusher-core</artifactId> <version>0.10</version> </dependency>
iperf test made with TcpProxy
Apache License Version 2.0, http://www.apache.org/licenses/LICENSE-2.0.html