Skip to content

NetCrusherOrg/netcrusher-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NetCrusher for Java

NetCrusher is TCP/UDP proxy framework for Java and a command line tool that could be placed in the middle between any client and server and allows to check both sides for failover.

  • emulates network failures
  • emulates frozen connection
  • supports both TCP and UDP
  • supports multiple dynamic connections through the same proxy tunnel
  • allows to check the state of connections
  • allows to filter/dump data
  • supports throttling (delay and/or throughput control)
  • garbage-less buffering
  • high performance (16.6 Gbits on loopback interface of my laptop)
  • supports IP4/IP6

NetCrusher is build on top of Java 8 NIO and has no external dependencies except SLF4J.

Read documentation.

Download latest dist.tar.gz to get the command line tool.

TCP

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();

UDP

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();

Additional samples

Checks additional samples in the project root folder:

Command line

For manual QA the command-line wrapper is available both for TCP and Datagram mode

$ ./run-tcp-crusher.sh 127.0.0.1:12345 google.com:80
# Version: 0.8
# 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

More about the command line mode in wiki.

Maven

<dependency>
    <groupId>com.github.netcrusherorg</groupId>
    <artifactId>netcrusher-core</artifactId>
    <version>0.10</version>
</dependency>

Performance

See wiki page

License

Apache License Version 2.0, http://www.apache.org/licenses/LICENSE-2.0.html

Links to the similar projects

  • Jepsen - Distributed Systems Safety Analysis
  • Java-NIO-TCP-Proxy - Simple TCP proxy
  • netem - Linux kernel module allows to distort network facilities
  • socat - bridges everything with everything

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy