coredns/middleware/erratic
Miek Gieben a83d97a5c4 middleware/erratic: add delaying queries (#614)
* middleware/erratic: add delying queries

* Dont println
2017-04-13 16:26:17 +01:00
..
erratic.go middleware/erratic: add delaying queries (#614) 2017-04-13 16:26:17 +01:00
erratic_test.go middleware/erratic: add delaying queries (#614) 2017-04-13 16:26:17 +01:00
README.md middleware/erratic: add delaying queries (#614) 2017-04-13 16:26:17 +01:00
setup.go middleware/erratic: add delaying queries (#614) 2017-04-13 16:26:17 +01:00
setup_test.go middleware/erratic: add delaying queries (#614) 2017-04-13 16:26:17 +01:00

erratic

erratic is a middleware useful for testing client behavior. It returns a static response to all queries, but the responses can be delayed by a random amount of time or dropped all together, i.e. no answer at all.

The erratic middleware 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).

Syntax

erratic {
    drop [AMOUNT]
    delay [AMOUNT [DURATION]]
}
  • drop: drop 1 per AMOUNT of the 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.

Examples

.:53 {
    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, but also drop 1 in 2.

. {
    erratic {
        delay 3 50ms
    }
}

To stop dropping you'll need to explicitally set that to 0:

. {
    erratic {
        delay 3 50ms
        drop 0
    }
}