package proxy
import "github.com/coreos/etcd/pkg/proxy"
Package proxy implements proxy servers for network fault testing.
Index ¶
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.
type ServerConfig ¶
type ServerConfig struct { Logger *zap.Logger From url.URL To url.URL TLSInfo transport.TLSInfo DialTimeout time.Duration BufferSize int RetryInterval time.Duration }
ServerConfig defines proxy server configuration.
Source Files ¶
- Version
- v3.3.22+incompatible
- Published
- May 20, 2020
- Platform
- js/wasm
- Imports
- 12 packages
- Last checked
- 8 minutes ago –
Tools for package owners.