File: test-nod_cc.cc

package info (click to toggle)
pdns-recursor 4.8.8-1%2Bdeb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 9,620 kB
  • sloc: cpp: 95,714; javascript: 20,651; sh: 4,679; makefile: 652; xml: 37
file content (63 lines) | stat: -rw-r--r-- 1,864 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_NO_MAIN
#include <boost/test/unit_test.hpp>
#include "nod.hh"
#include "pdnsexception.hh"
using namespace boost;
using std::string;
using namespace nod;

BOOST_AUTO_TEST_SUITE(nod_cc)

static bool pdns_exception(PDNSException const& ex) { return true; }

BOOST_AUTO_TEST_CASE(test_basic)
{
  DNSName new_domain1("abc.com."), new_domain2("xyz.com.");

  {
    NODDB noddb;

    BOOST_CHECK_EXCEPTION(noddb.setCacheDir("/xyz/abc"), PDNSException, pdns_exception);

    noddb.setCacheDir("/tmp");

    BOOST_CHECK_EQUAL(noddb.init(), true);

    BOOST_CHECK_EQUAL(noddb.isNewDomain(new_domain1), true);
    BOOST_CHECK_EQUAL(noddb.isNewDomain(new_domain1), false);
    BOOST_CHECK_EQUAL(noddb.isNewDomain(new_domain2), true);
    BOOST_CHECK_EQUAL(noddb.isNewDomain(new_domain1), false);

    for (int i = 0; i < 1000000; ++i) {
      noddb.isNewDomain("foo.com.");
    }

    noddb.addDomain("abc.com.");
    DNSName new_subdomain("foo.abc.com.");
    std::string parent;
    bool res = noddb.isNewDomainWithParent(new_subdomain, parent);

    BOOST_CHECK_EQUAL(res, true);
    BOOST_CHECK_EQUAL(parent, string("abc.com."));
  }
  {
    NODDB newnod;
    newnod.setCacheDir(".");
    BOOST_CHECK_EQUAL(newnod.init(), true);
    BOOST_CHECK_EQUAL(newnod.isNewDomain(new_domain1), true);
    BOOST_CHECK_EQUAL(newnod.isNewDomain(new_domain2), true);
    BOOST_CHECK_EQUAL(newnod.isNewDomain(new_domain1), false);
    BOOST_CHECK_EQUAL(newnod.isNewDomain(new_domain2), false);
    BOOST_CHECK_EQUAL(newnod.snapshotCurrent(std::this_thread::get_id()), true);
  }
  {
    NODDB newnod;
    newnod.setCacheDir(".");
    BOOST_CHECK_EQUAL(newnod.init(true), true);
    BOOST_CHECK_EQUAL(newnod.isNewDomain(new_domain2), false);
    BOOST_CHECK_EQUAL(newnod.isNewDomain(new_domain1), false);
  }
}

BOOST_AUTO_TEST_SUITE_END()