]>
git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/test-dnswriter_cc.cc
1 #define BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_NO_MAIN
8 #include <boost/test/unit_test.hpp>
11 #include "dnswriter.hh"
12 #include "dnsparser.hh"
14 BOOST_AUTO_TEST_SUITE(test_dnswriter_cc
)
16 BOOST_AUTO_TEST_CASE(test_compressionBool
) {
17 auto testCompressionBool
= [](bool compress
, size_t size1
, size_t size2
) {
18 DNSName
name("powerdns.com.");
20 vector
<uint8_t> packet
;
21 DNSPacketWriter
pwR(packet
, name
, QType::A
, QClass::IN
, 0);
22 pwR
.getHeader()->qr
= 1;
24 pwR
.startRecord(DNSName("mediumsizedlabel.example.net"), QType::A
, 3600, QClass::IN
, DNSResourceRecord::ANSWER
, compress
);
30 BOOST_CHECK_EQUAL(pwR
.size(), size1
);
32 pwR
.startRecord(DNSName("adifferentlabel.example.net"), QType::NS
, 3600, QClass::IN
, DNSResourceRecord::ANSWER
, compress
);
33 pwR
.xfrName(DNSName("target.example.net"), true);
35 BOOST_CHECK_EQUAL(pwR
.size(), size2
);
37 string
spacket(packet
.begin(), packet
.end());
39 BOOST_CHECK_NO_THROW(MOADNSParser
mdp(false, spacket
));
42 testCompressionBool(true, 74, 111);
43 testCompressionBool(false, 74, 133);
46 BOOST_AUTO_TEST_CASE(test_compressionBoundary
) {
47 DNSName
name("powerdns.com.");
49 vector
<uint8_t> packet
;
50 DNSPacketWriter
pwR(packet
, name
, QType::A
, QClass::IN
, 0);
51 pwR
.getHeader()->qr
= 1;
53 /* record we want to see altered */
54 pwR
.startRecord(name
, QType::TXT
, 3600, QClass::IN
, DNSResourceRecord::ANSWER
);
55 auto txt
= string("\"")+string(16262, 'A')+string("\"");
58 BOOST_CHECK_EQUAL(pwR
.size(), 16368U);
60 pwR
.startRecord(DNSName("mediumsizedlabel.example.net"), QType::A
, 3600, QClass::IN
, DNSResourceRecord::ANSWER
);
66 BOOST_CHECK_EQUAL(pwR
.size(), 16412U); // 16412 (0x401c) puts '7example3net' at 0x4001
68 pwR
.startRecord(DNSName("adifferentlabel.example.net"), QType::A
, 3600, QClass::IN
, DNSResourceRecord::ANSWER
);
74 BOOST_CHECK_EQUAL(pwR
.size(), 16455U);
76 string
spacket(packet
.begin(), packet
.end());
78 BOOST_CHECK_NO_THROW(MOADNSParser
mdp(false, spacket
));
81 BOOST_AUTO_TEST_SUITE_END()