]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#115,!48] The patch has been applied correctly to database_connection.cc|h
authorTomek Mrugalski <tomasz@isc.org>
Wed, 7 Nov 2018 19:37:19 +0000 (02:37 +0700)
committerTomek Mrugalski <tomasz@isc.org>
Wed, 7 Nov 2018 19:37:19 +0000 (02:37 +0700)
src/lib/database/database_connection.cc
src/lib/database/tests/database_connection_unittest.cc
src/lib/dhcpsrv/cfg_db_access.cc
src/lib/dhcpsrv/tests/cfg_db_access_unittest.cc

index e58ebb47522dbeda61efa07052b3c3bb3c069d2c..c5f183973877b0b67a2ad9c127325a806d7acd01 100644 (file)
@@ -162,7 +162,12 @@ DatabaseConnection::toElement(const ParameterMap& params) {
 
         if ((keyword == "lfc-interval") ||
             (keyword == "connect-timeout") ||
-            (keyword == "port")) {
+            (keyword == "request-timeout") ||
+            (keyword == "port") ||
+            (keyword == "max-reconnect-tries") ||
+            (keyword == "reconnect-wait-time") ||
+            (keyword == "tcp-keepalive")) {
+
             // integer parameters
             int64_t int_value;
             try {
@@ -173,7 +178,9 @@ DatabaseConnection::toElement(const ParameterMap& params) {
                           << "integer parameter: " << keyword << "=" << value);
             }
         } else if ((keyword == "persist") ||
-                   (keyword == "readonly")) {
+                   (keyword == "readonly") ||
+                   (keyword == "tcp-nodelay")) {
+
             if (value == "true") {
                 result->set(keyword, isc::data::Element::create(true));
             } else if (value == "false") {
index 4939365e43575ea6a9f7032b14a0f18f8de015f0..508c120e4de0fbab51dec9dd513d338534088554 100644 (file)
@@ -258,18 +258,24 @@ TEST(DatabaseConnectionTest, redactAccessStringNoPassword) {
 TEST(DatabaseConnection, toElementDbAccessStringValid) {
     const char* configs[] = {
         "{\n"
-        "\"type\": \"memfile\", \n"
-        "\"user\": \"user_str\", \n"
-        "\"name\": \"name_str\", \n"
-        "\"host\": \"host_str\", \n"
-        "\"password\": \"password_str\", \n"
+        "\"connect-timeout\" : 200, \n"
         "\"contact-points\": \"contact_str\", \n"
+        "\"host\": \"host_str\", \n"
         "\"keyspace\": \"keyspace_str\", \n"
         "\"lfc-interval\" : 100, \n"
-        "\"connect-timeout\" : 200, \n"
-        "\"port\" : 300, \n"
+        "\"host\": \"whatevah\", \n"
+        "\"max-reconnect-tries\": 5, \n"
+        "\"name\": \"name_str\", \n"
+        "\"password\": \"password_str\", \n"
         "\"persist\" : true, \n"
-        "\"readonly\" : false \n"
+        "\"port\" : 300, \n"
+        "\"readonly\" : false, \n"
+        "\"reconnect-wait-time\": 99, \n"
+        "\"request-timeout\" : 100, \n"
+        "\"tcp-keepalive\": 101, \n"
+        "\"tcp-nodelay\": false, \n"
+        "\"type\": \"memfile\", \n"
+        "\"user\": \"user_str\" \n"
         "}\n"
     };
 
index a51d338d03a6a6227782d3cabc854b4a8a8382a3..333bd557eb47a52c2e29651fe9cf2de5eaea1423 100644 (file)
@@ -84,68 +84,5 @@ CfgDbAccess::getAccessString(const std::string& access_string) const {
     return (s.str());
 }
 
-ElementPtr
-CfgDbAccess::toElementDbAccessString(const std::string& dbaccess) {
-    ElementPtr result = Element::createMap();
-    // Code from DatabaseConnection::parse
-    if (dbaccess.empty()) {
-        return (result);
-    }
-    std::vector<std::string> tokens;
-    boost::split(tokens, dbaccess, boost::is_any_of(std::string("\t ")));
-    BOOST_FOREACH(std::string token, tokens) {
-        size_t pos = token.find("=");
-        if (pos != std::string::npos) {
-            std::string keyword = token.substr(0, pos);
-            std::string value = token.substr(pos + 1);
-            if ((keyword == "lfc-interval") ||
-                (keyword == "connect-timeout") ||
-                (keyword == "request-timeout") ||
-                (keyword == "port") ||
-                (keyword == "max-reconnect-tries") ||
-                (keyword == "reconnect-wait-time") ||
-                (keyword == "tcp-keepalive")) {
-                // integer parameters
-                int64_t int_value;
-                try {
-                    int_value = boost::lexical_cast<int64_t>(value);
-                    result->set(keyword, Element::create(int_value));
-                } catch (...) {
-                    isc_throw(ToElementError, "invalid DB access "
-                              << "integer parameter: "
-                              << keyword << "=" << value);
-                }
-            } else if ((keyword == "persist") ||
-                       (keyword == "readonly") ||
-                       (keyword == "tcp-nodelay")) {
-                if (value == "true") {
-                    result->set(keyword, Element::create(true));
-                } else if (value == "false") {
-                    result->set(keyword, Element::create(false));
-                } else {
-                    isc_throw(ToElementError, "invalid DB access "
-                              << "boolean parameter: "
-                              << keyword << "=" << value);
-                }
-            } else if ((keyword == "type") ||
-                       (keyword == "user") ||
-                       (keyword == "password") ||
-                       (keyword == "host") ||
-                       (keyword == "name") ||
-                       (keyword == "contact-points") ||
-                       (keyword == "keyspace")) {
-                result->set(keyword, Element::create(value));
-            } else {
-                isc_throw(ToElementError, "unknown DB access parameter: "
-                          << keyword << "=" << value);
-            }
-        } else {
-            isc_throw(ToElementError, "Cannot unparse " << token
-                      << ", expected format is name=value");
-        }
-    }
-    return (result);
-}
-
 } // end of isc::dhcp namespace
 } // end of isc namespace
index 2b6098a4b35cbbc499b77cb8554a8db3c9f036bd..e57a6793ecd6f42ddaffc64db94583028d066c4d 100644 (file)
@@ -196,62 +196,4 @@ TEST_F(CfgMySQLDbAccessTest, createManagers) {
 
 #endif
 
-// Check that the toElementDbAccessString() handles all valid parameters
-TEST(CfgDbAccess, toElementDbAccessStringValid) {
-    const char* configs[] = {
-        "{\n"
-        "\"type\": \"memfile\", \n"
-        "\"user\": \"user_str\", \n"
-        "\"name\": \"name_str\", \n"
-        "\"host\": \"host_str\", \n"
-        "\"password\": \"password_str\", \n"
-        "\"contact-points\": \"contact_str\", \n"
-        "\"keyspace\": \"keyspace_str\", \n"
-        "\"lfc-interval\" : 100, \n"
-        "\"connect-timeout\" : 200, \n"
-        "\"port\" : 300, \n"
-        "\"persist\" : true, \n"
-        "\"readonly\" : false \n"
-        "}\n"
-    };
-
-    db::DbAccessParser parser;
-    std::string access_str;
-    data::ConstElementPtr json_elements;
-
-    ASSERT_NO_THROW(json_elements = data::Element::fromJSON(configs[0]));
-    ASSERT_NO_THROW(parser.parse(access_str, json_elements));
-
-    data::ElementPtr round_trip = CfgDbAccess::toElementDbAccessString(access_str);
-
-    ASSERT_TRUE(json_elements->equals(*round_trip));
-}
-
-// Check that toElementDbAccessString() catches invalid parameters.
-TEST(CfgDbAccess, toElementDbAccessStringInvalid) {
-    std::vector<std::string> access_strs = {
-        "bogus-param=memfile",
-        "lfc-interval=not-an-integer",
-        "connect-timeout=not-an-integer",
-        "port=not-an-integer",
-        "persist=not-boolean",
-        "readonly=not-boolean"
-    };
-
-    for (auto access_str : access_strs) {
-        ASSERT_THROW(CfgDbAccess::toElementDbAccessString(access_str),
-                     isc::ToElementError)
-                    << "access string should have failed, string=["
-                    << access_str << "]";
-    }
-}
-
-// Check that toElementDbAccessString() handles empty access string
-TEST(CfgDbAccess, toElementDbAccessStringEmpty) {
-    data::ConstElementPtr elements;
-    ASSERT_NO_THROW(elements = CfgDbAccess::toElementDbAccessString(""));
-    ASSERT_TRUE(elements);
-    ASSERT_EQ(0, elements->size());
-}
-
 } // end of anonymous namespace