mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Worklog #2983 Mysqlslap load emulator tool and accompanied test, results
and modifications to mysql-test-run(.pl/.sh) client/Makefile.am: Worklog #2983, added mysqlslap to Makefile.am client/client_priv.h: Worklog #2983 Added OPT_CREATE_SLAP_SCHEMA mysql-test/mysql-test-run.pl: Worklog #2983 Added mysqlslap test binary to test script mysql-test/mysql-test-run.sh: Worklog #2983 Added mysqlslap binary def to test script client/mysqlslap.c: Worklog #2983 mysqlslap.c, new utility for running load simulation. mysql-test/r/mysqlslap.result: Worklog #2983 Mysqlslap test results mysql-test/t/mysqlslap.test: Worklog #2983 Mysqlslap test
This commit is contained in:
@ -31,7 +31,8 @@ LDADD= @CLIENT_EXTRA_LDFLAGS@ \
|
||||
$(top_builddir)/libmysql/libmysqlclient.la
|
||||
bin_PROGRAMS = mysql mysqladmin mysqlcheck mysqlshow \
|
||||
mysqldump mysqlimport mysqltest mysqlbinlog \
|
||||
mysqltestmanagerc mysqltestmanager-pwgen
|
||||
mysqltestmanagerc mysqltestmanager-pwgen \
|
||||
mysqlslap
|
||||
noinst_HEADERS = sql_string.h completion_hash.h my_readline.h \
|
||||
client_priv.h
|
||||
mysql_SOURCES = mysql.cc readline.cc sql_string.cc completion_hash.cc
|
||||
@ -46,6 +47,7 @@ mysqltestmanager_pwgen_SOURCES = mysqlmanager-pwgen.c
|
||||
mysqltestmanagerc_SOURCES= mysqlmanagerc.c $(yassl_dummy_link_fix)
|
||||
mysqlcheck_SOURCES= mysqlcheck.c $(yassl_dummy_link_fix)
|
||||
mysqlshow_SOURCES= mysqlshow.c $(yassl_dummy_link_fix)
|
||||
mysqlslap_SOURCES= mysqlslap.c $(yassl_dummy_link_fix)
|
||||
mysqldump_SOURCES= mysqldump.c $(yassl_dummy_link_fix)
|
||||
mysqlimport_SOURCES= mysqlimport.c $(yassl_dummy_link_fix)
|
||||
sql_src=log_event.h mysql_priv.h log_event.cc my_decimal.h my_decimal.cc
|
||||
|
@ -51,5 +51,5 @@ enum options_client
|
||||
#endif
|
||||
OPT_TRIGGERS,
|
||||
OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE,
|
||||
OPT_TZ_UTC, OPT_AUTO_CLOSE
|
||||
OPT_TZ_UTC, OPT_AUTO_CLOSE, OPT_CREATE_SLAP_SCHEMA
|
||||
};
|
||||
|
1162
client/mysqlslap.c
Normal file
1162
client/mysqlslap.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -173,6 +173,7 @@ our $exe_mysql_client_test;
|
||||
our $exe_mysqld;
|
||||
our $exe_mysqlcheck; # Called from test case
|
||||
our $exe_mysqldump; # Called from test case
|
||||
our $exe_mysqlslap; # Called from test case
|
||||
our $exe_mysqlimport; # Called from test case
|
||||
our $exe_mysqlshow; # Called from test case
|
||||
our $exe_mysql_fix_system_tables;
|
||||
@ -930,7 +931,8 @@ sub executable_setup () {
|
||||
}
|
||||
$exe_mysqlcheck= mtr_exe_exists("$path_client_bindir/mysqlcheck");
|
||||
$exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump");
|
||||
$exe_mysqlimport= mtr_exe_exists("$path_client_bindir/mysqlimport");
|
||||
$exe_mysqlslap= mtr_exe_exists("$path_client_bindir/mysqlslap");
|
||||
$exe_mysqlimport= mtr_exe_exists("$path_client_bindir/mysqlimport");
|
||||
$exe_mysqlshow= mtr_exe_exists("$path_client_bindir/mysqlshow");
|
||||
$exe_mysqlbinlog= mtr_exe_exists("$path_client_bindir/mysqlbinlog");
|
||||
$exe_mysqladmin= mtr_exe_exists("$path_client_bindir/mysqladmin");
|
||||
@ -947,7 +949,7 @@ sub executable_setup () {
|
||||
$path_client_bindir= mtr_path_exists("$glob_basedir/bin");
|
||||
$exe_mysqlcheck= mtr_exe_exists("$path_client_bindir/mysqlcheck");
|
||||
$exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump");
|
||||
$exe_mysqlimport= mtr_exe_exists("$path_client_bindir/mysqlimport");
|
||||
$exe_mysqlslap= mtr_exe_exists("$path_client_bindir/mysqlslap");
|
||||
$exe_mysqlshow= mtr_exe_exists("$path_client_bindir/mysqlshow");
|
||||
$exe_mysqlbinlog= mtr_exe_exists("$path_client_bindir/mysqlbinlog");
|
||||
$exe_mysqladmin= mtr_exe_exists("$path_client_bindir/mysqladmin");
|
||||
@ -2458,6 +2460,14 @@ sub run_mysqltest ($) {
|
||||
$cmdline_mysqldump .=
|
||||
" --debug=d:t:A,$opt_vardir/log/mysqldump.trace";
|
||||
}
|
||||
my $cmdline_mysqlslap= "$exe_mysqlslap -uroot " .
|
||||
"--port=$master->[0]->{'path_myport'} " .
|
||||
"--socket=$master->[0]->{'path_mysock'} --password=";
|
||||
if ( $opt_debug )
|
||||
{
|
||||
$cmdline_mysqlslap .=
|
||||
" --debug=d:t:A,$opt_vardir/log/mysqldump.trace";
|
||||
}
|
||||
my $cmdline_mysqlimport= "$exe_mysqlimport -uroot " .
|
||||
"--port=$master->[0]->{'path_myport'} " .
|
||||
"--socket=$master->[0]->{'path_mysock'} --password=";
|
||||
@ -2519,6 +2529,7 @@ sub run_mysqltest ($) {
|
||||
$ENV{'MYSQL'}= $cmdline_mysql;
|
||||
$ENV{'MYSQL_CHECK'}= $cmdline_mysqlcheck;
|
||||
$ENV{'MYSQL_DUMP'}= $cmdline_mysqldump;
|
||||
$ENV{'MYSQL_SLAP'}= $cmdline_mysqlslap;
|
||||
$ENV{'MYSQL_IMPORT'}= $cmdline_mysqlimport;
|
||||
$ENV{'MYSQL_SHOW'}= $cmdline_mysqlshow;
|
||||
$ENV{'MYSQL_BINLOG'}= $cmdline_mysqlbinlog;
|
||||
|
@ -243,6 +243,7 @@ EXTRA_MASTER_OPT=""
|
||||
EXTRA_MYSQL_TEST_OPT=""
|
||||
EXTRA_MYSQLCHECK_OPT=""
|
||||
EXTRA_MYSQLDUMP_OPT=""
|
||||
EXTRA_MYSQLSLAP_OPT=""
|
||||
EXTRA_MYSQLSHOW_OPT=""
|
||||
EXTRA_MYSQLBINLOG_OPT=""
|
||||
USE_RUNNING_SERVER=0
|
||||
@ -519,6 +520,8 @@ while test $# -gt 0; do
|
||||
--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqlcheck.trace"
|
||||
EXTRA_MYSQLDUMP_OPT="$EXTRA_MYSQLDUMP_OPT \
|
||||
--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqldump.trace"
|
||||
EXTRA_MYSQLSLAP_OPT="$EXTRA_MYSQLSLAP_OPT \
|
||||
--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqlslap.trace"
|
||||
EXTRA_MYSQLSHOW_OPT="$EXTRA_MYSQLSHOW_OPT \
|
||||
--debug=d:t:A,$MYSQL_TEST_DIR/var/log/mysqlshow.trace"
|
||||
EXTRA_MYSQLBINLOG_OPT="$EXTRA_MYSQLBINLOG_OPT \
|
||||
@ -629,6 +632,11 @@ if [ x$SOURCE_DIST = x1 ] ; then
|
||||
else
|
||||
MYSQL_DUMP="$BASEDIR/client/mysqldump"
|
||||
fi
|
||||
if [ -f "$BASEDIR/client/.libs/mysqlslap" ] ; then
|
||||
MYSQL_SLAP="$BASEDIR/client/.libs/mysqlslap"
|
||||
else
|
||||
MYSQL_SLAP="$BASEDIR/client/mysqlslap"
|
||||
fi
|
||||
if [ -f "$BASEDIR/client/.libs/mysqlimport" ] ; then
|
||||
MYSQL_IMPORT="$BASEDIR/client/.libs/mysqlimport"
|
||||
else
|
||||
@ -709,6 +717,7 @@ else
|
||||
MYSQL_TEST="$CLIENT_BINDIR/mysqltest"
|
||||
MYSQL_CHECK="$CLIENT_BINDIR/mysqlcheck"
|
||||
MYSQL_DUMP="$CLIENT_BINDIR/mysqldump"
|
||||
MYSQL_SLAP="$CLIENT_BINDIR/mysqlslap"
|
||||
MYSQL_SHOW="$CLIENT_BINDIR/mysqlshow"
|
||||
MYSQL_IMPORT="$CLIENT_BINDIR/mysqlimport"
|
||||
MYSQL_BINLOG="$CLIENT_BINDIR/mysqlbinlog"
|
||||
@ -796,6 +805,7 @@ MYSQL_DUMP_DIR="$MYSQL_DUMP"
|
||||
export MYSQL_DUMP_DIR
|
||||
MYSQL_CHECK="$MYSQL_CHECK --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLCHECK_OPT"
|
||||
MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||
MYSQL_SLAP="$MYSQL_SLAP -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLSLAP_OPT"
|
||||
MYSQL_SHOW="$MYSQL_SHOW -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLSHOW_OPT"
|
||||
MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR --character-sets-dir=$CHARSETSDIR $EXTRA_MYSQLBINLOG_OPT"
|
||||
MYSQL_IMPORT="$MYSQL_IMPORT -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||
@ -803,6 +813,7 @@ MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost
|
||||
MYSQL="$MYSQL --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD"
|
||||
export MYSQL MYSQL_CHECK MYSQL_DUMP MYSQL_SHOW MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES MYSQL_IMPORT
|
||||
export CLIENT_BINDIR MYSQL_CLIENT_TEST CHARSETSDIR MYSQL_MY_PRINT_DEFAULTS
|
||||
export MYSQL_SLAP
|
||||
export NDB_TOOLS_DIR
|
||||
export NDB_MGM
|
||||
export NDB_BACKUP_DIR
|
||||
|
68
mysql-test/r/mysqlslap.result
Normal file
68
mysql-test/r/mysqlslap.result
Normal file
@ -0,0 +1,68 @@
|
||||
/home/patg/mysql-build/mysql-5.1-slap/client/.libs/lt-mysqlslap Ver 0.1 Distrib 5.1.3-alpha, for suse-linux (i686)
|
||||
Copyright (C) 2005 MySQL AB
|
||||
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
|
||||
and you are welcome to modify and redistribute it under the GPL license
|
||||
|
||||
Run a query multiple times against the server
|
||||
|
||||
Usage: /home/patg/mysql-build/mysql-5.1-slap/client/.libs/lt-mysqlslap [OPTIONS] [database [table [column]]]
|
||||
|
||||
Default options are read from the following files in the given order:
|
||||
/etc/my.cnf ~/.my.cnf
|
||||
The following groups are read: mysqlslap client
|
||||
The following options may be given as the first argument:
|
||||
--print-defaults Print the program argument list and exit
|
||||
--no-defaults Don't read default options from any options file
|
||||
--defaults-file=# Only read default options from the given file #
|
||||
--defaults-extra-file=# Read this file after the global files are read
|
||||
-a, --auto-generate-sql
|
||||
Generate SQL where not supplied by file or command line.
|
||||
-C, --compress Use compression in server/client protocol.
|
||||
-l, --concurrency-load=#
|
||||
Number of clients to simulate for data load.
|
||||
-c, --concurrency=# Number of clients to simulate for query to run.
|
||||
--create=name File or string to use for create.
|
||||
-d, --data=name File or string with INSERT to use for populating
|
||||
table(s).
|
||||
-#, --debug[=name] Output debug log. Often this is 'd:t:o,filename'.
|
||||
-F, --delimiter=name
|
||||
Delimiter to use in SQL statements supplied in file or
|
||||
command line.
|
||||
-D, --drop-schema Drop schema if it exists prior to running, and after
|
||||
running
|
||||
-e, --engine=name Storage engine to use for creating the table.
|
||||
-?, --help Display this help and exit.
|
||||
-h, --host=name Connect to host.
|
||||
-i, --iterations=# Number of iterations.
|
||||
-x, --number-char-cols=#
|
||||
Number of INT columns to create table with if specifying
|
||||
--sql-generate-sql.
|
||||
-y, --number-int-cols=#
|
||||
Number of VARCHAR columns to create table with if
|
||||
specifying --sql-generate-sql.
|
||||
-n, --number-rows=# Number of rows to insert when loading data.
|
||||
-p, --password[=name]
|
||||
Password to use when connecting to server. If password is
|
||||
not given it's asked from the tty.
|
||||
-P, --port=# Port number to use for connection.
|
||||
--protocol=name The protocol of connection (tcp,socket,pipe,memory).
|
||||
-A, --skip-create-schema
|
||||
Don't create a schema, use existing schema.
|
||||
-L, --skip-data-load
|
||||
Don't load any data, use existing data set.
|
||||
-Q, --skip-query Don't run any queries.
|
||||
-s, --silent Run program in silent mode - no output.
|
||||
-q, --query=name Query to run or file containing query to run.
|
||||
-S, --socket=name Socket file to use for connection.
|
||||
--ssl Enable SSL for connection (automatically enabled with
|
||||
other flags). Disable with --skip-ssl.
|
||||
--ssl-key=name X509 key in PEM format (implies --ssl).
|
||||
--ssl-cert=name X509 cert in PEM format (implies --ssl).
|
||||
--ssl-ca=name CA file in PEM format (check OpenSSL docs, implies
|
||||
--ssl).
|
||||
--ssl-capath=name CA directory (check OpenSSL docs, implies --ssl).
|
||||
--ssl-cipher=name SSL cipher to use (implies --ssl).
|
||||
-u, --user=name User for login if not current user.
|
||||
-v, --verbose More verbose output; You can use this multiple times to
|
||||
get even more verbose output.
|
||||
-V, --version Output version information and exit.
|
9
mysql-test/t/mysqlslap.test
Normal file
9
mysql-test/t/mysqlslap.test
Normal file
@ -0,0 +1,9 @@
|
||||
# Can't run test of external client with embedded server
|
||||
--source include/not_embedded.inc
|
||||
|
||||
--exec $MYSQL_SLAP --help
|
||||
--exec $MYSQL_SLAP --silent --drop-schema --concurrency=5 --concurrency-load=5 --iterations=20 --number-int-cols=2 --number-char-cols=3 --number-rows=12 --auto-generate-sql
|
||||
|
||||
--exec $MYSQL_SLAP --silent --drop-schema --concurrency=5 --concurrency-load=5 --iterations=20 --number-rows=10 --query="select * from t1" --data="INSERT INTO t1 VALUES (1, 'This is a test')" --create="CREATE TABLE t1 (id int, name varchar(64))"
|
||||
|
||||
--exec $MYSQL_SLAP --silent --drop-schema --concurrency=5 --concurrency-load=5 --iterations=20 --delimiter=";" --number-rows=10 --query="select * from t1;select * from t2" --data="INSERT INTO t1 VALUES (1, 'This is a test'); insert into t2 values ('test', 'test2')" --create="CREATE TABLE t1 (id int, name varchar(64)); create table t2(foo1 varchar(32), foo2 varchar(32))"
|
Reference in New Issue
Block a user