coredns/plugin/erratic
Miek Gieben 5735292406
Do Compress only when need in request.Scrub (#1760)
* Remove Compress by default

Set Compress = true in Scrub only when the message doesn not fit the
advertized buffer. Doing compression is expensive, so try to avoid it.

Master vs this branch
pkg: github.com/coredns/coredns/plugin/cache
BenchmarkCacheResponse-2   	   50000	     24774 ns/op

pkg: github.com/coredns/coredns/plugin/cache
BenchmarkCacheResponse-2   	  100000	     21960 ns/op

* and make it compile
2018-05-01 21:04:06 +01:00
..
autopath.go Remove the word middleware (#1067) 2017-09-14 09:36:06 +01:00
erratic.go Do Compress only when need in request.Scrub (#1760) 2018-05-01 21:04:06 +01:00
erratic_test.go all: fix plugin import ordering (#1717) 2018-04-22 08:34:35 +01:00
health.go plugin/health: implement dyn health checks (#1214) 2017-11-13 09:52:40 +00:00
OWNERS Add OWNERS file (#1486) 2018-02-08 10:55:51 +00:00
README.md plugin/erratic: linkify RFC references (#1593) 2018-03-07 13:52:32 +00:00
setup.go just use setup (#1574) 2018-02-28 19:56:14 -08:00
setup_test.go just use setup (#1574) 2018-02-28 19:56:14 -08:00

erratic

Name

erratic - a plugin useful for testing client behavior.

Description

erratic returns a static response to all queries, but the responses can be delayed, dropped or truncated. The erratic plugin will respond to every A or AAAA query. For any other type it will return a SERVFAIL response. The reply for A will return 192.0.2.53 (see RFC 5737, for AAAA it returns 2001:DB8::53 (see RFC 3849).

erratic can also be used in conjunction with the autopath plugin. This is mostly to aid in testing.

Syntax

erratic {
    drop [AMOUNT]
    truncate [AMOUNT]
    delay [AMOUNT [DURATION]]
}
  • drop: drop 1 per AMOUNT of queries, the default is 2.
  • truncate: truncate 1 per AMOUNT of queries, the default is 2.
  • delay: delay 1 per AMOUNT of queries for DURATION, the default for AMOUNT is 2 and the default for DURATION is 100ms.

Health

This plugin implements dynamic health checking. For every dropped query it turns unhealthy.

Examples

. {
    erratic {
        drop 3
    }
}

Or even shorter if the defaults suits you. Note this only drops queries, it does not delay them.

. {
    erratic
}

Delay 1 in 3 queries for 50ms

. {
    erratic {
        delay 3 50ms
    }
}

Delay 1 in 3 and truncate 1 in 5.

. {
    erratic {
        delay 3 5ms
        truncate 5
    }
}

Drop every second query.

. {
    erratic {
        drop 2
        truncate 2
    }
}

Also See

RFC 3849 and RFC 5737.