coredns/plugin/debug/pcap_test.go
2022-07-10 11:06:33 -07:00

73 lines
1.5 KiB
Go

package debug
import (
"bytes"
"fmt"
golog "log"
"strings"
"testing"
"github.com/coredns/coredns/plugin/pkg/log"
"github.com/miekg/dns"
)
func msg() *dns.Msg {
m := new(dns.Msg)
m.SetQuestion("example.local.", dns.TypeA)
m.SetEdns0(4096, true)
m.Id = 10
return m
}
func TestNoDebug(t *testing.T) {
// Must come first, because set log.D.Set() which is impossible to undo.
var f bytes.Buffer
golog.SetOutput(&f)
str := "Hi There!"
Hexdumpf(msg(), "%s %d", str, 10)
if len(f.Bytes()) != 0 {
t.Errorf("Expected no output, got %d bytes", len(f.Bytes()))
}
}
func ExampleHexdump() {
buf, _ := msg().Pack()
h := hexdump(buf)
fmt.Println(string(h))
// Output:
// debug: 000000 00 0a 01 00 00 01 00 00 00 00 00 01 07 65 78 61
// debug: 000010 6d 70 6c 65 05 6c 6f 63 61 6c 00 00 01 00 01 00
// debug: 000020 00 29 10 00 00 00 80 00 00 00
// debug: 00002a
}
func TestHexdump(t *testing.T) {
var f bytes.Buffer
golog.SetOutput(&f)
log.D.Set()
str := "Hi There!"
Hexdump(msg(), str)
logged := f.String()
if !strings.Contains(logged, "[DEBUG] "+str) {
t.Errorf("The string %s, is not contained in the logged output: %s", str, logged)
}
}
func TestHexdumpf(t *testing.T) {
var f bytes.Buffer
golog.SetOutput(&f)
log.D.Set()
str := "Hi There!"
Hexdumpf(msg(), "%s %d", str, 10)
logged := f.String()
if !strings.Contains(logged, "[DEBUG] "+fmt.Sprintf("%s %d", str, 10)) {
t.Errorf("The string %s %d, is not contained in the logged output: %s", str, 10, logged)
}
}