From: Andrei Pavel Date: Fri, 11 Mar 2022 09:00:00 +0000 (+0200) Subject: [#2353] log exceptions in MySQL unit tests X-Git-Tag: Kea-2.1.5~103 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7fb02feefce664ffe16283109d47f76d02b0b503;p=thirdparty%2Fkea.git [#2353] log exceptions in MySQL unit tests --- diff --git a/doc/devel/unit-tests.dox b/doc/devel/unit-tests.dox index 3d6f8b9f54..ae424f5958 100644 --- a/doc/devel/unit-tests.dox +++ b/doc/devel/unit-tests.dox @@ -197,7 +197,7 @@ anything e.g. `DEBUG=true`. `unset DEBUG` to remove this behavior. %@endverbatim The unit tests are run automatically when "make check" is executed (providing - that Kea has been build with the \c --with-mysql switch (see the installation + that Kea has been built with the \c --with-mysql switch (see the installation section in the Kea Administrator Reference Manual). @@ -392,12 +392,12 @@ local all postgres trust @section unitTestsKerberos Kerberos Configuration for Unit Tests The GSS-TSIG hook library uses the GSS-API with Kerberos. While there are -no doubts that the hook can be safely used with a valid Kerberos configuration +no doubts that the hook can be safely used with a valid Kerberos configuration in production, unit tests reported problems on some systems. GSS-TSIG hook unit tests use a setup inherited from bind9 with old crypto settings which are not allowed by default Kerberos system configuration. -A simple workaround is to set the KRB5_CONFIG environment variable to +A simple workaround is to set the KRB5_CONFIG environment variable to a random value that doesn't match a file (e.g. KRB5_CONFIG=). @section writingShellScriptsAndTests Writing shell scripts and tests diff --git a/src/lib/mysql/tests/mysql_connection_unittest.cc b/src/lib/mysql/tests/mysql_connection_unittest.cc index 39a691746e..19d1a6ae72 100644 --- a/src/lib/mysql/tests/mysql_connection_unittest.cc +++ b/src/lib/mysql/tests/mysql_connection_unittest.cc @@ -9,10 +9,14 @@ #include #include #include -#include -#include +#include + #include +#include + +#include + using namespace isc::db; using namespace isc::db::test; @@ -185,8 +189,8 @@ public: ASSERT_FALSE(in_bindings[1]->amNull()); // Store data in the database. - ASSERT_NO_THROW(conn_.insertQuery(MySqlConnectionTest::INSERT_VALUE, - in_bindings)); + ASSERT_NO_THROW_LOG(conn_.insertQuery(MySqlConnectionTest::INSERT_VALUE, + in_bindings)); // Create input binding for select query. MySqlBindingCollection bindings = @@ -204,9 +208,9 @@ public: // Execute select statement. We expect one row to be returned. For this // returned row the lambda provided as 4th argument should be executed. - ASSERT_NO_THROW(conn_.selectQuery(MySqlConnectionTest::GET_BY_INT_VALUE, - bindings, out_bindings, - [&](MySqlBindingCollection& out_bindings) { + ASSERT_NO_THROW_LOG(conn_.selectQuery(MySqlConnectionTest::GET_BY_INT_VALUE, + bindings, out_bindings, + [&](MySqlBindingCollection& out_bindings) { // Compare received data with input data assuming they are both non-null. @@ -436,7 +440,7 @@ public: MySqlBinding::createNull(), }; - ASSERT_NO_THROW( + ASSERT_NO_THROW_LOG( conn_.insertQuery(MySqlConnectionTest::INSERT_VALUE, in_bindings)); // This variable will be checked to see if the row has been deleted @@ -446,14 +450,14 @@ public: // Execute delete query but use int_value of non existing row. // The row should not be deleted. in_bindings = {MySqlBinding::createInteger(1)}; - ASSERT_NO_THROW( + ASSERT_NO_THROW_LOG( deleted = conn_.updateDeleteQuery( MySqlConnectionTest::DELETE_BY_INT_VALUE, in_bindings)); ASSERT_FALSE(deleted); // This time use the correct value. in_bindings = {MySqlBinding::createInteger(1024)}; - ASSERT_NO_THROW( + ASSERT_NO_THROW_LOG( deleted = conn_.updateDeleteQuery( MySqlConnectionTest::DELETE_BY_INT_VALUE, in_bindings)); // The row should have been deleted. @@ -469,15 +473,15 @@ public: MySqlBinding::createTimestamp(), }; - ASSERT_NO_THROW(conn_.selectQuery(MySqlConnectionTest::GET_BY_INT_VALUE, - in_bindings, out_bindings, - [&deleted](MySqlBindingCollection&) { - // This will be executed if the - // row is returned as a result of - // select query. We expect that - // this is not executed. - deleted = false; - })); + ASSERT_NO_THROW_LOG(conn_.selectQuery(MySqlConnectionTest::GET_BY_INT_VALUE, + in_bindings, out_bindings, + [&deleted](MySqlBindingCollection&) { + // This will be executed if the + // row is returned as a result of + // select query. We expect that + // this is not executed. + deleted = false; + })); // Make sure that select query returned nothing. EXPECT_TRUE(deleted); } @@ -653,7 +657,7 @@ TEST_F(MySqlSchemaTest, checkVersion) { // Check version auto parameters = DatabaseConnection::parse(validMySQLConnectionString()); std::pair version; - ASSERT_NO_THROW(version = MySqlConnection::getVersion(parameters)); + ASSERT_NO_THROW_LOG(version = MySqlConnection::getVersion(parameters)); EXPECT_EQ(MYSQL_SCHEMA_VERSION_MAJOR, version.first); EXPECT_EQ(MYSQL_SCHEMA_VERSION_MINOR, version.second); } @@ -697,7 +701,7 @@ TEST_F(MySqlSecureConnectionTest, Tcp) { VALID_HOST_TCP, VALID_USER, VALID_PASSWORD); MySqlConnection conn(DatabaseConnection::parse(conn_str)); - ASSERT_NO_THROW(conn.openDatabase()); + ASSERT_NO_THROW_LOG(conn.openDatabase()); } /// @brief Check the SSL/TLS protected connection. @@ -713,7 +717,7 @@ TEST_F(MySqlSecureConnectionTest, Tls) { VALID_CERT, VALID_KEY, VALID_CA, VALID_CIPHER); MySqlConnection conn(DatabaseConnection::parse(conn_str)); - ASSERT_NO_THROW(conn.openDatabase()); + ASSERT_NO_THROW_LOG(conn.openDatabase()); EXPECT_TRUE(conn.getTls()); std::string cipher = conn.getTlsCipher(); EXPECT_FALSE(cipher.empty());