Browse Source

[4204fd] Reverted to original token.{h,cc}

Francis Dupont 9 years ago
parent
commit
73f048feb5
3 changed files with 5 additions and 154 deletions
  1. 0 116
      src/lib/eval/tests/token_unittest.cc
  2. 0 22
      src/lib/eval/token.cc
  3. 5 16
      src/lib/eval/token.h

+ 0 - 116
src/lib/eval/tests/token_unittest.cc

@@ -14,9 +14,6 @@
 
 
 #include <config.h>
 #include <config.h>
 #include <eval/token.h>
 #include <eval/token.h>
-#include <dhcp/libdhcp++.h>
-#include <dhcp/option.h>
-#include <dhcp/option_definition.h>
 #include <dhcp/pkt4.h>
 #include <dhcp/pkt4.h>
 #include <dhcp/pkt6.h>
 #include <dhcp/pkt6.h>
 #include <dhcp/dhcp4.h>
 #include <dhcp/dhcp4.h>
@@ -55,13 +52,6 @@ public:
         pkt6_->addOption(option_str6_);
         pkt6_->addOption(option_str6_);
     }
     }
 
 
-    /// @brief Destructor.
-    ///
-    /// Removes any option definitions registered in runtime.
-    virtual ~TokenTest() {
-        LibDHCP::clearRuntimeOptionDefs();
-    }
-
     TokenPtr t_; ///< Just a convenience pointer
     TokenPtr t_; ///< Just a convenience pointer
 
 
     ValueStack values_; ///< evaluated values will be stored here
     ValueStack values_; ///< evaluated values will be stored here
@@ -72,23 +62,6 @@ public:
     OptionPtr option_str4_; ///< A string option for DHCPv4
     OptionPtr option_str4_; ///< A string option for DHCPv4
     OptionPtr option_str6_; ///< A string option for DHCPv6
     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
     /// @brief Verify that the substring eval works properly
     ///
     ///
@@ -301,28 +274,6 @@ TEST_F(TokenTest, optionString4) {
     EXPECT_EQ("hundred4", values_.top());
     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
 // 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
 // the option from an IPv4 packet and properly store its value in a
 // hexadecimal format.
 // hexadecimal format.
@@ -352,28 +303,6 @@ TEST_F(TokenTest, optionHexString4) {
     EXPECT_EQ("hundred4", values_.top());
     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
 // 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.
 // the option from an IPv6 packet and properly store the option's value.
 TEST_F(TokenTest, optionString6) {
 TEST_F(TokenTest, optionString6) {
@@ -402,29 +331,6 @@ TEST_F(TokenTest, optionString6) {
     EXPECT_EQ("hundred6", values_.top());
     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
 // 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
 // the option from an IPv6 packet and properly store its value in hexadecimal
 // format.
 // format.
@@ -454,28 +360,6 @@ TEST_F(TokenTest, optionHexString6) {
     EXPECT_EQ("hundred6", values_.top());
     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
 // This test checks if a token representing an == operator is able to
 // compare two values (with incorrectly built stack).
 // compare two values (with incorrectly built stack).
 TEST_F(TokenTest, optionEqualInvalid) {
 TEST_F(TokenTest, optionEqualInvalid) {

+ 0 - 22
src/lib/eval/token.cc

@@ -14,8 +14,6 @@
 
 
 #include <eval/token.h>
 #include <eval/token.h>
 #include <eval/eval_log.h>
 #include <eval/eval_log.h>
-#include <dhcp/option_definition.h>
-#include <dhcp/libdhcp++.h>
 #include <util/encode/hex.h>
 #include <util/encode/hex.h>
 #include <boost/lexical_cast.hpp>
 #include <boost/lexical_cast.hpp>
 #include <cstring>
 #include <cstring>
@@ -64,26 +62,6 @@ TokenHexString::evaluate(const Pkt& /*pkt*/, ValueStack& values) {
     values.push(value_);
     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
 void
 TokenOption::evaluate(const Pkt& pkt, ValueStack& values) {
 TokenOption::evaluate(const Pkt& pkt, ValueStack& values) {
     OptionPtr opt = pkt.getOption(option_code_);
     OptionPtr opt = pkt.getOption(option_code_);

+ 5 - 16
src/lib/eval/token.h

@@ -16,10 +16,8 @@
 #define TOKEN_H
 #define TOKEN_H
 
 
 #include <exceptions/exceptions.h>
 #include <exceptions/exceptions.h>
-#include <dhcp/option.h>
 #include <dhcp/pkt.h>
 #include <dhcp/pkt.h>
 #include <stack>
 #include <stack>
-#include <string>
 
 
 namespace isc {
 namespace isc {
 namespace dhcp {
 namespace dhcp {
@@ -163,25 +161,16 @@ public:
     };
     };
 
 
     /// @brief Constructor that takes an option code as a parameter
     /// @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.
     /// @param rep_type Token representation type.
     TokenOption(const uint16_t option_code, const RepresentationType& rep_type)
     TokenOption(const uint16_t option_code, const RepresentationType& rep_type)
         : option_code_(option_code), representation_type_(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
     /// @brief Evaluates the values of the option
     ///
     ///
     /// This token represents a value of the option, so this method attempts
     /// This token represents a value of the option, so this method attempts