]>
Commit | Line | Data |
---|---|---|
49a3500d | 1 | #define BOOST_TEST_DYN_LINK |
2 | #define BOOST_TEST_NO_MAIN | |
3 | ||
4 | #ifdef HAVE_CONFIG_H | |
5 | #include "config.h" | |
6 | #endif | |
7 | #include <boost/test/unit_test.hpp> | |
8 | #include "dnswriter.hh" | |
9 | #include "dnsrecords.hh" | |
10 | #include "dns_random.hh" | |
11 | #include "iputils.hh" | |
12 | #include "recpacketcache.hh" | |
13 | #include <utility> | |
14 | ||
15 | ||
16 | BOOST_AUTO_TEST_SUITE(recpacketcache_cc) | |
17 | ||
18 | BOOST_AUTO_TEST_CASE(test_recPacketCacheSimple) { | |
19 | RecursorPacketCache rpc; | |
20 | BOOST_CHECK_EQUAL(rpc.size(), 0); | |
21 | ||
22 | DNSName qname("www.powerdns.com"); | |
23 | vector<uint8_t> packet; | |
24 | DNSPacketWriter pw(packet, qname, QType::A); | |
25 | pw.getHeader()->rd=true; | |
26 | pw.getHeader()->qr=false; | |
27 | pw.getHeader()->id=random(); | |
28 | string qpacket((const char*)&packet[0], packet.size()); | |
29 | pw.startRecord(qname, QType::A, 3600); | |
30 | ||
31 | ARecordContent ar("127.0.0.1"); | |
32 | ar.toPacket(pw); | |
33 | pw.commit(); | |
34 | string rpacket((const char*)&packet[0], packet.size()); | |
35 | ||
36 | rpc.insertResponsePacket(0,qname, QType::A, qpacket, rpacket, time(0), 3600); | |
37 | BOOST_CHECK_EQUAL(rpc.size(), 1); | |
38 | rpc.doPruneTo(0); | |
39 | BOOST_CHECK_EQUAL(rpc.size(), 0); | |
40 | rpc.insertResponsePacket(0,qname, QType::A, qpacket, rpacket, time(0), 3600); | |
41 | BOOST_CHECK_EQUAL(rpc.size(), 1); | |
42 | rpc.doWipePacketCache(qname); | |
43 | BOOST_CHECK_EQUAL(rpc.size(), 0); | |
44 | ||
45 | rpc.insertResponsePacket(0,qname, QType::A, qpacket, rpacket, time(0), 3600); | |
46 | uint32_t age=0; | |
47 | string fpacket; | |
48 | bool found = rpc.getResponsePacket(0, qpacket, time(0), &fpacket, &age); | |
49 | BOOST_CHECK_EQUAL(found, 1); | |
50 | BOOST_CHECK_EQUAL(fpacket, rpacket); | |
51 | ||
52 | packet.clear(); | |
53 | qname+=DNSName("co.uk"); | |
54 | DNSPacketWriter pw2(packet, qname, QType::A); | |
55 | ||
56 | pw2.getHeader()->rd=true; | |
57 | pw2.getHeader()->qr=false; | |
58 | pw2.getHeader()->id=random(); | |
59 | qpacket.assign((const char*)&packet[0], packet.size()); | |
60 | found = rpc.getResponsePacket(0, qpacket, time(0), &fpacket, &age); | |
61 | BOOST_CHECK_EQUAL(found, 0); | |
62 | ||
63 | rpc.doWipePacketCache(DNSName("com"), 0xffff, true); | |
64 | BOOST_CHECK_EQUAL(rpc.size(), 0); | |
65 | ||
66 | ||
67 | ||
68 | } | |
69 | ||
70 | BOOST_AUTO_TEST_SUITE_END() |