OK
On 09/22/2010 10:59 AM, Bjorn Munch wrote:
> #At file:///home/bm136801/my/ecl-51/ based on
> revid:bjorn.munch@stripped
>
> 2934 Bjorn Munch 2010-09-22
> Bug #56921 It should be possible to log connection statements in mysqltest
> Added --enable-connect-log, somewhet similar to --enable-query-log
> If query log is disabled, disable connect log too
> Also some related cleanup in mysqltest.test: removing duplicate test loop
>
> modified:
> client/mysqltest.cc
> mysql-test/r/mysqltest.result
> mysql-test/t/mysqltest.test
> === modified file 'client/mysqltest.cc'
> --- a/client/mysqltest.cc 2010-09-20 09:21:27 +0000
> +++ b/client/mysqltest.cc 2010-09-22 08:57:10 +0000
> @@ -103,6 +103,7 @@ static my_bool parsing_disabled= 0;
> static my_bool display_result_vertically= FALSE, display_result_lower= FALSE,
> display_metadata= FALSE, display_result_sorted= FALSE;
> static my_bool disable_query_log= 0, disable_result_log= 0;
> +static my_bool disable_connect_log= 1;
> static my_bool disable_warnings= 0;
> static my_bool disable_info= 1;
> static my_bool abort_on_error= 1;
> @@ -275,6 +276,7 @@ enum enum_commands {
> Q_DISABLE_RPL_PARSE, Q_EVAL_RESULT,
> Q_ENABLE_QUERY_LOG, Q_DISABLE_QUERY_LOG,
> Q_ENABLE_RESULT_LOG, Q_DISABLE_RESULT_LOG,
> + Q_ENABLE_CONNECT_LOG, Q_DISABLE_CONNECT_LOG,
> Q_WAIT_FOR_SLAVE_TO_STOP,
> Q_ENABLE_WARNINGS, Q_DISABLE_WARNINGS,
> Q_ENABLE_INFO, Q_DISABLE_INFO,
> @@ -342,6 +344,8 @@ const char *command_names[]=
> /* Enable/disable that the _result_ from a query is logged to result file */
> "enable_result_log",
> "disable_result_log",
> + "enable_connect_log",
> + "disable_connect_log",
> "wait_for_slave_to_stop",
> "enable_warnings",
> "disable_warnings",
> @@ -4793,6 +4797,16 @@ void select_connection_name(const char *
>
> set_current_connection(con);
>
> + /* Connection logging if enabled */
> + if (!disable_connect_log&& !disable_query_log)
> + {
> + DYNAMIC_STRING *ds=&ds_res;
> +
> + dynstr_append_mem(ds, "connection ", 11);
> + replace_dynstr_append(ds, name);
> + dynstr_append_mem(ds, ";\n", 2);
> + }
> +
> DBUG_VOID_RETURN;
> }
>
> @@ -4880,6 +4894,16 @@ void do_close_connection(struct st_comma
> var_set_string("$CURRENT_CONNECTION", con->name);
> }
>
> + /* Connection logging if enabled */
> + if (!disable_connect_log&& !disable_query_log)
> + {
> + DYNAMIC_STRING *ds=&ds_res;
> +
> + dynstr_append_mem(ds, "disconnect ", 11);
> + replace_dynstr_append(ds, ds_connection.str);
> + dynstr_append_mem(ds, ";\n", 2);
> + }
> +
> DBUG_VOID_RETURN;
> }
>
> @@ -5014,6 +5038,13 @@ int connect_n_handle_errors(struct st_co
> dynstr_append_mem(ds, delimiter, delimiter_length);
> dynstr_append_mem(ds, "\n", 1);
> }
> + /* Simlified logging if enabled */
> + if (!disable_connect_log&& !disable_query_log)
> + {
> + replace_dynstr_append(ds, command->query);
> + dynstr_append_mem(ds, ";\n", 2);
> + }
> +
> while (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0,
> CLIENT_MULTI_STATEMENTS))
> {
> @@ -8071,6 +8102,8 @@ int main(int argc, char **argv)
> case Q_DISABLE_ABORT_ON_ERROR: abort_on_error=0; break;
> case Q_ENABLE_RESULT_LOG: disable_result_log=0; break;
> case Q_DISABLE_RESULT_LOG: disable_result_log=1; break;
> + case Q_ENABLE_CONNECT_LOG: disable_connect_log=0; break;
> + case Q_DISABLE_CONNECT_LOG: disable_connect_log=1; break;
> case Q_ENABLE_WARNINGS: disable_warnings=0; break;
> case Q_DISABLE_WARNINGS: disable_warnings=1; break;
> case Q_ENABLE_INFO: disable_info=0; break;
>
> === modified file 'mysql-test/r/mysqltest.result'
> --- a/mysql-test/r/mysqltest.result 2010-09-15 12:56:22 +0000
> +++ b/mysql-test/r/mysqltest.result 2010-09-22 08:57:10 +0000
> @@ -452,12 +452,16 @@ mysqltest: At line 1: Missing required a
> mysqltest: At line 1: query 'connect con2,localhost,root,,illegal_db' failed:
> 1049: Unknown database 'illegal_db'
> mysqltest: At line 1: Illegal argument for port: 'illegal_port'
> mysqltest: At line 1: Illegal option to connect: SMTP
> -OK
> -mysqltest: The test didn't produce any output
> +200 connects succeeded
> mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3:
> connection 'test_con1' not found in connection pool
> mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2:
> Connection test_con1 already exists
> show tables;
> ERROR 3D000: No database selected
> +connect con1,localhost,root,,;
> +connection default;
> +connection con1;
> +disconnect con1;
> +connection default;
> Output from mysqltest-x.inc
> Output from mysqltest-x.inc
> Output from mysqltest-x.inc
>
> === modified file 'mysql-test/t/mysqltest.test'
> --- a/mysql-test/t/mysqltest.test 2010-09-21 09:16:20 +0000
> +++ b/mysql-test/t/mysqltest.test 2010-09-22 08:57:10 +0000
> @@ -1467,19 +1467,6 @@ eval select "$long_rep" as x;
>
> # Repeat connect/disconnect
> --write_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql
> -let $i=100;
> -while ($i)
> -{
> - connect (test_con1,localhost,root,,);
> - disconnect test_con1;
> - dec $i;
> -}
> -EOF
> ---exec echo "source $MYSQLTEST_VARDIR/tmp/mysqltest.sql; echo OK; exit;" |
> $MYSQL_TEST 2>&1
> -remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql;
> -
> -# Repeat connect/disconnect
> ---write_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql
> let $i=200;
> while ($i)
> {
> @@ -1487,9 +1474,8 @@ while ($i)
> disconnect test_con1;
> dec $i;
> }
> +echo 200 connects succeeded;
> EOF
> ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
> ---error 1
> --exec echo "source $MYSQLTEST_VARDIR/tmp/mysqltest.sql;" | $MYSQL_TEST
> 2>&1
> remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql;
>
> @@ -1530,6 +1516,22 @@ show tables;
> disconnect con2;
> connection default;
>
> +# Test enable_connect_log
> +--enable_connect_log
> +connect (con1,localhost,root,,);
> +connection default;
> +connection con1;
> +--disable_query_log
> +# These should not be logged
> +connect (con2,localhost,root,,*NO-ONE*);
> +connection con2;
> +disconnect con2;
> +connection con1;
> +--enable_query_log
> +disconnect con1;
> +connection default;
> +--disable_connect_log
> +
> # ----------------------------------------------------------------------------
> # Test mysqltest arguments
> # ----------------------------------------------------------------------------
>
>
>
>
>