Sam
81da49093d
All checks were successful
continuous-integration/drone/push Build is passing
Instead of copying the opts struct every time it gets passed around, it should be created once and passed through reference. This should reduce memory utilization, unfortunately I cannot test it since this program runs so fast pprof won't report anything useful. I think I found all of them 🙂 Co-authored-by: Sam Therapy <sam@samtherapy.net> Reviewed-on: #132 Reviewed-by: grumbulon <grumbulon@grumbulon.xyz>
155 lines
2.9 KiB
Go
155 lines
2.9 KiB
Go
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package query_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.froth.zone/sam/awl/pkg/query"
|
|
"git.froth.zone/sam/awl/pkg/util"
|
|
"github.com/miekg/dns"
|
|
"gotest.tools/v3/assert"
|
|
)
|
|
|
|
func TestCreateQ(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
//nolint:govet // I could not be assed to refactor this, and it is only for tests
|
|
tests := []struct {
|
|
name string
|
|
opts *util.Options
|
|
}{
|
|
{
|
|
"1",
|
|
&util.Options{
|
|
Logger: util.InitLogger(0),
|
|
HeaderFlags: util.HeaderFlags{
|
|
Z: true,
|
|
},
|
|
YAML: true,
|
|
Request: util.Request{
|
|
Server: "8.8.4.4",
|
|
Port: 53,
|
|
Type: dns.TypeA,
|
|
Name: "example.com.",
|
|
Retries: 3,
|
|
},
|
|
Display: util.Display{
|
|
Comments: true,
|
|
Question: true,
|
|
Opt: true,
|
|
Answer: true,
|
|
Authority: true,
|
|
Additional: true,
|
|
Statistics: true,
|
|
ShowQuery: true,
|
|
},
|
|
EDNS: util.EDNS{
|
|
ZFlag: 1,
|
|
BufSize: 1500,
|
|
EnableEDNS: true,
|
|
Cookie: true,
|
|
DNSSEC: true,
|
|
Expire: true,
|
|
KeepOpen: true,
|
|
Nsid: true,
|
|
Padding: true,
|
|
Version: 0,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"2",
|
|
&util.Options{
|
|
Logger: util.InitLogger(0),
|
|
HeaderFlags: util.HeaderFlags{
|
|
Z: true,
|
|
},
|
|
XML: true,
|
|
|
|
Request: util.Request{
|
|
Server: "8.8.4.4",
|
|
Port: 53,
|
|
Type: dns.TypeA,
|
|
Name: "example.com.",
|
|
Retries: 3,
|
|
},
|
|
Display: util.Display{
|
|
Comments: true,
|
|
Question: true,
|
|
Opt: true,
|
|
Answer: true,
|
|
Authority: true,
|
|
Additional: true,
|
|
Statistics: true,
|
|
UcodeTranslate: true,
|
|
ShowQuery: true,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"3",
|
|
&util.Options{
|
|
Logger: util.InitLogger(0),
|
|
JSON: true,
|
|
QUIC: true,
|
|
|
|
Request: util.Request{
|
|
Server: "dns.adguard.com",
|
|
Port: 853,
|
|
Type: dns.TypeA,
|
|
Name: "example.com.",
|
|
Retries: 3,
|
|
},
|
|
Display: util.Display{
|
|
Comments: true,
|
|
Question: true,
|
|
Opt: true,
|
|
Answer: true,
|
|
Authority: true,
|
|
Additional: true,
|
|
Statistics: true,
|
|
ShowQuery: true,
|
|
},
|
|
EDNS: util.EDNS{
|
|
EnableEDNS: true,
|
|
DNSSEC: true,
|
|
Cookie: true,
|
|
Expire: true,
|
|
Nsid: true,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
test := test
|
|
|
|
t.Run(test.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var (
|
|
res util.Response
|
|
err error
|
|
)
|
|
for i := 0; i <= test.opts.Request.Retries; i++ {
|
|
res, err = query.CreateQuery(test.opts)
|
|
if err == nil {
|
|
break
|
|
}
|
|
}
|
|
|
|
assert.NilError(t, err)
|
|
assert.Assert(t, res != util.Response{})
|
|
|
|
str, err := query.PrintSpecial(res, test.opts)
|
|
|
|
assert.NilError(t, err)
|
|
assert.Assert(t, str != "")
|
|
|
|
str, err = query.ToString(res, test.opts)
|
|
assert.NilError(t, err)
|
|
assert.Assert(t, str != "")
|
|
})
|
|
}
|
|
}
|