From: Remi Gacogne Date: Tue, 5 Dec 2023 13:59:53 +0000 (+0100) Subject: dnsdist: Add unit tests for PayloadSizeRule X-Git-Tag: dnsdist-1.9.0-alpha4~4^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8694a20dba101688b29fd50ecc8b8203ece0c05d;p=thirdparty%2Fpdns.git dnsdist: Add unit tests for PayloadSizeRule --- diff --git a/pdns/dnsdistdist/test-dnsdistrules_cc.cc b/pdns/dnsdistdist/test-dnsdistrules_cc.cc index b709bd4816..64cae299d3 100644 --- a/pdns/dnsdistdist/test-dnsdistrules_cc.cc +++ b/pdns/dnsdistdist/test-dnsdistrules_cc.cc @@ -157,4 +157,75 @@ BOOST_AUTO_TEST_CASE(test_poolOutstandingRule) { BOOST_CHECK_EQUAL(pOR2.matches(&dq), false); } +BOOST_AUTO_TEST_CASE(test_payloadSizeRule) { + auto dq = getDQ(); + + { + PayloadSizeRule rule("equal", dq.getData().size()); + BOOST_CHECK_EQUAL(rule.matches(&dq), true); + BOOST_CHECK_EQUAL(rule.toString(), "payload size is equal to " + std::to_string(dq.getData().size())); + } + + { + PayloadSizeRule rule("equal", dq.getData().size() + 1); + BOOST_CHECK_EQUAL(rule.matches(&dq), false); + } + + { + PayloadSizeRule rule("greater", dq.getData().size()); + BOOST_CHECK_EQUAL(rule.matches(&dq), false); + BOOST_CHECK_EQUAL(rule.toString(), "payload size is greater than " + std::to_string(dq.getData().size())); + } + + { + PayloadSizeRule rule("greater", dq.getData().size() - 1); + BOOST_CHECK_EQUAL(rule.matches(&dq), true); + } + + { + PayloadSizeRule rule("smaller", dq.getData().size()); + BOOST_CHECK_EQUAL(rule.matches(&dq), false); + BOOST_CHECK_EQUAL(rule.toString(), "payload size is smaller than " + std::to_string(dq.getData().size())); + } + + { + PayloadSizeRule rule("smaller", dq.getData().size() + 1); + BOOST_CHECK_EQUAL(rule.matches(&dq), true); + } + + { + PayloadSizeRule rule("greaterOrEqual", dq.getData().size()); + BOOST_CHECK_EQUAL(rule.matches(&dq), true); + BOOST_CHECK_EQUAL(rule.toString(), "payload size is equal to or greater than " + std::to_string(dq.getData().size())); + } + + { + PayloadSizeRule rule("greaterOrEqual", dq.getData().size() - 1); + BOOST_CHECK_EQUAL(rule.matches(&dq), true); + } + + { + PayloadSizeRule rule("greaterOrEqual", dq.getData().size() + 1); + BOOST_CHECK_EQUAL(rule.matches(&dq), false); + } + + { + PayloadSizeRule rule("smallerOrEqual", dq.getData().size()); + BOOST_CHECK_EQUAL(rule.matches(&dq), true); + BOOST_CHECK_EQUAL(rule.toString(), "payload size is equal to or smaller than " + std::to_string(dq.getData().size())); + } + + { + PayloadSizeRule rule("smallerOrEqual", dq.getData().size() + 1); + BOOST_CHECK_EQUAL(rule.matches(&dq), true); + } + + { + PayloadSizeRule rule("smallerOrEqual", dq.getData().size() - 1); + BOOST_CHECK_EQUAL(rule.matches(&dq), false); + } + + BOOST_CHECK_THROW(PayloadSizeRule("invalid", 42U), std::runtime_error); +} + BOOST_AUTO_TEST_SUITE_END()