224 lines
6.2 KiB
Plaintext
224 lines
6.2 KiB
Plaintext
--echo #
|
|
--echo # WL#6661: Error logging: Allow control of verbosity
|
|
--echo #
|
|
|
|
# Unfortunately while the order of the requirements was sensible for
|
|
# human consumption, it's relatively impractical to test in that order. :(
|
|
|
|
CALL mtr.add_suppression("option 'log_error_verbosity'");
|
|
CALL mtr.add_suppression("--verbose is for use with");
|
|
|
|
SET @old_log_error_verbosity= @@global.log_error_verbosity;
|
|
SET @old_log_timestamps = @@global.log_timestamps;
|
|
|
|
|
|
--echo
|
|
--echo # Spec 1: Nomenclature, no test
|
|
|
|
|
|
--echo
|
|
--echo # The following four can be verified using mysqld--help-[not]win.test:
|
|
--echo #
|
|
--echo # Spec 2a: "--help works"
|
|
--echo # Spec 2b: "default verbosity for --help is 1, errors only"
|
|
--echo #
|
|
--echo # Spec 3a: "--help --verbose works"
|
|
--echo # Spec 3b: "default verbosity for --help --verbose is 1, errors only"
|
|
|
|
|
|
--echo
|
|
--echo # Spec 4a "new sys-var log_error_verbosity"
|
|
--echo # Spec 4d "--log_error_verbosity settable on command-line"
|
|
--echo # Spec B "later options replace earlier ones."
|
|
# (pick something low in .opt so we won't have to deal with start-up spam.)
|
|
SELECT @@global.log_error_verbosity;
|
|
|
|
--echo
|
|
--echo # Spec 4b "default"
|
|
# defaults to highest verbosity
|
|
SET GLOBAL log_error_verbosity=DEFAULT;
|
|
SELECT @@global.log_error_verbosity;
|
|
|
|
--echo
|
|
--echo # Spec 4c "range"
|
|
# turning off even errors is forbidden for now.
|
|
SET GLOBAL log_error_verbosity=0;
|
|
SELECT @@global.log_error_verbosity;
|
|
|
|
--echo
|
|
--echo # Spec 4c "range"
|
|
# there is nothing beyond Notes, so there is no level higher than 3.
|
|
SET GLOBAL log_error_verbosity=4;
|
|
SELECT @@global.log_error_verbosity;
|
|
|
|
--echo
|
|
--echo # Spec 4d -- see above at 4a, and below in error log
|
|
|
|
--echo
|
|
--echo # Spec 4e "global only"
|
|
# It's a global. There is no thread-specific log_error_verbosity.
|
|
--error ER_GLOBAL_VARIABLE
|
|
SET SESSION log_error_verbosity=DEFAULT;
|
|
|
|
--echo
|
|
--echo # Spec 4e "SUPER required for log_error_verbosity"
|
|
--echo # Spec Ed "SUPER required for log_timestamps"
|
|
# It's not settable by just anyone.
|
|
|
|
CREATE USER mysqltest_1;
|
|
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
|
connect(user1,localhost,mysqltest_1,,*NO-ONE*);
|
|
connection user1;
|
|
--echo # as unprivileged user:
|
|
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
|
SET GLOBAL log_error_verbosity=1;
|
|
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
|
|
SET GLOBAL log_timestamps=SYSTEM;
|
|
disconnect user1;
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
connection default;
|
|
--echo # as root:
|
|
DROP USER mysqltest_1;
|
|
|
|
|
|
--echo
|
|
--echo # Spec 5 "--verbose without --help throws an error" -- see below in error log
|
|
|
|
|
|
--echo
|
|
--echo # Spec 6 "example for things previously governed by log_warnings"
|
|
--echo # see error log below for results
|
|
|
|
SET GLOBAL init_connect='wombat;';
|
|
|
|
CREATE USER mysqltest_yeslog;
|
|
CREATE USER mysqltest_nolog;
|
|
|
|
--echo # Spec 6a "log_error_warnings=2+ includes warnings"
|
|
|
|
SET GLOBAL log_error_verbosity=2;
|
|
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
|
connect(user2,localhost,mysqltest_yeslog,,*NO-ONE*);
|
|
connection default;
|
|
|
|
--echo # Spec 6c "warnings now gagged by log_error_verbosity=1"
|
|
SET GLOBAL log_error_verbosity=1;
|
|
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
|
connect(user3,localhost,mysqltest_nolog,,*NO-ONE*);
|
|
|
|
connection user2;
|
|
disconnect user2;
|
|
--source include/wait_until_disconnected.inc
|
|
connection user3;
|
|
disconnect user3;
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
connection default;
|
|
DROP USER mysqltest_yeslog;
|
|
DROP USER mysqltest_nolog;
|
|
|
|
SET GLOBAL init_connect='';
|
|
|
|
|
|
--echo # Spec 6b "log_error_warnings=3 includes notes"
|
|
SET GLOBAL log_error_verbosity=2;
|
|
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
|
--error ER_ACCESS_DENIED_ERROR
|
|
connect(user1,localhost,mysqltest_2_nolog,,*NO-ONE*);
|
|
|
|
SET GLOBAL log_error_verbosity=3;
|
|
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
|
--error ER_ACCESS_DENIED_ERROR
|
|
connect(user1,localhost,mysqltest_3_yeslog,,*NO-ONE*);
|
|
|
|
SET GLOBAL log_error_verbosity=DEFAULT;
|
|
|
|
|
|
|
|
--echo
|
|
--echo # Spec 7 "--log_warning throws deprecation warning" -- now removed
|
|
|
|
|
|
--echo
|
|
--echo # Spec 8/Spec 8a "log_warnings sets log_error_verbosity" -- now removed
|
|
|
|
--echo
|
|
--echo # Spec 9 -- no test; limits part shown in Spec 4c/Spec 8
|
|
|
|
|
|
--echo
|
|
--echo # Spec A -- see Spec 4c "range" and Spec 8
|
|
|
|
|
|
--echo
|
|
--echo # Spec B -- see above at 4a, and below in error log
|
|
|
|
|
|
--echo
|
|
--echo # Spec C "bootstrap" -- no test
|
|
|
|
|
|
--echo
|
|
--echo # Spec D "timestamp format" -- results in log below = regex was matched
|
|
|
|
|
|
--echo
|
|
--echo # Spec Ea "log_timestamps"
|
|
# SYSTEM here rather than default; set from command-line.
|
|
SELECT @@global.log_timestamps;
|
|
--echo # Spec Eb "log_timestamps -- values UTC|SYSTEM"
|
|
SET GLOBAL log_timestamps=UTC;
|
|
SELECT @@global.log_timestamps;
|
|
SET GLOBAL log_timestamps=SYSTEM;
|
|
SELECT @@global.log_timestamps;
|
|
--echo # Spec Ec "log_timestamps -- default UTC"
|
|
SET GLOBAL log_timestamps=DEFAULT;
|
|
SELECT @@global.log_timestamps;
|
|
--echo # Spec Ed "SUPER required" -- see 4e
|
|
--echo # Spec Ee "SYSTEM = old behavior" -- no test
|
|
|
|
--echo
|
|
--echo # Spec 4d "--log_error_verbosity settable on command-line"
|
|
--echo # Spec 5 "--verbose without --help throws an error"
|
|
--echo # Spec 7 "--log_warning throws deprecation warning" -- now removed
|
|
--echo # Spec D "ISO 8601 / RFC 3339 compliant timestamps"
|
|
--echo #
|
|
--echo # error log:
|
|
|
|
let GREP_FILE=$MYSQLTEST_VARDIR/tmp/wl6661_log.err;
|
|
let GREP_PATTERN=Access denied;
|
|
|
|
# be very specific with the regex, we've got a format to prove:
|
|
--replace_regex /[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9][0-9][0-9][0-9][0-9][0-9][-+Z][0-9:]* *[0-9]* *\[/DATE_TIME [/
|
|
--perl
|
|
use strict;
|
|
my $file= $ENV{'GREP_FILE'} or die("grep file not set");
|
|
my $pattern= $ENV{'GREP_PATTERN'} or die("pattern is not set");
|
|
open(FILE, "$file") or die("Unable to open $file: $!");
|
|
while (<FILE>) {
|
|
my $line = $_;
|
|
if ($line =~ /$pattern/) {
|
|
print "$line\n";
|
|
}
|
|
}
|
|
close(FILE);
|
|
|
|
rename $file, "$file~";
|
|
|
|
open(FILE, ">", "$file") or die("Unable to open file: $!");
|
|
close(FILE);
|
|
EOF
|
|
|
|
--echo
|
|
--echo # cleanup
|
|
SET GLOBAL log_error_verbosity = @old_log_error_verbosity;
|
|
SET GLOBAL log_timestamps = @old_log_timestamps;
|
|
--remove_file $MYSQLTEST_VARDIR/tmp/wl6661_log.err~
|
|
|
|
FLUSH LOGS;
|
|
|
|
--echo
|
|
--echo #
|
|
--echo # end WL#6661
|