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:
Miek Gieben
2016-04-04 08:19:06 +01:00
parent b3b6fe48f6
commit 84dfdab584
19 changed files with 170 additions and 73 deletions

View File

@@ -109,7 +109,7 @@ func TestLookupDNSSEC(t *testing.T) {
for _, tc := range dnssecTestCases {
m := tc.Msg()
rec := middleware.NewResponseRecorder(&middleware.TestResponseWriter{})
rec := middleware.NewResponseRecorder(&coretest.ResponseWriter{})
_, err := fm.ServeDNS(ctx, rec, m)
if err != nil {
t.Errorf("expected no error, got %v\n", err)
@@ -147,7 +147,7 @@ func BenchmarkLookupDNSSEC(b *testing.B) {
fm := File{Next: coretest.ErrorHandler(), Zones: Zones{Z: map[string]*Zone{testzone: zone}, Names: []string{testzone}}}
ctx := context.TODO()
rec := middleware.NewResponseRecorder(&middleware.TestResponseWriter{})
rec := middleware.NewResponseRecorder(&coretest.ResponseWriter{})
tc := coretest.Case{
Qname: "b.miek.nl.", Qtype: dns.TypeA, Do: true,

View File

@@ -42,7 +42,7 @@ func TestLookupENT(t *testing.T) {
for _, tc := range entTestCases {
m := tc.Msg()
rec := middleware.NewResponseRecorder(&middleware.TestResponseWriter{})
rec := middleware.NewResponseRecorder(&coretest.ResponseWriter{})
_, err := fm.ServeDNS(ctx, rec, m)
if err != nil {
t.Errorf("expected no error, got %v\n", err)

View File

@@ -77,7 +77,7 @@ func TestLookup(t *testing.T) {
for _, tc := range dnsTestCases {
m := tc.Msg()
rec := middleware.NewResponseRecorder(&middleware.TestResponseWriter{})
rec := middleware.NewResponseRecorder(&coretest.ResponseWriter{})
_, err := fm.ServeDNS(ctx, rec, m)
if err != nil {
t.Errorf("expected no error, got %v\n", err)
@@ -112,7 +112,7 @@ func TestLookupNil(t *testing.T) {
ctx := context.TODO()
m := dnsTestCases[0].Msg()
rec := middleware.NewResponseRecorder(&middleware.TestResponseWriter{})
rec := middleware.NewResponseRecorder(&coretest.ResponseWriter{})
fm.ServeDNS(ctx, rec, m)
}
@@ -124,7 +124,7 @@ func BenchmarkLookup(b *testing.B) {
fm := File{Next: coretest.ErrorHandler(), Zones: Zones{Z: map[string]*Zone{testzone: zone}, Names: []string{testzone}}}
ctx := context.TODO()
rec := middleware.NewResponseRecorder(&middleware.TestResponseWriter{})
rec := middleware.NewResponseRecorder(&coretest.ResponseWriter{})
tc := coretest.Case{
Qname: "www.miek.nl.", Qtype: dns.TypeA,

View File

@@ -56,7 +56,7 @@ func TestLookupWildcard(t *testing.T) {
for _, tc := range wildcardTestCases {
m := tc.Msg()
rec := middleware.NewResponseRecorder(&middleware.TestResponseWriter{})
rec := middleware.NewResponseRecorder(&coretest.ResponseWriter{})
_, err := fm.ServeDNS(ctx, rec, m)
if err != nil {
t.Errorf("expected no error, got %v\n", err)