mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04:00 
			
		
		
		
	Cache elements of State
Cache the size and the do bit whenever someone asked for it. We can probably add more: PASS BenchmarkStateDo-4 100000000 11.9 ns/op BenchmarkStateSize-4 5000000 265 ns/op ok github.com/miekg/coredns/middleware 2.828s PASS BenchmarkStateDo-4 1000000000 2.86 ns/op BenchmarkStateSize-4 500000000 3.10 ns/op ok github.com/miekg/coredns/middleware 5.032s This PR also includes some testing cleanups as well.
This commit is contained in:
		| @@ -3,8 +3,6 @@ package testing | ||||
| import ( | ||||
| 	"testing" | ||||
|  | ||||
| 	"github.com/miekg/coredns/middleware" | ||||
|  | ||||
| 	"github.com/miekg/dns" | ||||
| 	"golang.org/x/net/context" | ||||
| ) | ||||
| @@ -199,11 +197,27 @@ func Section(t *testing.T, tc Case, sect Sect, rr []dns.RR) bool { | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| func ErrorHandler() middleware.Handler { | ||||
| 	return middleware.HandlerFunc(func(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { | ||||
| func ErrorHandler() Handler { | ||||
| 	return HandlerFunc(func(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { | ||||
| 		m := new(dns.Msg) | ||||
| 		m.SetRcode(r, dns.RcodeServerFailure) | ||||
| 		w.WriteMsg(m) | ||||
| 		return dns.RcodeServerFailure, nil | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| // Copied here to prevent an import cycle. | ||||
| type ( | ||||
| 	// HandlerFunc is a convenience type like dns.HandlerFunc, except | ||||
| 	// ServeDNS returns an rcode and an error. | ||||
| 	HandlerFunc func(context.Context, dns.ResponseWriter, *dns.Msg) (int, error) | ||||
|  | ||||
| 	Handler interface { | ||||
| 		ServeDNS(context.Context, dns.ResponseWriter, *dns.Msg) (int, error) | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| // ServeDNS implements the Handler interface. | ||||
| func (f HandlerFunc) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { | ||||
| 	return f(ctx, w, r) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user