diff options
author | Andrei Pavel <andrei@isc.org> | 2021-02-22 16:21:10 +0100 |
---|---|---|
committer | Andrei Pavel <andrei@isc.org> | 2021-03-08 16:16:36 +0100 |
commit | 605ae1b6b3eab936bb1390ef67b4f4feaac6d2ed (patch) | |
tree | 9fa0a55673bfa95b605439335cb9755a204869a8 /src | |
parent | [#1719] convert DB_LOG macros to structs (diff) | |
download | kea-605ae1b6b3eab936bb1390ef67b4f4feaac6d2ed.tar.xz kea-605ae1b6b3eab936bb1390ef67b4f4feaac6d2ed.zip |
[#1719] DatabaseLogTest.mutexIsolation
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/database/tests/Makefile.am | 1 | ||||
-rw-r--r-- | src/lib/database/tests/database_log_unittest.cc | 48 |
2 files changed, 49 insertions, 0 deletions
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 <config.h> + +#include <database/db_log.h> + +#include <gtest/gtest.h> + +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 |