aboutsummaryrefslogtreecommitdiffstats
path: root/http
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-01-11 13:22:57 +0100
committerMartin Polden <mpolden@mpolden.no>2020-01-11 15:14:15 +0100
commit541ec0a86c0d29c469bc48bce34493daf20a0ee4 (patch)
tree043fdfda105a700ab1b94089e0e2580e0f9e1c8b /http
parentbf8b103057d1492f62e561a0124c8ad7bce36af9 (diff)
Decouple std logger and query logger
Diffstat (limited to 'http')
-rw-r--r--http/http.go21
-rw-r--r--http/http_test.go15
2 files changed, 21 insertions, 15 deletions
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)))