diff --git a/src/lib/eval/tests/token_unittest.cc b/src/lib/eval/tests/token_unittest.cc index 39ca7f3889..e93d558f88 100644 --- a/src/lib/eval/tests/token_unittest.cc +++ b/src/lib/eval/tests/token_unittest.cc @@ -14,9 +14,6 @@ #include #include -#include -#include -#include #include #include #include @@ -55,13 +52,6 @@ public: pkt6_->addOption(option_str6_); } - /// @brief Destructor. - /// - /// Removes any option definitions registered in runtime. - virtual ~TokenTest() { - LibDHCP::clearRuntimeOptionDefs(); - } - TokenPtr t_; ///< Just a convenience pointer ValueStack values_; ///< evaluated values will be stored here @@ -72,23 +62,6 @@ public: OptionPtr option_str4_; ///< A string option for DHCPv4 OptionPtr option_str6_; ///< A string option for DHCPv6 - /// @brief Create definitions of DHCPv4 options used by unit tests. - void createOptionDefinitions4() { - OptionDefSpaceContainer defs; - OptionDefinitionPtr opt_def4(new OptionDefinition("name-hundred4", - 100, "string")); - defs.addItem(opt_def4, "dhcp4"); - LibDHCP::setRuntimeOptionDefs(defs); - } - - /// @brief Create definitions of DHCPv6 options used by unit tests. - void createOptionDefinitions6() { - OptionDefSpaceContainer defs; - OptionDefinitionPtr opt_def6(new OptionDefinition("name-hundred6", - 100, "string")); - defs.addItem(opt_def6, "dhcp6"); - LibDHCP::setRuntimeOptionDefs(defs); - } /// @brief Verify that the substring eval works properly /// @@ -301,28 +274,6 @@ TEST_F(TokenTest, optionString4) { EXPECT_EQ("hundred4", values_.top()); } -// This test checks if a token representing an option identified by name is -// able to extract this option from an IPv4 packet and properly store the -// option's value. -TEST_F(TokenTest, optionWithNameString4) { - // Create definition of option 100 to provide a mapping between option - // code and option name. - ASSERT_NO_THROW(createOptionDefinitions4()); - - // Create token for option referenced by name. The constructor should - // map the option name to its code. - TokenPtr token; - ASSERT_NO_THROW(token.reset(new TokenOption("name-hundred4", Option::V4, - TokenOption::TEXTUAL))); - - // Evaluate option in the packet. - ASSERT_NO_THROW(token->evaluate(*pkt4_, values_)); - ASSERT_EQ(1, values_.size()); - - // Then the content of the option. - EXPECT_EQ("hundred4", values_.top()); -} - // This test checks if a token representing option value is able to extract // the option from an IPv4 packet and properly store its value in a // hexadecimal format. @@ -352,28 +303,6 @@ TEST_F(TokenTest, optionHexString4) { EXPECT_EQ("hundred4", values_.top()); } -// This test checks if a token representing an option identified by name is -// able to extract this option from an IPv4 packet and properly store its -// value in the hexadecimal format. -TEST_F(TokenTest, optionWithNameHexString4) { - // Create definition of option 100 to provide a mapping between option - // code and option name. - ASSERT_NO_THROW(createOptionDefinitions4()); - - // Create token for option referenced by name. The constructor should - // map the option name to its code. - TokenPtr token; - ASSERT_NO_THROW(token.reset(new TokenOption("name-hundred4", Option::V4, - TokenOption::HEXADECIMAL))); - - // Evaluate option in the packet. - ASSERT_NO_THROW(token->evaluate(*pkt4_, values_)); - ASSERT_EQ(1, values_.size()); - - // Then the content of the option. - EXPECT_EQ("hundred4", values_.top()); -} - // This test checks if a token representing an option value is able to extract // the option from an IPv6 packet and properly store the option's value. TEST_F(TokenTest, optionString6) { @@ -402,29 +331,6 @@ TEST_F(TokenTest, optionString6) { EXPECT_EQ("hundred6", values_.top()); } -// This test checks if a token representing an option identified by name is -// able to extract this option from an IPv6 packet and properly store the -// option's value. -TEST_F(TokenTest, optionWithNameString6) { - // Create definition of option 100 to provide a mapping between option - // code and option name. - ASSERT_NO_THROW(createOptionDefinitions6()); - - // Create token for option referenced by name. The constructor should - // map the option name to its code. - TokenPtr token; - ASSERT_NO_THROW(token.reset(new TokenOption("name-hundred6", Option::V6, - TokenOption::TEXTUAL))); - - // Evaluate option in the packet. - ASSERT_NO_THROW(token->evaluate(*pkt6_, values_)); - ASSERT_EQ(1, values_.size()); - - // Then the content of the option. - EXPECT_EQ("hundred6", values_.top()); -} - - // This test checks if a token representing an option value is able to extract // the option from an IPv6 packet and properly store its value in hexadecimal // format. @@ -454,28 +360,6 @@ TEST_F(TokenTest, optionHexString6) { EXPECT_EQ("hundred6", values_.top()); } -// This test checks if a token representing an option identified by name is -// able to extract this option from an IPv6 packet and properly store its -// value in the hexadecimal format. -TEST_F(TokenTest, optionWithNameHexString6) { - // Create definition of option 100 to provide a mapping between option - // code and option name. - ASSERT_NO_THROW(createOptionDefinitions6()); - - // Create token for option referenced by name. The constructor should - // map the option name to its code. - TokenPtr token; - ASSERT_NO_THROW(token.reset(new TokenOption("name-hundred6", Option::V6, - TokenOption::HEXADECIMAL))); - - // Evaluate option in the packet. - ASSERT_NO_THROW(token->evaluate(*pkt6_, values_)); - ASSERT_EQ(1, values_.size()); - - // Then the content of the option. - EXPECT_EQ("hundred6", values_.top()); -} - // This test checks if a token representing an == operator is able to // compare two values (with incorrectly built stack). TEST_F(TokenTest, optionEqualInvalid) { diff --git a/src/lib/eval/token.cc b/src/lib/eval/token.cc index 0a5a425d07..59df54ce22 100644 --- a/src/lib/eval/token.cc +++ b/src/lib/eval/token.cc @@ -14,8 +14,6 @@ #include #include -#include -#include #include #include #include @@ -64,26 +62,6 @@ TokenHexString::evaluate(const Pkt& /*pkt*/, ValueStack& values) { values.push(value_); } -TokenOption::TokenOption(const std::string& option_name, - const Option::Universe& option_universe, - const RepresentationType& rep_type) - : option_code_(0), representation_type_(rep_type) { - OptionDefinitionPtr option_def = LibDHCP::getOptionDef(option_universe, - option_name); - if (!option_def) { - const std::string global_space = - (option_universe == Option::V4) ? "dhcp4" : "dhcp6"; - option_def = LibDHCP::getRuntimeOptionDef(global_space, option_name); - } - - if (!option_def) { - isc_throw(BadValue, "option '" << option_name << "' is not defined"); - } - - option_code_ = option_def->getCode(); -} - - void TokenOption::evaluate(const Pkt& pkt, ValueStack& values) { OptionPtr opt = pkt.getOption(option_code_); diff --git a/src/lib/eval/token.h b/src/lib/eval/token.h index c379ee6e9d..a476948adc 100644 --- a/src/lib/eval/token.h +++ b/src/lib/eval/token.h @@ -16,10 +16,8 @@ #define TOKEN_H #include -#include #include #include -#include namespace isc { namespace dhcp { @@ -163,25 +161,16 @@ public: }; /// @brief Constructor that takes an option code as a parameter + /// @param option_code code of the option /// - /// @param option_code Code of the option to be represented. + /// Note: There is no constructor that takes option_name, as it would + /// introduce complex dependency of the libkea-eval on libdhcpsrv. + /// + /// @param option_code code of the option to be represented. /// @param rep_type Token representation type. TokenOption(const uint16_t option_code, const RepresentationType& rep_type) : option_code_(option_code), representation_type_(rep_type) {} - /// @brief Constructor that takes option name as a parameter. - /// - /// This constructor will throw exception if there is no definition using - /// specified option name in libdhcp++. - /// - /// @param option_name Name of the option to be represented. - /// @param option_universe Option universe: DHCPv4 or DHCPv6. - /// @param rep_type Token representation type. - /// @throw BadValue when the option_name cannot be resolved - TokenOption(const std::string& option_name, - const Option::Universe& option_universe, - const RepresentationType& rep_type); - /// @brief Evaluates the values of the option /// /// This token represents a value of the option, so this method attempts