Documentation ¶
Overview ¶
Package proxy implements proxy servers for network fault testing.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Server ¶
type Server interface { // From returns proxy source address in "scheme://host:port" format. From() string // To returns proxy destination address in "scheme://host:port" format. To() string // Ready returns when proxy is ready to serve. Ready() <-chan struct{} // Done returns when proxy has been closed. Done() <-chan struct{} // Error sends errors while serving proxy. Error() <-chan error // Close closes listener and transport. Close() error // DelayAccept adds latency ± random variable to accepting new incoming connections. DelayAccept(latency, rv time.Duration) // UndelayAccept removes sending latencies. UndelayAccept() // LatencyAccept returns current latency on accepting new incoming connections. LatencyAccept() time.Duration // DelayTx adds latency ± random variable to "sending" layer. DelayTx(latency, rv time.Duration) // UndelayTx removes sending latencies. UndelayTx() // LatencyTx returns current send latency. LatencyTx() time.Duration // DelayRx adds latency ± random variable to "receiving" layer. DelayRx(latency, rv time.Duration) // UndelayRx removes "receiving" latencies. UndelayRx() // LatencyRx returns current receive latency. LatencyRx() time.Duration // PauseAccept stops accepting new connections. PauseAccept() // UnpauseAccept removes pause operation on accepting new connections. UnpauseAccept() // PauseTx stops "forwarding" packets. PauseTx() // UnpauseTx removes "forwarding" pause operation. UnpauseTx() // PauseRx stops "receiving" packets to client. PauseRx() // UnpauseRx removes "receiving" pause operation. UnpauseRx() // BlackholeTx drops all incoming packets before "forwarding". BlackholeTx() // UnblackholeTx removes blackhole operation on "sending". UnblackholeTx() // BlackholeRx drops all incoming packets to client. BlackholeRx() // UnblackholeRx removes blackhole operation on "receiving". UnblackholeRx() // CorruptTx corrupts incoming packets from the listener. CorruptTx(f func(data []byte) []byte) // UncorruptTx removes corrupt operation on "forwarding". UncorruptTx() // CorruptRx corrupts incoming packets to client. CorruptRx(f func(data []byte) []byte) // UncorruptRx removes corrupt operation on "receiving". UncorruptRx() // ResetListener closes and restarts listener. ResetListener() error }
Server defines proxy server layer that simulates common network faults, such as latency spikes, packet drop/corruption, etc..
func NewServer ¶
func NewServer(cfg ServerConfig) Server
NewServer returns a proxy implementation with no iptables/tc dependencies. The proxy layer overhead is <1ms.
Click to show internal directories.
Click to hide internal directories.