mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
#1169: Add --exec command to mysqltest
This commit is contained in:
parent
d8361678da
commit
0caa462b77
2 changed files with 73 additions and 0 deletions
|
@ -204,6 +204,7 @@ Q_WAIT_FOR_SLAVE_TO_STOP,
|
|||
Q_REQUIRE_VERSION,
|
||||
Q_ENABLE_WARNINGS, Q_DISABLE_WARNINGS,
|
||||
Q_ENABLE_INFO, Q_DISABLE_INFO,
|
||||
Q_EXEC,
|
||||
Q_UNKNOWN, /* Unknown command. */
|
||||
Q_COMMENT, /* Comments, ignored. */
|
||||
Q_COMMENT_WITH_COMMAND
|
||||
|
@ -267,6 +268,7 @@ const char *command_names[]=
|
|||
"disable_warnings",
|
||||
"enable_info",
|
||||
"disable_info",
|
||||
"exec",
|
||||
0
|
||||
};
|
||||
|
||||
|
@ -840,6 +842,66 @@ int do_source(struct st_query* q)
|
|||
return open_file(name);
|
||||
}
|
||||
|
||||
/*
|
||||
Execute given command.
|
||||
|
||||
SYNOPSIS
|
||||
do_exec()
|
||||
q called command
|
||||
|
||||
DESCRIPTION
|
||||
If one uses --exec command [args] command in .test file
|
||||
we will execute the command and record its output.
|
||||
|
||||
RETURN VALUES
|
||||
0 ok
|
||||
1 error
|
||||
*/
|
||||
|
||||
int do_exec(struct st_query* q)
|
||||
{
|
||||
int error= 0;
|
||||
DYNAMIC_STRING *ds;
|
||||
DYNAMIC_STRING ds_tmp;
|
||||
char buf[1024];
|
||||
FILE *res_file;
|
||||
char *cmd= q->first_argument;
|
||||
|
||||
while (*cmd && my_isspace(charset_info, *cmd))
|
||||
cmd++;
|
||||
if (!*cmd)
|
||||
die("Missing argument in exec\n");
|
||||
|
||||
if (q->record_file[0])
|
||||
{
|
||||
init_dynamic_string(&ds_tmp, "", 16384, 65536);
|
||||
ds= &ds_tmp;
|
||||
}
|
||||
else
|
||||
ds= &ds_res;
|
||||
|
||||
if (!(res_file= popen(cmd, "r")) && q->abort_on_error)
|
||||
die("popen() failed\n");
|
||||
while (fgets(buf, sizeof(buf), res_file))
|
||||
dynstr_append(ds, buf);
|
||||
pclose(res_file);
|
||||
if (record)
|
||||
{
|
||||
if (!q->record_file[0] && !result_file)
|
||||
die("At line %u: Missing result file", start_lineno);
|
||||
if (!result_file)
|
||||
str_to_file(q->record_file, ds->str, ds->length);
|
||||
}
|
||||
else if (q->record_file[0])
|
||||
{
|
||||
error= check_result(ds, q->record_file, q->require_file);
|
||||
}
|
||||
if (ds == &ds_tmp)
|
||||
dynstr_free(&ds_tmp);
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
int var_query_set(VAR* v, const char* p, const char** p_end)
|
||||
{
|
||||
char* end = (char*)((p_end && *p_end) ? *p_end : p + strlen(p));
|
||||
|
@ -2584,6 +2646,9 @@ int main(int argc, char **argv)
|
|||
case Q_PING:
|
||||
(void) mysql_ping(&cur_con->mysql);
|
||||
break;
|
||||
case Q_EXEC:
|
||||
(void) do_exec(q);
|
||||
break;
|
||||
default: processed = 0; break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -431,6 +431,11 @@ if [ x$SOURCE_DIST = x1 ] ; then
|
|||
else
|
||||
MYSQL_TEST="$BASEDIR/client/mysqltest"
|
||||
fi
|
||||
if [ -f "$BASEDIR/client/.libs/mysqldump" ] ; then
|
||||
MYSQL_DUMP="$BASEDIR/client/.libs/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK"
|
||||
else
|
||||
MYSQL_DUMP="$BASEDIR/client/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK"
|
||||
fi
|
||||
if [ -n "$STRACE_CLIENT" ]; then
|
||||
MYSQL_TEST="strace -o $MYSQL_TEST_DIR/var/log/mysqltest.strace $MYSQL_TEST"
|
||||
fi
|
||||
|
@ -452,6 +457,7 @@ else
|
|||
MYSQLD="$VALGRIND $BASEDIR/bin/mysqld"
|
||||
fi
|
||||
MYSQL_TEST="$BASEDIR/bin/mysqltest"
|
||||
MYSQL_DUMP="$BASEDIR/bin/mysqldump --no-defaults -uroot --socket=$MASTER_MYSOCK"
|
||||
MYSQLADMIN="$BASEDIR/bin/mysqladmin"
|
||||
WAIT_PID="$BASEDIR/bin/mysql_waitpid"
|
||||
MYSQL_MANAGER="$BASEDIR/bin/mysqlmanager"
|
||||
|
@ -469,6 +475,8 @@ else
|
|||
fi
|
||||
fi
|
||||
|
||||
export MYSQL_DUMP
|
||||
|
||||
if [ -z "$MASTER_MYSQLD" ]
|
||||
then
|
||||
MASTER_MYSQLD=$MYSQLD
|
||||
|
|
Loading…
Reference in a new issue