MCPcopy
hub / github.com/google/gopacket / TestDNSPacketWriteAnswer

Function TestDNSPacketWriteAnswer

layers/dns_test.go:1095–1130  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1093}
1094
1095func TestDNSPacketWriteAnswer(t *testing.T) {
1096 dns := &DNS{ID: 0x1234, QR: true, OpCode: DNSOpCodeQuery, ResponseCode: DNSResponseCodeNoErr, Answers: []DNSResourceRecord{
1097 DNSResourceRecord{
1098 Name: []byte("www.example.com"),
1099 Type: DNSTypeA,
1100 Class: DNSClassIN,
1101 IP: net.IPv4(127, 0, 0, 1),
1102 },
1103 DNSResourceRecord{
1104 Name: []byte("www.example.com"),
1105 Type: DNSTypeAAAA,
1106 Class: DNSClassIN,
1107 IP: net.IP{15: 1},
1108 },
1109 }}
1110 buf := gopacket.NewSerializeBuffer()
1111 opts := gopacket.SerializeOptions{ComputeChecksums: true, FixLengths: true}
1112 if err := gopacket.SerializeLayers(buf, opts, dns); err != nil {
1113 t.Fatal(err)
1114 }
1115 dns2 := &DNS{}
1116 if err := dns2.DecodeFromBytes(buf.Bytes(), gopacket.NilDecodeFeedback); err != nil {
1117 t.Fatalf("could not decode: %v", err)
1118 }
1119 if want, got := 2, len(dns2.Answers); want != got {
1120 t.Fatalf("num answers, want %d got %d", want, got)
1121 } else if got, want := string(dns2.Answers[0].Name), "www.example.com"; got != want {
1122 t.Fatalf("unexpected first answer name %q, want %q", got, want)
1123 } else if got, want := string(dns2.Answers[1].Name), "www.example.com"; got != want {
1124 t.Fatalf("unexpected second answer name %q, want %q", got, want)
1125 }
1126 t.Log(gopacket.LayerString(dns2))
1127 if want, got := 86, len(buf.Bytes()); want != got {
1128 t.Fatalf("Encoded size, want %d got %d", want, got)
1129 }
1130}

Callers

nothing calls this directly

Calls 5

DecodeFromBytesMethod · 0.95
BytesMethod · 0.95
NewSerializeBufferFunction · 0.92
SerializeLayersFunction · 0.92
LayerStringFunction · 0.92

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…