" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"record\","
- " \"array\": False,"
" \"record-types\": \"uint16, ipv4-address, ipv6-address, string\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" },"
" {"
" \"name\": \"foo-2\","
" \"code\": 101,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" },"
" {"
" \"name\": \"foo-2\","
" \"code\": 100,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"code\": 100,"
" \"type\": \"uint32\","
" \"array\": True,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
" \"space\": \"isc\","
" \"encapsulate\": \"sub-opts-space\""
" } ]"
" \"name\": \"invalid%name\","
" \"code\": 100,"
" \"type\": \"string\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"sting\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"record\","
- " \"array\": False,"
" \"record-types\": \"uint32,uint8,sting\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
" \"space\": \"isc\","
" \"encapsulate\": \"invalid%space%name\""
" } ]"
" \"code\": 100,"
" \"type\": \"uint32\","
" \"array\": True,"
- " \"record-types\": \"\","
" \"space\": \"isc\","
" \"encapsulate\": \"valid-space-name\""
" } ]"
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
" \"space\": \"isc\","
" \"encapsulate\": \"isc\""
" } ]"
" \"name\": \"foo\","
" \"code\": 109,"
" \"type\": \"string\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp4\","
- " \"encapsulate\": \"\""
+ " \"space\": \"dhcp4\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"routers\","
" \"code\": 3,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp4\","
- " \"encapsulate\": \"\""
+ " \"space\": \"dhcp4\""
" } ]"
"}";
json = Element::fromJSON(config);
" \"name\": \"nis-server-addr\","
" \"code\": 65,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp4\","
- " \"encapsulate\": \"\""
+ " \"space\": \"dhcp4\""
" } ]"
"}";
json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 56,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ],"
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ],"
" \"name\": \"foo\","
" \"code\": 1,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" },"
" {"
" \"name\": \"foo2\","
" \"code\": 2,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
" \"name\": \"base-option\","
" \"code\": 222,"
" \"type\": \"uint8\","
- " \"array\": False,"
- " \"record-types\": \"\","
" \"space\": \"dhcp4\","
" \"encapsulate\": \"isc\""
"},"
" \"name\": \"foo\","
" \"code\": 1,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" },"
" {"
" \"name\": \"foo2\","
" \"code\": 2,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ],"
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ],"
" \"name\": \"foo\","
" \"code\": 1,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-encapsulated-options-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-encapsulated-options-space\""
" },"
" {"
" \"name\": \"foo2\","
" \"code\": 2,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-encapsulated-options-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-encapsulated-options-space\""
" } ]"
"}";
" \"name\": \"foo\","
" \"code\": 1,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-encapsulated-options-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-encapsulated-options-space\""
" },"
" {"
" \"name\": \"foo2\","
" \"code\": 2,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-encapsulated-options-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-encapsulated-options-space\""
" } ],"
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ],"
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"string\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-4491\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-4491\""
" } ],"
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ],"
" \"name\": \"foo\","
" \"code\": 56,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ],"
"\"subnet4\": [ { "
" \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ],"
" \"name\": \"bool-option\","
" \"code\": 1000,"
" \"type\": \"boolean\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp6\","
- " \"encapsulate\": \"\""
+ " \"space\": \"dhcp6\""
"} ],"
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8:1::/80\" } ],"
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"ipv6-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"record\","
- " \"array\": False,"
" \"record-types\": \"uint16, ipv4-address, ipv6-address, string\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" },"
" {"
" \"name\": \"foo-2\","
" \"code\": 101,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" },"
" {"
" \"name\": \"foo-2\","
" \"code\": 100,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"code\": 100,"
" \"type\": \"uint32\","
" \"array\": True,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
" \"space\": \"isc\","
" \"encapsulate\": \"sub-opts-space\""
" } ]"
" \"name\": \"invalid%name\","
" \"code\": 100,"
" \"type\": \"string\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"sting\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"record\","
- " \"array\": False,"
" \"record-types\": \"uint32,uint8,sting\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
" \"space\": \"isc\","
" \"encapsulate\": \"invalid%space%name\""
" } ]"
" \"code\": 100,"
" \"type\": \"uint32\","
" \"array\": True,"
- " \"record-types\": \"\","
" \"space\": \"isc\","
" \"encapsulate\": \"valid-space-name\""
" } ]"
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
" \"space\": \"isc\","
" \"encapsulate\": \"isc\""
" } ]"
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"string\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp6\","
- " \"encapsulate\": \"\""
+ " \"space\": \"dhcp6\""
" } ]"
"}";
ElementPtr json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 3,"
" \"type\": \"string\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp6\","
- " \"encapsulate\": \"\""
+ " \"space\": \"dhcp6\""
" } ]"
"}";
json = Element::fromJSON(config);
" \"name\": \"geolocation\","
" \"code\": 63,"
" \"type\": \"string\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp6\","
- " \"encapsulate\": \"\""
+ " \"space\": \"dhcp6\""
" } ]"
"}";
json = Element::fromJSON(config);
" \"name\": \"foo\","
" \"code\": 38,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ],"
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8:1::/80\" } ],"
" \"name\": \"foo\","
" \"code\": 110,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" },"
" {"
" \"name\": \"foo2\","
" \"code\": 111,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ]"
"}";
" \"name\": \"base-option\","
" \"code\": 100,"
" \"type\": \"uint8\","
- " \"array\": False,"
- " \"record-types\": \"\","
" \"space\": \"dhcp6\","
" \"encapsulate\": \"isc\""
"},"
" \"name\": \"foo\","
" \"code\": 110,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" },"
" {"
" \"name\": \"foo2\","
" \"code\": 111,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ],"
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8:1::/80\" } ],"
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"string\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-4491\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-4491\""
" } ],"
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8:1::/80\" } ],"
" \"name\": \"foo\","
" \"code\": 110,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-opts-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-opts-space\""
" },"
" {"
" \"name\": \"foo2\","
" \"code\": 111,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-opts-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-opts-space\""
" } ]"
"}";
" \"name\": \"foo\","
" \"code\": 110,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-opts-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-opts-space\""
" },"
" {"
" \"name\": \"foo2\","
" \"code\": 111,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-opts-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-opts-space\""
" } ],"
"\"subnet6\": [ { "
" \"pools\": [ { \"pool\": \"2001:db8:1::/80\" } ],"
" \"name\": \"foo\","
" \"code\": 110,"
" \"type\": \"uint32\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-opts-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-opts-space\""
" },"
" {"
" \"name\": \"foo2\","
" \"code\": 111,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"vendor-opts-space\","
- " \"encapsulate\": \"\""
+ " \"space\": \"vendor-opts-space\""
" } ]"
"}");
std::string error_text_;
};
-/// @brief Check Basic parsing of option definitions.
+/// @brief Check basic parsing of option definitions.
///
/// Note that this tests basic operation of the OptionDefinitionListParser and
-/// OptionDefinitionParser. It uses a simple configuration consisting of one
+/// OptionDefinitionParser. It uses a simple configuration consisting of
/// one definition and verifies that it is parsed and committed to storage
/// correctly.
TEST_F(ParseConfigTest, basicOptionDefTest) {
EXPECT_TRUE(def->getEncapsulatedSpace().empty());
}
+/// @brief Check minimal parsing of option definitions.
+///
+/// Same than basic but without optional parameters set to their default.
+TEST_F(ParseConfigTest, minimalOptionDefTest) {
+
+ // Configuration string.
+ std::string config =
+ "{ \"option-def\": [ {"
+ " \"name\": \"foo\","
+ " \"code\": 100,"
+ " \"type\": \"ipv4-address\","
+ " \"space\": \"isc\""
+ " } ]"
+ "}";
+
+ // Verify that the configuration string parses.
+ int rcode = parseConfiguration(config);
+ ASSERT_TRUE(rcode == 0);
+
+
+ // Verify that the option definition can be retrieved.
+ OptionDefinitionPtr def =
+ CfgMgr::instance().getStagingCfg()->getCfgOptionDef()->get("isc", 100);
+ ASSERT_TRUE(def);
+
+ // Verify that the option definition is correct.
+ EXPECT_EQ("foo", def->getName());
+ EXPECT_EQ(100, def->getCode());
+ EXPECT_FALSE(def->getArrayType());
+ EXPECT_EQ(OPT_IPV4_ADDRESS_TYPE, def->getType());
+ EXPECT_TRUE(def->getEncapsulatedSpace().empty());
+}
+
/// @brief Check Basic parsing of options.
///
/// Note that this tests basic operation of the OptionDataListParser and
" \"name\": \"foo\","
" \"code\": 100,"
" \"type\": \"ipv4-address\","
- " \"array\": False,"
- " \"record-types\": \"\","
- " \"space\": \"isc\","
- " \"encapsulate\": \"\""
+ " \"space\": \"isc\""
" } ], "
" \"option-data\": [ {"
" \"name\": \"foo\","
" \"code\": 2345,"
" \"type\": \"ipv6-address\","
" \"array\": True,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp6\","
- " \"encapsulate\": \"\""
+ " \"space\": \"dhcp6\""
" } ],"
" \"option-data\": [ {"
" \"name\": \"foo-name\","
" \"code\": 2345,"
" \"type\": \"ipv6-address\","
" \"array\": True,"
- " \"record-types\": \"\","
- " \"space\": \"dhcp6\","
- " \"encapsulate\": \"\""
+ " \"space\": \"dhcp6\""
" } ],"
" \"option-data\": [ {"
" \"code\": 2345,"