Commit 72616298 authored by Sergei Golubchik's avatar Sergei Golubchik

feedback plugin debug

make it possible to change feedback plugin wait intervals
* only in debug builds
* and force the feedback report to be ignored

update the test to use this feature
parent e669a5fd
...@@ -38,6 +38,9 @@ max_heap_table_size= 1M ...@@ -38,6 +38,9 @@ max_heap_table_size= 1M
loose-aria-pagecache-buffer-size=8M loose-aria-pagecache-buffer-size=8M
loose-feedback-user-info= mysql-test loose-feedback-user-info= mysql-test
loose-feedback-debug-startup-interval=20
loose-feedback-debug-first-interval=60
loose-feedback-debug-interval=60
loose-innodb_data_file_path= ibdata1:10M:autoextend loose-innodb_data_file_path= ibdata1:10M:autoextend
loose-innodb_buffer_pool_size= 8M loose-innodb_buffer_pool_size= 8M
......
...@@ -3,7 +3,8 @@ select plugin_status from information_schema.plugins where plugin_name='feedback ...@@ -3,7 +3,8 @@ select plugin_status from information_schema.plugins where plugin_name='feedback
plugin_status plugin_status
ACTIVE ACTIVE
select * from information_schema.feedback where variable_name like 'feed%' select * from information_schema.feedback where variable_name like 'feed%'
and variable_name not like '%_uid'; and variable_name not like '%_uid'
and variable_name not like '%debug%';
VARIABLE_NAME VARIABLE_VALUE VARIABLE_NAME VARIABLE_VALUE
FEEDBACK used 1 FEEDBACK used 1
FEEDBACK version 1.1 FEEDBACK version 1.1
......
...@@ -6,7 +6,8 @@ SELECT variable_value = @feedback_used + 1 FROM information_schema.feedback wher ...@@ -6,7 +6,8 @@ SELECT variable_value = @feedback_used + 1 FROM information_schema.feedback wher
variable_value = @feedback_used + 1 variable_value = @feedback_used + 1
1 1
select * from information_schema.feedback where variable_name like 'feed%' select * from information_schema.feedback where variable_name like 'feed%'
and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used'; and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used'
and variable_name not like '%debug%';
VARIABLE_NAME VARIABLE_VALUE VARIABLE_NAME VARIABLE_VALUE
FEEDBACK version 1.1 FEEDBACK version 1.1
FEEDBACK_SEND_RETRY_WAIT 60 FEEDBACK_SEND_RETRY_WAIT 60
......
...@@ -6,14 +6,13 @@ SELECT variable_value = @feedback_used + 1 FROM information_schema.feedback wher ...@@ -6,14 +6,13 @@ SELECT variable_value = @feedback_used + 1 FROM information_schema.feedback wher
variable_value = @feedback_used + 1 variable_value = @feedback_used + 1
1 1
select * from information_schema.feedback where variable_name like 'feed%' select * from information_schema.feedback where variable_name like 'feed%'
and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used'; and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used'
and variable_name not like '%debug%';
VARIABLE_NAME VARIABLE_VALUE VARIABLE_NAME VARIABLE_VALUE
FEEDBACK version 1.1 FEEDBACK version 1.1
FEEDBACK_SEND_RETRY_WAIT 60 FEEDBACK_SEND_RETRY_WAIT 60
FEEDBACK_SEND_TIMEOUT 60 FEEDBACK_SEND_TIMEOUT 60
FEEDBACK_URL http://mariadb.org/feedback_plugin/post FEEDBACK_URL http://mariadb.org/feedback_plugin/post
FEEDBACK_USER_INFO mysql-test FEEDBACK_USER_INFO mysql-test
feedback plugin: report to 'http://mariadb.org/feedback_plugin/post' was sent 6: feedback plugin: report to 'http://mariadb.org/feedback_plugin/post' was sent
feedback plugin: server replied 'ok' 6: feedback plugin: server replied 'ok'
feedback plugin: report to 'http://mariadb.org/feedback_plugin/post' was sent
feedback plugin: server replied 'ok'
...@@ -10,6 +10,8 @@ select plugin_status from information_schema.plugins where plugin_name='feedback ...@@ -10,6 +10,8 @@ select plugin_status from information_schema.plugins where plugin_name='feedback
--replace_result https http --replace_result https http
--sorted_result --sorted_result
select * from information_schema.feedback where variable_name like 'feed%' select * from information_schema.feedback where variable_name like 'feed%'
and variable_name not like '%_uid'; and variable_name not like '%_uid'
and variable_name not like '%debug%';
uninstall plugin feedback; uninstall plugin feedback;
...@@ -24,4 +24,5 @@ SELECT variable_value = @feedback_used + 1 FROM information_schema.feedback wher ...@@ -24,4 +24,5 @@ SELECT variable_value = @feedback_used + 1 FROM information_schema.feedback wher
--replace_result https http --replace_result https http
--sorted_result --sorted_result
select * from information_schema.feedback where variable_name like 'feed%' select * from information_schema.feedback where variable_name like 'feed%'
and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used'; and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used'
and variable_name not like '%debug%';
...@@ -25,20 +25,15 @@ sleep 310; ...@@ -25,20 +25,15 @@ sleep 310;
--let $shutdown_timeout= 60 --let $shutdown_timeout= 60
source include/restart_mysqld.inc; source include/restart_mysqld.inc;
replace_result https http; replace_result https http 2 6;
perl; perl;
$log_error= $ENV{'MYSQLTEST_VARDIR'} . '/log/mysqld.1.err'; $log_error= $ENV{'MYSQLTEST_VARDIR'} . '/log/mysqld.1.err';
open(LOG, '<', $log_error) or die "open(< $log_error): $!"; open(LOG, '<', $log_error) or die "open(< $log_error): $!";
# Get the first few rows (as there may be different number rows in the log) %logg=();
$i= 0; while ($_=<LOG>) {
while ($_=<LOG>) $logg{$&}++ if /feedback plugin:.*/;
{
if (/feedback plugin:.*/)
{
print "$&\n";
break if ($i++ >= 3);
}
} }
print "$logg{$_}: $_\n" for sort keys %logg;
close LOG; close LOG;
EOF EOF
...@@ -22,6 +22,10 @@ extern ST_SCHEMA_TABLE schema_tables[]; ...@@ -22,6 +22,10 @@ extern ST_SCHEMA_TABLE schema_tables[];
namespace feedback { namespace feedback {
#ifndef DBUG_OFF
ulong debug_startup_interval, debug_first_interval, debug_interval;
#endif
char server_uid_buf[SERVER_UID_SIZE+1]; ///< server uid will be written here char server_uid_buf[SERVER_UID_SIZE+1]; ///< server uid will be written here
/* backing store for system variables */ /* backing store for system variables */
...@@ -249,6 +253,18 @@ static int init(void *p) ...@@ -249,6 +253,18 @@ static int init(void *p)
prepare_linux_info(); prepare_linux_info();
#ifndef DBUG_OFF
if (startup_interval != debug_startup_interval ||
first_interval != debug_first_interval ||
interval != debug_interval)
{
startup_interval= debug_startup_interval;
first_interval= debug_first_interval;
interval= debug_interval;
user_info= "mysql-test";
}
#endif
url_count= 0; url_count= 0;
if (*url) if (*url)
{ {
...@@ -347,12 +363,29 @@ static MYSQL_SYSVAR_ULONG(send_retry_wait, send_retry_wait, PLUGIN_VAR_RQCMDARG, ...@@ -347,12 +363,29 @@ static MYSQL_SYSVAR_ULONG(send_retry_wait, send_retry_wait, PLUGIN_VAR_RQCMDARG,
"Wait this many seconds before retrying a failed send.", "Wait this many seconds before retrying a failed send.",
NULL, NULL, 60, 1, 60*60*24, 1); NULL, NULL, 60, 1, 60*60*24, 1);
#ifndef DBUG_OFF
static MYSQL_SYSVAR_ULONG(debug_startup_interval, debug_startup_interval,
PLUGIN_VAR_RQCMDARG, "for debugging only",
NULL, NULL, startup_interval, 1, INT_MAX32, 1);
static MYSQL_SYSVAR_ULONG(debug_first_interval, debug_first_interval,
PLUGIN_VAR_RQCMDARG, "for debugging only",
NULL, NULL, first_interval, 1, INT_MAX32, 1);
static MYSQL_SYSVAR_ULONG(debug_interval, debug_interval,
PLUGIN_VAR_RQCMDARG, "for debugging only",
NULL, NULL, interval, 1, INT_MAX32, 1);
#endif
static struct st_mysql_sys_var* settings[] = { static struct st_mysql_sys_var* settings[] = {
MYSQL_SYSVAR(server_uid), MYSQL_SYSVAR(server_uid),
MYSQL_SYSVAR(user_info), MYSQL_SYSVAR(user_info),
MYSQL_SYSVAR(url), MYSQL_SYSVAR(url),
MYSQL_SYSVAR(send_timeout), MYSQL_SYSVAR(send_timeout),
MYSQL_SYSVAR(send_retry_wait), MYSQL_SYSVAR(send_retry_wait),
#ifndef DBUG_OFF
MYSQL_SYSVAR(debug_startup_interval),
MYSQL_SYSVAR(debug_first_interval),
MYSQL_SYSVAR(debug_interval),
#endif
NULL NULL
}; };
......
...@@ -58,6 +58,10 @@ class Url { ...@@ -58,6 +58,10 @@ class Url {
extern Url **urls; extern Url **urls;
extern uint url_count; extern uint url_count;
extern time_t startup_interval;
extern time_t first_interval;
extern time_t interval;
/* these are used to communicate with the background thread */ /* these are used to communicate with the background thread */
extern mysql_mutex_t sleep_mutex; extern mysql_mutex_t sleep_mutex;
extern mysql_cond_t sleep_condition; extern mysql_cond_t sleep_condition;
......
...@@ -25,9 +25,9 @@ static my_thread_id thd_thread_id; ///< its thread_id ...@@ -25,9 +25,9 @@ static my_thread_id thd_thread_id; ///< its thread_id
static size_t needed_size= 20480; static size_t needed_size= 20480;
static const time_t startup_interval= 60*5; ///< in seconds (5 minutes) time_t startup_interval= 60*5; ///< in seconds (5 minutes)
static const time_t first_interval= 60*60*24; ///< in seconds (one day) time_t first_interval= 60*60*24; ///< in seconds (one day)
static const time_t interval= 60*60*24*7; ///< in seconds (one week) time_t interval= 60*60*24*7; ///< in seconds (one week)
/** /**
reads the rows from a table and puts them, concatenated, in a String reads the rows from a table and puts them, concatenated, in a String
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment