]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2727] introduce HAVE_MYSQL_GET_OPTION
authorAndrei Pavel <andrei@isc.org>
Fri, 20 Jan 2023 20:41:53 +0000 (22:41 +0200)
committerAndrei Pavel <andrei@isc.org>
Thu, 13 Jul 2023 16:13:39 +0000 (19:13 +0300)
Addresses error:
 mysql_connection_unittest.cc: In member function ‘virtual void {anonymous}::MySqlConnectionTest_connectionTimeout_Test::TestBody()’:
 mysql_connection_unittest.cc:633:77: error: ‘mysql_get_option’ was not declared in this scope
      EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_CONNECT_TIMEOUT, &timeout));

configure.ac
src/lib/mysql/tests/mysql_connection_unittest.cc

index 3356a8c9e33281cb123d5af1df09495eac0ef904..fac7847241d055467450112b2467542bef2c74dd 100644 (file)
@@ -710,7 +710,7 @@ if test "$MYSQL_CONFIG" != "" ; then
     # Note that MYSQL is present in the config.h file
     AC_DEFINE([HAVE_MYSQL], [1], [MySQL is present])
 
-    # Check is my_bool is defined.
+    # Check if my_bool is defined.
     AC_COMPILE_IFELSE(
         [AC_LANG_PROGRAM([#include <mysql.h>
                           const my_bool MLM_FALSE = 0;]
@@ -719,9 +719,27 @@ if test "$MYSQL_CONFIG" != "" ; then
          AC_DEFINE([HAVE_MYSQL_MY_BOOL], [1], [MySQL uses my_bool])],
         [AC_MSG_RESULT([checking for MySQL my_bool... no])])
 
+    # Check if mysql_get_option is defined.
+    AC_MSG_CHECKING([for MySQL mysql_get_option])
+    AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+            [#include <mysql.h>],
+            [MYSQL handle;
+             unsigned int timeout;
+             mysql_get_option(&handle, MYSQL_OPT_CONNECT_TIMEOUT, &timeout);]
+        )],
+        [AC_MSG_RESULT([yes])
+         AC_DEFINE([HAVE_MYSQL_GET_OPTION], [true], [MySQL has mysql_get_option defined.])],
+        [AC_MSG_RESULT([no])
+         AC_MSG_WARN([mysql_get_option program failed to build:
+
+$(cat conftest.cpp)
+
+$(cat conftest.err)])]
+    )
+
     CPPFLAGS=$CPPFLAGS_SAVED
     LIBS=$LIBS_SAVED
-
 fi
 
 # Solaris puts FIONREAD in filio.h
index a6d4bbde49ade53405b181fe641fd1dc5b1b80e6..cc2b21d3ea43b6f4290090e986dfca41ba2982dc 100644 (file)
@@ -173,7 +173,6 @@ public:
         mysql_stmt_close(stmt);
     }
 
-
     /// @brief Tests inserting and retrieving data from the database.
     ///
     /// In this test data carried in the bindings is inserted into the database.
@@ -618,22 +617,6 @@ TEST_F(MySqlConnectionTest, portInvalid) {
     EXPECT_THROW(conn.openDatabase(), DbInvalidPort);
 }
 
-
-// Tests that valid connection timeout is accepted.
-TEST_F(MySqlConnectionTest, connectionTimeout) {
-    std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
-                                            VALID_HOST_TCP, VALID_USER,
-                                            VALID_PASSWORD, VALID_TIMEOUT);
-    MySqlConnection conn(DatabaseConnection::parse(conn_str));
-    ASSERT_NO_THROW_LOG(conn.openDatabase());
-
-    auto mysql = static_cast<MYSQL*>(conn.mysql_);
-    ASSERT_TRUE(mysql);
-    unsigned int timeout = 123;
-    EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_CONNECT_TIMEOUT, &timeout));
-    EXPECT_EQ(10, timeout);
-}
-
 // Tests that invalid timeout value type causes an error.
 TEST_F(MySqlConnectionTest, connectionTimeoutInvalid) {
     std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
@@ -661,6 +644,41 @@ TEST_F(MySqlConnectionTest, connectionTimeoutInvalid3) {
     EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
 }
 
+// Tests that an invalid read timeout causes an error.
+TEST_F(MySqlConnectionTest, readTimeoutInvalid) {
+    std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
+                                            VALID_HOST_TCP, VALID_USER,
+                                            VALID_PASSWORD, INVALID_READ_TIMEOUT_1);
+    MySqlConnection conn(DatabaseConnection::parse(conn_str));
+    EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
+}
+
+// Tests that an invalid write timeout causes an error.
+TEST_F(MySqlConnectionTest, writeTimeoutInvalid) {
+    std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
+                                            VALID_HOST_TCP, VALID_USER,
+                                            VALID_PASSWORD, INVALID_WRITE_TIMEOUT_1);
+    MySqlConnection conn(DatabaseConnection::parse(conn_str));
+    EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
+}
+
+#ifdef HAVE_MYSQL_GET_OPTION
+
+// Tests that valid connection timeout is accepted.
+TEST_F(MySqlConnectionTest, connectionTimeout) {
+    std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
+                                            VALID_HOST_TCP, VALID_USER,
+                                            VALID_PASSWORD, VALID_TIMEOUT);
+    MySqlConnection conn(DatabaseConnection::parse(conn_str));
+    ASSERT_NO_THROW_LOG(conn.openDatabase());
+
+    auto mysql = static_cast<MYSQL*>(conn.mysql_);
+    ASSERT_TRUE(mysql);
+    unsigned int timeout = 123;
+    EXPECT_EQ(0, mysql_get_option(mysql, MYSQL_OPT_CONNECT_TIMEOUT, &timeout));
+    EXPECT_EQ(10, timeout);
+}
+
 // Tests that a valid read timeout is accepted.
 TEST_F(MySqlConnectionTest, readTimeout) {
     std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
@@ -691,15 +709,6 @@ TEST_F(MySqlConnectionTest, readTimeoutZero) {
     EXPECT_EQ(0, timeout);
 }
 
-// Tests that an invalid read timeout causes an error.
-TEST_F(MySqlConnectionTest, readTimeoutInvalid) {
-    std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
-                                            VALID_HOST_TCP, VALID_USER,
-                                            VALID_PASSWORD, INVALID_READ_TIMEOUT_1);
-    MySqlConnection conn(DatabaseConnection::parse(conn_str));
-    EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
-}
-
 // Tests that a valid write timeout is accepted.
 TEST_F(MySqlConnectionTest, writeTimeout) {
     std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
@@ -730,14 +739,7 @@ TEST_F(MySqlConnectionTest, writeTimeoutZero) {
     EXPECT_EQ(0, timeout);
 }
 
-// Tests that an invalid write timeout causes an error.
-TEST_F(MySqlConnectionTest, writeTimeoutInvalid) {
-    std::string conn_str = connectionString(MYSQL_VALID_TYPE, VALID_NAME,
-                                            VALID_HOST_TCP, VALID_USER,
-                                            VALID_PASSWORD, INVALID_WRITE_TIMEOUT_1);
-    MySqlConnection conn(DatabaseConnection::parse(conn_str));
-    EXPECT_THROW(conn.openDatabase(), DbInvalidTimeout);
-}
+#endif  // HAVE_MYSQL_GET_OPTION
 
 TEST_F(MySqlConnectionWithPrimaryKeyTest, select) {
     select();