aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-12-26 16:17:14 +0100
committerMartin Polden <mpolden@mpolden.no>2019-12-26 16:23:21 +0100
commitb4e42b3f6429178d50a1ee2acefbd6a2aa2fbacf (patch)
tree61f0f426d2061f0b2d9f61b556110318f4a4598f
parentdae3d2ba6d1f8092b1b18f417f5c37cdca66f772 (diff)
Count multi-answer log entry as a single entry
-rw-r--r--sql/sql.go2
-rw-r--r--sql/sql_test.go25
2 files changed, 16 insertions, 11 deletions
diff --git a/sql/sql.go b/sql/sql.go
index c645b34..7206461 100644
--- a/sql/sql.go
+++ b/sql/sql.go
@@ -103,8 +103,8 @@ INNER JOIN rr_question ON rr_question.id = rr_question_id
INNER JOIN rr_type ON rr_type.id = rr_type_id
INNER JOIN log_rr_answer ON log_rr_answer.log_id = log.id
INNER JOIN rr_answer ON rr_answer.id = log_rr_answer.rr_answer_id
+WHERE log.id IN (SELECT id FROM log ORDER BY time DESC LIMIT $1)
ORDER BY time DESC, rr_answer.id DESC
-LIMIT $1
`
var entries []LogEntry
err := c.db.Select(&entries, query, n)
diff --git a/sql/sql_test.go b/sql/sql_test.go
index 6ed9c1e..6328dc6 100644
--- a/sql/sql_test.go
+++ b/sql/sql_test.go
@@ -73,17 +73,22 @@ func TestReadLog(t *testing.T) {
t.Fatalf("#%d: WriteLog(%q, %s, %d, %q, %q) = %s, want nil", i, tt.t, tt.remoteAddr.String(), tt.qtype, tt.question, tt.answers, err)
}
}
- entries := []LogEntry{
- {ID: 6, Question: "bar.example.com", Qtype: 28, Answer: "2001:db8::3", Time: 1560641700, RemoteAddr: net.IPv4(192, 0, 2, 102)},
- {ID: 6, Question: "bar.example.com", Qtype: 28, Answer: "2001:db8::2", Time: 1560641700, RemoteAddr: net.IPv4(192, 0, 2, 102)},
- {ID: 5, Question: "bar.example.com", Qtype: 28, Answer: "2001:db8::1", Time: 1560639880, RemoteAddr: net.IPv4(192, 0, 2, 102)},
- {ID: 4, Question: "bar.example.com", Qtype: 1, Answer: "192.0.2.2", Time: 1560637120, RemoteAddr: net.IPv4(192, 0, 2, 102)},
- {ID: 3, Question: "bar.example.com", Qtype: 1, Answer: "192.0.2.2", Time: 1560637050, RemoteAddr: net.IPv4(192, 0, 2, 101)},
- {ID: 2, Question: "foo.example.com", Qtype: 1, Answer: "192.0.2.1", Time: 1560636980, RemoteAddr: net.IPv4(192, 0, 2, 100)},
- {ID: 1, Question: "foo.example.com", Qtype: 1, Answer: "192.0.2.1", Time: 1560636910, RemoteAddr: net.IPv4(192, 0, 2, 100)},
+ allEntries := [][]LogEntry{
+ {
+ {ID: 6, Question: "bar.example.com", Qtype: 28, Answer: "2001:db8::3", Time: 1560641700, RemoteAddr: net.IPv4(192, 0, 2, 102)},
+ {ID: 6, Question: "bar.example.com", Qtype: 28, Answer: "2001:db8::2", Time: 1560641700, RemoteAddr: net.IPv4(192, 0, 2, 102)},
+ },
+ {{ID: 5, Question: "bar.example.com", Qtype: 28, Answer: "2001:db8::1", Time: 1560639880, RemoteAddr: net.IPv4(192, 0, 2, 102)}},
+ {{ID: 4, Question: "bar.example.com", Qtype: 1, Answer: "192.0.2.2", Time: 1560637120, RemoteAddr: net.IPv4(192, 0, 2, 102)}},
+ {{ID: 3, Question: "bar.example.com", Qtype: 1, Answer: "192.0.2.2", Time: 1560637050, RemoteAddr: net.IPv4(192, 0, 2, 101)}},
+ {{ID: 2, Question: "foo.example.com", Qtype: 1, Answer: "192.0.2.1", Time: 1560636980, RemoteAddr: net.IPv4(192, 0, 2, 100)}},
+ {{ID: 1, Question: "foo.example.com", Qtype: 1, Answer: "192.0.2.1", Time: 1560636910, RemoteAddr: net.IPv4(192, 0, 2, 100)}},
}
- for n := 1; n <= len(entries); n++ {
- want := entries[:n]
+ for n := 1; n <= len(allEntries); n++ {
+ var want []LogEntry
+ for _, entries := range allEntries[:n] {
+ want = append(want, entries...)
+ }
got, err := c.ReadLog(n)
if len(got) != len(want) {
t.Errorf("len(got) = %d, want %d", len(got), len(want))