用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

90 lines
2.7 KiB

#
# Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
#
# This test is executed once after each test to check the servers
# for unexpected warnings found in the servers error log
#
# NOTE! mysql-test-run.pl has already done a rough filtering
# of the file and written any suspicious lines
# to $error_log.warnings file
#
--disable_query_log
# Don't write these queries to binlog
SET SQL_LOG_BIN = 0;
# Turn off any debug crashes, allow the variable to be
# non existent in release builds
--error 0,1193
SET DEBUG = "";
USE mtr;
# Allow this session to read-write even if server is started with
# --transaction-read-only. And set autocommit mode for the session
# irrespective of server --autocommit setting.
SET SESSION TRANSACTION READ WRITE;
# Due to the lack of WL#7828 / WL#8003 now, we might have a pending
# Data Dictionary read-only transaction at this point. Even though
# DD-RO-transactions are usually committed in the end, there are cases
# when it does not happen. It will be changed when WL#7828 / WL#8003
# are merged in.
#
# Until that happens, we do 'SET SESSION AUTOCOMMIT = 1' here in order
# to commit that DD-RO-transaction that might be pending. Otherwise,
# the following statements will fail. By turning autocommit ON we
# achieve two effects:
# 1. Ensure there is no loose DD-RO-transaction (i.e. the effect of
# COMMIT statement);
# 2. Make sure all future DD-RO-transactions that might happen below
# will be properly committed.
#
# We set session variable to not affect other tests.
SET SESSION AUTOCOMMIT = 1;
CREATE TEMPORARY TABLE error_log (
`row` INT AUTO_INCREMENT PRIMARY KEY,
suspicious INT DEFAULT 1,
file_name VARCHAR(255),
line VARCHAR(2500) CHARSET latin1 DEFAULT NULL
);
COMMIT;
# Get the name of servers error log
--let $log_error = $MTR_LOG_ERROR
--let $log_warning = $log_error.warnings
# Try to load the warnings into a temporary table, it might fail with
# error saying "The MySQL server is running with the
# --secure-file-priv" in which case an attempt to load the file using
# LOAD DATA LOCAL is made.
--error 0,1290
eval LOAD DATA INFILE '$log_warning' INTO TABLE error_log
CHARACTER SET latin1
FIELDS TERMINATED BY 'xykls37' ESCAPED BY ''
ignore 1 lines
(line)
SET file_name = '$log_error';
if ($mysql_errno) {
# Try LOAD DATA LOCAL
eval LOAD DATA LOCAL INFILE '$log_warning' INTO TABLE error_log
CHARACTER SET latin1
FIELDS TERMINATED BY 'xykls37' ESCAPED BY ''
ignore 1 lines
(line)
SET file_name = '$log_error';
}
# Call check_warnings to filter out any warning in the error_log table.
CALL mtr.check_warnings(@result);
--enable_query_log
if (`SELECT @result = 0`) {
--skip OK
}
--echo ^ Found warnings in $log_error
--exit