2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-31 14:05:33 +00:00

[#2353] log exceptions in MySQL unit tests

This commit is contained in:
Andrei Pavel
2022-03-11 11:00:00 +02:00
parent e94ea10fbf
commit 7fb02feefc
2 changed files with 29 additions and 25 deletions

View File

@@ -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 <a href="https://kea.readthedocs.io/">Kea Administrator
Reference Manual</a>).
@@ -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

View File

@@ -9,10 +9,14 @@
#include <exceptions/exceptions.h>
#include <mysql/mysql_connection.h>
#include <mysql/testutils/mysql_schema.h>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <gtest/gtest.h>
#include <testutils/gtest_utils.h>
#include <array>
#include <gtest/gtest.h>
#include <boost/date_time/posix_time/posix_time.hpp>
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<uint32_t>(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<uint32_t>(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<uint32_t, uint32_t> 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());