1 #ifndef BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_DYN_LINK
5 #define BOOST_TEST_NO_MAIN
11 #include <boost/test/unit_test.hpp>
12 #include "communicator.hh"
14 BOOST_AUTO_TEST_SUITE(test_communicator_hh
)
16 BOOST_AUTO_TEST_CASE(test_axfr_queue_priority_order
)
19 {DNSName("test1.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::SignaturesRefresh
, 0}},
20 {DNSName("test2.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::SerialRefresh
, 1}},
21 {DNSName("test3.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::Notify
, 2}},
22 {DNSName("test4.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::Api
, 3}},
23 {DNSName("test5.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::PdnsControl
, 4}},
28 suckDomains
.insert(sr
[0]);
29 suckDomains
.insert(sr
[1]);
30 suckDomains
.insert(sr
[2]);
31 suckDomains
.insert(sr
[3]);
32 suckDomains
.insert(sr
[4]);
34 for (int i
= 4; i
>= 0; i
--) {
35 auto iter
= suckDomains
.begin();
36 BOOST_CHECK_EQUAL(iter
->domain
, sr
[i
].domain
);
37 suckDomains
.erase(iter
);
39 BOOST_CHECK(suckDomains
.empty());
42 BOOST_AUTO_TEST_CASE(test_axfr_queue_insert_and_priority_order
)
45 {DNSName("test1.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::Api
, 2}},
46 {DNSName("test2.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::Api
, 1}},
47 {DNSName("test3.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::Api
, 0}},
48 {DNSName("test4.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::PdnsControl
, 4}},
49 {DNSName("test5.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::PdnsControl
, 3}},
54 suckDomains
.insert(sr
[0]);
55 suckDomains
.insert(sr
[1]);
56 suckDomains
.insert(sr
[2]);
57 suckDomains
.insert(sr
[3]);
58 suckDomains
.insert(sr
[4]);
60 for (int i
= 4; i
>= 0; i
--) {
61 auto iter
= suckDomains
.begin();
62 BOOST_CHECK_EQUAL(iter
->domain
, sr
[i
].domain
);
63 suckDomains
.erase(iter
);
65 BOOST_CHECK(suckDomains
.empty());
68 BOOST_AUTO_TEST_CASE(test_axfr_queue_insert_and_priority_order_after_modify
)
71 {DNSName("test1.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::Api
, 1}},
72 {DNSName("test2.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::Api
, 0}},
73 {DNSName("test3.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::Api
, 2}},
74 {DNSName("test4.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::PdnsControl
, 4}},
75 {DNSName("test5.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::PdnsControl
, 3}},
77 SuckRequest rr
= {DNSName("test3.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::PdnsControl
, 5}};
78 SuckRequest rr2
= {DNSName("test4.com"), ComboAddress("0.0.0.0"), false, {SuckRequest::Api
, 6}};
82 suckDomains
.insert(sr
[0]);
83 suckDomains
.insert(sr
[1]);
84 suckDomains
.insert(sr
[2]);
85 suckDomains
.insert(sr
[3]);
86 suckDomains
.insert(sr
[4]);
88 auto res
= suckDomains
.insert(rr
);
89 BOOST_CHECK(!res
.second
);
90 suckDomains
.modify(res
.first
, [priorityAndOrder
= rr
.priorityAndOrder
](SuckRequest
& so
) {
91 if (priorityAndOrder
.first
< so
.priorityAndOrder
.first
) {
92 so
.priorityAndOrder
= priorityAndOrder
;
96 res
= suckDomains
.insert(rr2
);
97 BOOST_CHECK(!res
.second
);
98 suckDomains
.modify(res
.first
, [priorityAndOrder
= rr2
.priorityAndOrder
](SuckRequest
& so
) {
99 if (priorityAndOrder
.first
< so
.priorityAndOrder
.first
) {
100 so
.priorityAndOrder
= priorityAndOrder
;
104 for (int i
= 4; i
>= 0; i
--) {
105 auto iter
= suckDomains
.begin();
106 BOOST_CHECK_EQUAL(iter
->domain
, sr
[i
].domain
);
107 suckDomains
.erase(iter
);
109 BOOST_CHECK(suckDomains
.empty());
112 BOOST_AUTO_TEST_SUITE_END()