From: Andrei Pavel Date: Mon, 22 Feb 2021 15:21:10 +0000 (+0200) Subject: [#1719] DatabaseLogTest.mutexIsolation X-Git-Tag: Kea-1.9.6~174 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=605ae1b6b3eab936bb1390ef67b4f4feaac6d2ed;p=thirdparty%2Fkea.git [#1719] DatabaseLogTest.mutexIsolation --- diff --git a/src/lib/database/tests/Makefile.am b/src/lib/database/tests/Makefile.am index 5a3433681c..dd39beef93 100644 --- a/src/lib/database/tests/Makefile.am +++ b/src/lib/database/tests/Makefile.am @@ -22,6 +22,7 @@ TESTS += libdatabase_unittests libdatabase_unittests_SOURCES = audit_entry_unittest.cc libdatabase_unittests_SOURCES += backend_selector_unittest.cc libdatabase_unittests_SOURCES += database_connection_unittest.cc +libdatabase_unittests_SOURCES += database_log_unittest.cc libdatabase_unittests_SOURCES += dbaccess_parser_unittest.cc libdatabase_unittests_SOURCES += run_unittests.cc libdatabase_unittests_SOURCES += server_unittest.cc diff --git a/src/lib/database/tests/database_log_unittest.cc b/src/lib/database/tests/database_log_unittest.cc new file mode 100644 index 0000000000..1caa12c50f --- /dev/null +++ b/src/lib/database/tests/database_log_unittest.cc @@ -0,0 +1,48 @@ +// Copyright (C) 2021 Internet Systems Consortium, Inc. ("ISC") +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +#include + +#include + +#include + +using isc::db::DB_DBG_TRACE_DETAIL; +using isc::db::DB_INVALID_ACCESS; +using isc::db::DB_LOG_FATAL; +using isc::db::DB_LOG_ERROR; +using isc::db::DB_LOG_WARN; +using isc::db::DB_LOG_INFO; +using isc::db::DB_LOG_DEBUG; +using isc::db::db_logger_mutex; + +namespace { + +/// Test that the mutex unlocks after a call to DB_LOG. +/// Let's use DB_INVALID_ACCESS as an example for all. +TEST(DatabaseLogTest, mutexIsolation) { + DB_LOG_FATAL(DB_INVALID_ACCESS).arg("hello"); + EXPECT_TRUE(db_logger_mutex.try_lock()); + db_logger_mutex.unlock(); + + DB_LOG_ERROR(DB_INVALID_ACCESS).arg("hello"); + EXPECT_TRUE(db_logger_mutex.try_lock()); + db_logger_mutex.unlock(); + + DB_LOG_WARN(DB_INVALID_ACCESS).arg("hello"); + EXPECT_TRUE(db_logger_mutex.try_lock()); + db_logger_mutex.unlock(); + + DB_LOG_INFO(DB_INVALID_ACCESS).arg("hello"); + EXPECT_TRUE(db_logger_mutex.try_lock()); + db_logger_mutex.unlock(); + + DB_LOG_DEBUG(DB_DBG_TRACE_DETAIL, DB_INVALID_ACCESS).arg("hello"); + EXPECT_TRUE(db_logger_mutex.try_lock()); + db_logger_mutex.unlock(); +} + +} // namespace