From 541ec0a86c0d29c469bc48bce34493daf20a0ee4 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Sat, 11 Jan 2020 13:22:57 +0100 Subject: Decouple std logger and query logger --- http/http.go | 21 ++++++++++++--------- http/http_test.go | 15 +++++++++------ 2 files changed, 21 insertions(+), 15 deletions(-) (limited to 'http') diff --git a/http/http.go b/http/http.go index ac2e9b0..3887f9b 100644 --- a/http/http.go +++ b/http/http.go @@ -2,6 +2,7 @@ package http import ( "context" + "log" "net" "net/http" _ "net/http/pprof" // Registers debug handlers as a side effect. @@ -10,15 +11,16 @@ import ( "github.com/mpolden/zdns/cache" "github.com/mpolden/zdns/dns/dnsutil" - "github.com/mpolden/zdns/log" + "github.com/mpolden/zdns/sql" ) // A Server defines paramaters for running an HTTP server. The HTTP server serves an API for inspecting cache contents // and request log. type Server struct { - cache *cache.Cache - logger *log.Logger - server *http.Server + cache *cache.Cache + logger *log.Logger + sqlLogger *sql.Logger + server *http.Server } type entry struct { @@ -39,12 +41,13 @@ type httpError struct { } // NewServer creates a new HTTP server, serving logs from the given logger and listening on addr. -func NewServer(logger *log.Logger, cache *cache.Cache, addr string) *Server { +func NewServer(cache *cache.Cache, sqlLogger *sql.Logger, logger *log.Logger, addr string) *Server { server := &http.Server{Addr: addr} s := &Server{ - cache: cache, - logger: logger, - server: server, + cache: cache, + logger: logger, + sqlLogger: sqlLogger, + server: server, } s.server.Handler = s.handler() return s @@ -94,7 +97,7 @@ func (s *Server) cacheResetHandler(w http.ResponseWriter, r *http.Request) (inte } func (s *Server) logHandler(w http.ResponseWriter, r *http.Request) (interface{}, *httpError) { - logEntries, err := s.logger.Get(listCountFrom(r)) + logEntries, err := s.sqlLogger.Get(listCountFrom(r)) if err != nil { return nil, &httpError{ err: err, diff --git a/http/http_test.go b/http/http_test.go index 0d43b46..7853b16 100644 --- a/http/http_test.go +++ b/http/http_test.go @@ -2,6 +2,7 @@ package http import ( "io/ioutil" + "log" "net" "net/http" "net/http/httptest" @@ -11,7 +12,7 @@ import ( "github.com/miekg/dns" "github.com/mpolden/zdns/cache" - "github.com/mpolden/zdns/log" + "github.com/mpolden/zdns/sql" ) func newA(name string, ttl uint32, ipAddr ...net.IP) *dns.Msg { @@ -30,12 +31,14 @@ func newA(name string, ttl uint32, ipAddr ...net.IP) *dns.Msg { } func testServer() (*httptest.Server, *Server) { - logger, err := log.New(ioutil.Discard, "", log.RecordOptions{Mode: log.ModeAll, Database: ":memory:"}) + db, err := sql.New(":memory:") if err != nil { panic(err) } + stdLogger := log.New(ioutil.Discard, "", 0) + logger := sql.NewLogger(db, sql.LogAll, 0) cache := cache.New(10, nil) - server := Server{logger: logger, cache: cache} + server := Server{logger: stdLogger, sqlLogger: logger, cache: cache} return httptest.NewServer(server.handler()), &server } @@ -76,9 +79,9 @@ func httpDelete(url, body string) (*http.Response, string, error) { func TestRequests(t *testing.T) { httpSrv, srv := testServer() defer httpSrv.Close() - srv.logger.Record(net.IPv4(127, 0, 0, 42), false, 1, "example.com.", "192.0.2.100", "192.0.2.101") - srv.logger.Record(net.IPv4(127, 0, 0, 254), true, 28, "example.com.", "2001:db8::1") - srv.logger.Close() // Flush + srv.sqlLogger.Record(net.IPv4(127, 0, 0, 42), false, 1, "example.com.", "192.0.2.100", "192.0.2.101") + srv.sqlLogger.Record(net.IPv4(127, 0, 0, 254), true, 28, "example.com.", "2001:db8::1") + srv.sqlLogger.Close() // Flush srv.cache.Set(1, newA("1.example.com.", 60, net.IPv4(192, 0, 2, 200))) srv.cache.Set(2, newA("2.example.com.", 30, net.IPv4(192, 0, 2, 201))) -- cgit v1.2.3