[FEAT MERGE] 424 SQL compatibility patch 433
Co-authored-by: wjhh2008 <wjh2006-1@163.com> Co-authored-by: GongYusen <986957406@qq.com> Co-authored-by: hy-guo <fqboyg@gmail.com>
This commit is contained in:
1
unittest/sql/audit/CMakeLists.txt
Normal file
1
unittest/sql/audit/CMakeLists.txt
Normal file
@ -0,0 +1 @@
|
||||
sql_unittest(test_audit_log_utils)
|
112
unittest/sql/audit/test_audit_log_utils.cpp
Normal file
112
unittest/sql/audit/test_audit_log_utils.cpp
Normal file
@ -0,0 +1,112 @@
|
||||
/**
|
||||
* Copyright (c) 2021 OceanBase
|
||||
* OceanBase CE is licensed under Mulan PubL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PubL v2.
|
||||
* You may obtain a copy of Mulan PubL v2 at:
|
||||
* http://license.coscl.org.cn/MulanPubL-2.0
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PubL v2 for more details.
|
||||
*/
|
||||
|
||||
#define USING_LOG_PREFIX SQL
|
||||
#include <gtest/gtest.h>
|
||||
#define private public
|
||||
#include "sql/audit/ob_audit_log_utils.h"
|
||||
#include "sql/audit/ob_audit_logger.h"
|
||||
#undef private
|
||||
|
||||
namespace oceanbase
|
||||
{
|
||||
namespace sql
|
||||
{
|
||||
|
||||
TEST(TestAuditLogUtils, parse_filter_definition)
|
||||
{
|
||||
const char *valid_definitions[] = {
|
||||
"{}",
|
||||
"{\"filter\": {\"log\":true}}",
|
||||
"{\"filter\": {\"log\":false}}",
|
||||
"{\"filter\": {\"log\":true,\"class\":[]}}",
|
||||
"{\"filter\": {\"log\":true,\"class\":[{\"name\":\"connection\"}]}}",
|
||||
"{\"filter\": {\"log\":true,\"class\":[{\"name\":\"connection\"},{\"name\":\"general\"},{\"name\":\"table_access\"}]}}",
|
||||
"{\"filter\": {\"log\":false,\"class\":[{\"name\":\"connection\"},{\"name\":\"general\"},{\"name\":\"table_access\"}]}}"
|
||||
};
|
||||
const int valid_class[] = {0, 7, 0, 0, 1, 7, 0};
|
||||
const char *invalid_definitions[] = {
|
||||
"1",
|
||||
"{\"filter\": 1}",
|
||||
"{\"filter\": aaa}",
|
||||
"{\"filter\": {\"log\":\"a\"}}",
|
||||
"{\"filter\": {\"unknown\": true}}",
|
||||
"{\"filter\": {\"log\":true,\"class\":[1,2]}}",
|
||||
"{\"filter\": {\"log\":true,\"class\":[{\"name\":\"connection\"},{\"name\":\"unknown\"}]}}"
|
||||
};
|
||||
int valid_num = sizeof(valid_definitions) / sizeof (valid_definitions[0]);
|
||||
int valid_count_num = sizeof(valid_class) / sizeof (valid_class[0]);
|
||||
int invalid_num = sizeof(invalid_definitions) / sizeof (invalid_definitions[0]);
|
||||
bool is_valid = false;
|
||||
uint64_t audit_class = 0;
|
||||
ASSERT_EQ(valid_num, valid_count_num);
|
||||
for (int i = 0; i < valid_num; ++i) {
|
||||
is_valid = true;
|
||||
audit_class = 0;
|
||||
EXPECT_EQ(OB_SUCCESS, sql::ObAuditLogUtils::parse_filter_definition(valid_definitions[i], is_valid, audit_class));
|
||||
EXPECT_TRUE(is_valid);
|
||||
EXPECT_EQ(valid_class[i], audit_class);
|
||||
LOG_INFO("parse result", K(i), K(valid_definitions[i]), K(is_valid), K(audit_class));
|
||||
}
|
||||
|
||||
for (int i = 0; i < invalid_num; ++i) {
|
||||
is_valid = true;
|
||||
audit_class = 0;
|
||||
EXPECT_EQ(OB_SUCCESS, sql::ObAuditLogUtils::parse_filter_definition(invalid_definitions[i], is_valid, audit_class));
|
||||
EXPECT_FALSE(is_valid);
|
||||
EXPECT_EQ(0, audit_class);
|
||||
LOG_INFO("parse result", K(i), K(invalid_definitions[i]), K(is_valid), K(audit_class));
|
||||
}
|
||||
}
|
||||
|
||||
TEST(TestAuditLogUtils, compress_and_upload_log)
|
||||
{
|
||||
sql::ObAuditLogger logger;
|
||||
logger.log_cfg_.audit_log_path_ = "file://audit/1234/567";
|
||||
const char *dir_path = "1004/ip:port";
|
||||
system("rm -rf audit");
|
||||
databuff_printf(logger.log_file_.dir_path_, sizeof(logger.log_file_.dir_path_), "%s", dir_path);
|
||||
EXPECT_EQ(OB_SUCCESS, logger.compress_and_upload_log("./test_audit_log_utils", "123", true));
|
||||
logger.log_cfg_.audit_log_compression_ = ObCompressorType::ZSTD_COMPRESSOR;
|
||||
EXPECT_EQ(OB_SUCCESS, logger.compress_and_upload_log("./test_audit_log_utils", "456", true));
|
||||
}
|
||||
|
||||
TEST(TestAuditLogUtils, prune_log)
|
||||
{
|
||||
sql::ObAuditLogger logger;
|
||||
system("rm -rf audit");
|
||||
system("fallocate -l 10K ./audit_file.test");
|
||||
logger.log_cfg_.audit_log_path_ = "file://audit/1234/567";
|
||||
const char *dir_path = "1004/ip:port";
|
||||
int64_t expire_time = 1711947601000000;
|
||||
databuff_printf(logger.log_file_.dir_path_, sizeof(logger.log_file_.dir_path_), "%s", dir_path);
|
||||
EXPECT_EQ(OB_SUCCESS, logger.compress_and_upload_log("./audit_file.test", "20240401120000000", true));
|
||||
EXPECT_EQ(OB_SUCCESS, logger.compress_and_upload_log("./audit_file.test", "20240401130000000", true));
|
||||
EXPECT_EQ(OB_SUCCESS, logger.compress_and_upload_log("./audit_file.test", "20240401140000000", true));
|
||||
EXPECT_EQ(OB_SUCCESS, logger.compress_and_upload_log("./audit_file.test", "20240401150000000", true));
|
||||
EXPECT_EQ(OB_SUCCESS, logger.compress_and_upload_log("./audit_file.test", "20240401160000000", true));
|
||||
EXPECT_EQ(OB_SUCCESS, logger.compress_and_upload_log("./audit_file.test", "20240401170000000", true));
|
||||
logger.log_cfg_.audit_log_max_size_ = 3 * 10 * 1024 * 1024 - 1;
|
||||
EXPECT_EQ(OB_SUCCESS, logger.prune_log(expire_time));
|
||||
}
|
||||
|
||||
} // end namespace sql
|
||||
} // end namespace oceanbase
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
system("rm -rf test_audit_log_utils.log*");
|
||||
oceanbase::common::ObLogger::get_logger().set_file_name("test_audit_log_utils.log", true);
|
||||
oceanbase::common::ObLogger::get_logger().set_log_level("INFO");
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
return RUN_ALL_TESTS();
|
||||
}
|
Reference in New Issue
Block a user