📄 mysql-test-run-shell
字号:
start_master if [ -n "$USE_NDBCLUSTER" -a -z "$DO_BENCH" -a -z "$DO_STRESS" ] ; then start_master 1 fi else report_current_test $tname fi fi # We never start a slave if embedded server is used if [ "x$USE_EMBEDDED_SERVER" != "x1" ] ; then do_slave_restart=0 if [ -f $slave_opt_file ] ; then EXTRA_SLAVE_OPT=`$CAT $slave_opt_file | $SED -e "s;\\$MYSQL_TEST_DIR;$MYSQL_TEST_DIR;"` do_slave_restart=1 else if [ ! -z "$EXTRA_SLAVE_OPT" ] || [ x$SLAVE_RUNNING != x1 ] ; then EXTRA_SLAVE_OPT="" do_slave_restart=1 fi fi if [ -f $slave_master_info_file ] ; then SLAVE_MASTER_INFO=`$CAT $slave_master_info_file` do_slave_restart=1 else if [ ! -z "$SLAVE_MASTER_INFO" ] || [ x$SLAVE_RUNNING != x1 ] ; then SLAVE_MASTER_INFO="" do_slave_restart=1 fi fi if [ x$do_slave_restart = x1 ] ; then stop_slave echo "CURRENT_TEST: $tname" >> $SLAVE_MYERR start_slave else echo "CURRENT_TEST: $tname" >> $SLAVE_MYERR fi if [ x$many_slaves = x1 ]; then start_slave 1 start_slave 2 fi fi fi if [ "x$START_AND_EXIT" = "x1" ] ; then echo "Servers started, exiting" exit fi cd $MYSQL_TEST_DIR if [ -f $tf ] ; then $RM -f r/$tname.*reject mysql_test_args="-R $result_file $EXTRA_MYSQL_TEST_OPT" if [ -z "$DO_CLIENT_GDB" ] ; then `$VALGRIND_MYSQLTEST $MYSQL_TEST $mysql_test_args < $tf 2> $TIMEFILE`; else do_gdb_test "$mysql_test_args" "$tf" fi res=$? # Save the testcase log to mysqltest log file echo "CURRENT_TEST: $tname" >> $MYSQLTEST_LOG cat $TIMEFILE >> $MYSQLTEST_LOG pname=`$ECHO "$tname "|$CUT -c 1-24` RES="$pname" if [ x$many_slaves = x1 ] ; then stop_slave 1 stop_slave 2 fi if [ $res = 0 ]; then total_inc pass_inc TIMER="" if [ x$USE_TIMER = x1 -a -f "$MY_LOG_DIR/timer" ]; then TIMER=`cat $MY_LOG_DIR/timer` TIMER=`$PRINTF "%13s" $TIMER` fi $ECHO "$RES$RES_SPACE [ pass ] $TIMER" else # why the following ``if'' ? That is why res==1 is special ? if [ $res = 62 ]; then skip_inc $ECHO "$RES$RES_SPACE [ skipped ]" else if [ $res -ne 1 ]; then $ECHO "mysqltest returned unexpected code $res, it has probably crashed" >> $TIMEFILE fi total_inc fail_inc $ECHO "$RES$RES_SPACE [ fail ]" $ECHO error_is show_failed_diff $tname $ECHO if [ x$FORCE != x1 ] ; then $ECHO "Aborting: $tname failed in $TEST_MODE mode. To continue, re-run with '--force'." $ECHO if [ -z "$DO_GDB" ] && [ $USE_RUNNING_SERVER -eq 0 ] && \ [ -z "$DO_DDD" ] && [ -z "$USE_EMBEDDED_SERVER" ] then mysql_stop stop_manager fi exit 1 fi FAILED_CASES="$FAILED_CASES $tname" if [ -z "$DO_GDB" ] && [ $USE_RUNNING_SERVER -eq 0 ] && \ [ -z "$DO_DDD" ] && [ -z "$USE_EMBEDDED_SERVER" ] then mysql_restart fi fi fi fi}run_stress_test(){ STRESS_BASEDIR="$MYSQL_TEST_DIR/var/stress" #Clean-up old stress test basedir if [ -d $STRESS_BASEDIR ] ; then $RM -rf $STRESS_BASEDIR fi #Create stress test basedir mkdir $STRESS_BASEDIR if [ "$STRESS_SUITE" != "main" -a "$STRESS_SUITE" != "default" ] ; then STRESS_SUITE_DIR="$MYSQL_TEST_DIR/suite/$STRESS_SUITE" else STRESS_SUITE_DIR="$MYSQL_TEST_DIR" fi if [ -d "$STRESS_SUITE_DIR" ] ; then STRESS_SUITE_T_DIR="$STRESS_SUITE_DIR/t" STRESS_SUITE_R_DIR="$STRESS_SUITE_DIR/r" #FIXME: check that dirs above are exist else echo "Directory $STRESS_SUITE_DIR with test suite doesn't exists. Abort stress testing" exit 1 fi if [ -n "$STRESS_TEST" ] ; then STRESS_TEST_FILE="$STRESS_BASEDIR/stress_tests.txt" echo $STRESS_TEST > $STRESS_TEST_FILE elif [ -n "$STRESS_TEST_FILE" ] ; then STRESS_TEST_FILE="$STRESS_SUITE_DIR/$STRESS_TEST_FILE" if [ ! -f "$STRESS_TEST_FILE" ] ; then echo "Specified file $STRESS_TEST_FILE with list of tests does not exist" echo "Please ensure that file exists and has proper permissions" exit 1 fi else STRESS_TEST_FILE="$STRESS_SUITE_DIR/stress_tests.txt" if [ ! -f "$STRESS_TEST_FILE" ] ; then echo "Default file $STRESS_TEST_FILE with list of tests does not exist." echo "Please use --stress-test-file option to specify custom one or you can" echo "just specify name of test for testing as last argument in command line" exit 1 fi fi if [ -n "$STRESS_INIT_FILE" ] ; then STRESS_INIT_FILE="$STRESS_SUITE_DIR/$STRESS_INIT_FILE" if [ ! -f "$STRESS_INIT_FILE" ] ; then echo "Specified file $STRESS_INIT_FILE with list of tests doesn't exist." echo "Please ensure that file exists and has proper permissions" exit 1 fi else STRESS_INIT_FILE="$STRESS_SUITE_DIR/stress_init.txt" #Check for default init file if [ ! -f "$STRESS_INIT_FILE" ] ; then STRESS_INIT_FILE="" fi fi if [ "$STRESS_MODE" != "random" -a "$STRESS_MODE" != "seq" ] ; then echo "You specified wrong mode '$STRESS_MODE' for stress test." echo "Correct values are 'random' or 'seq'" exit 1 fi STRESS_TEST_ARGS="--server-socket=$MASTER_MYSOCK \ --server-user=$DBUSER \ --server-database=$DB \ --stress-suite-basedir=$MYSQL_TEST_DIR \ --suite=$STRESS_SUITE \ --stress-tests-file=$STRESS_TEST_FILE \ --stress-basedir=$STRESS_BASEDIR \ --server-logs-dir=$STRESS_BASEDIR \ --stress-mode=$STRESS_MODE \ --mysqltest=$CLIENT_BINDIR/mysqltest \ --threads=$STRESS_THREADS \ --verbose \ --cleanup \ --log-error-details \ --abort-on-error" if [ -n "$STRESS_INIT_FILE" ] ; then STRESS_TEST_ARGS="$STRESS_TEST_ARGS --stress-init-file=$STRESS_INIT_FILE" fi if [ -z "$STRESS_LOOP_COUNT" -a -z "$STRESS_TEST_COUNT" -a -z "$STRESS_TEST_DURATION" ] ; then #Limit stress testing with 20 loops in case when any limit parameter #was specified STRESS_TEST_COUNT=20 fi if [ -n "$STRESS_LOOP_COUNT" ] ; then STRESS_TEST_ARGS="$STRESS_TEST_ARGS --loop-count=$STRESS_LOOP_COUNT" fi if [ -n "$STRESS_TEST_COUNT" ] ; then STRESS_TEST_ARGS="$STRESS_TEST_ARGS --test-count=$STRESS_TEST_COUNT" fi if [ -n "$STRESS_TEST_DURATION" ] ; then STRESS_TEST_ARGS="$STRESS_TEST_ARGS --test-duration=$STRESS_TEST_DURATION" fi echo "Stress test related variables:" echo "TESTS - $1" echo "STRESS - $DO_STRESS" echo "STRESS_SUITE - $STRESS_SUITE" echo "STRESS_TEST_FILE - $STRESS_TEST_FILE" echo "STRESS_INIT_FILE - $STRESS_INIT_FILE" echo "STRESS_THREADS - $STRESS_THREADS" echo "STRESS_MODE - $STRESS_MODE" echo "STRESS_TEST_COUNT - $STRESS_TEST_COUNT" echo "STRESS_LOOP_COUNT - $STRESS_LOOP_COUNT" echo "STRESS_TEST_DURATION - $STRESS_TEST_DURATION" #echo "$STRESS_TEST_ARGS"; #Run stress test $MYSQL_TEST_DIR/mysql-stress-test.pl $STRESS_TEST_ARGS}####################################################################### Main script starts here######################################################################[ "$DO_GCOV" -a ! -x "$GCOV" ] && error "No gcov found"[ "$DO_GCOV" ] && gcov_prepare[ "$DO_GPROF" ] && gprof_prepareif [ $USE_RUNNING_SERVER -eq 0 ]then if [ -z "$FAST_START" ] then # Ensure that no old mysqld test servers are running $MYSQLADMIN --no-defaults --socket=$MASTER_MYSOCK -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1 $MYSQLADMIN --no-defaults --socket=$MASTER_MYSOCK1 -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1 $MYSQLADMIN --no-defaults --socket=$SLAVE_MYSOCK -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1 $MYSQLADMIN --no-defaults --host=$hostname --port=$MASTER_MYPORT -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1 $MYSQLADMIN --no-defaults --host=$hostname --port=`expr $MASTER_MYPORT+1` -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1 $MYSQLADMIN --no-defaults --host=$hostname --port=$SLAVE_MYPORT -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1 $MYSQLADMIN --no-defaults --host=$hostname --port=`expr $SLAVE_MYPORT + 1` -u root -O connect_timeout=5 -O shutdown_timeout=20 shutdown > /dev/null 2>&1 sleep_until_file_deleted 0 $MASTER_MYPID sleep_until_file_deleted 0 $MASTER_MYPID"1" sleep_until_file_deleted 0 $SLAVE_MYPID else rm $MASTER_MYPID $MASTER_MYPID"1" $SLAVE_MYPID fi # Kill any running managers if [ -f "$MANAGER_PID_FILE" ] then kill `cat $MANAGER_PID_FILE` sleep 1 if [ -f "$MANAGER_PID_FILE" ] then kill -9 `cat $MANAGER_PID_FILE` sleep 1 fi fi stop_ndbcluster # Remove files that can cause problems $RM -rf $MYSQL_TEST_DIR/var/ndbcluster $RM -rf $MYSQL_TEST_DIR/var/run/* $MYSQL_TEST_DIR/var/tmp/* # Remove old berkeley db log files that can confuse the server $RM -f $MASTER_MYDDIR/log.* $RM -f $MASTER_MYDDIR"1"/log.* # Remove old log and reject files $RM -f r/*.reject r/*.progress r/*.log r/*.warnings wait_for_master=$SLEEP_TIME_FOR_FIRST_MASTER wait_for_slave=$SLEEP_TIME_FOR_FIRST_SLAVE $ECHO "Installing Test Databases" mysql_install_db if [ -n "$1" -a `expr "X$*" : '.*ndb'` -eq 0 ] then USE_NDBCLUSTER="" fi start_manager mysql_start $ECHO "Loading Standard Test Databases" mysql_loadstdfi$ECHO "Starting Tests"# Some test cases need USE_RUNNING_SERVERexport USE_RUNNING_SERVER## This can probably be deleted#if [ "$DO_BENCH" = 1 ]then start_master if [ "$DO_SMALL_BENCH" = 1 ] then EXTRA_BENCH_ARGS="--small-test --small-tables" fi if [ ! -z "$USE_NDBCLUSTER" ] then EXTRA_BENCH_ARGS="--create-options=TYPE=ndb $EXTRA_BENCH_ARGS" fi BENCHDIR=$BASEDIR/sql-bench/ savedir=`pwd` cd $BENCHDIR if [ -z "$1" ] then ./run-all-tests --socket=$MASTER_MYSOCK --user=root $EXTRA_BENCH_ARGS --log else if [ -x "./$1" ] then ./$1 --socket=$MASTER_MYSOCK --user=root $EXTRA_BENCH_ARGS else echo "benchmark $1 not found" fi fi cd $savedir mysql_stop stop_manager exitfi## Stress testing#if [ "$DO_STRESS" = 1 ] then if [ -n "$1" ] ; then STRESS_TEST="$1"; fi if [ $USE_RUNNING_SERVER -eq 0 ] ; then start_master fi run_stress_test if [ $USE_RUNNING_SERVER -eq 0 ] ; then mysql_stop stop_manager fi exitfi$ECHOif [ x$USE_TIMER = x1 ] ; then$ECHO "TEST RESULT TIME (ms)"else$ECHO "TEST RESULT"fi$ECHO $DASH72if [ -z "$1" ] ;then if [ x$RECORD = x1 ]; then $ECHO "Will not run in record mode without a specific test case." else for tf in $TESTDIR/*.$TESTSUFFIX do run_testcase $tf done $RM -f $TIMEFILE # Remove for full test fielse while [ ! -z "$1" ]; do tname=`$BASENAME $1 .test` tf=$TESTDIR/$tname.$TESTSUFFIX if [ -f $tf ] ; then run_testcase $tf else $ECHO "Test case $tf does not exist." fi shift donefi$ECHO $DASH72$ECHOif [ -z "$DO_GDB" ] && [ $USE_RUNNING_SERVER -eq 0 ] && [ -z "$DO_DDD" ]then mysql_stopfistop_managerreport_stats$ECHO[ "$DO_GCOV" ] && gcov_collect # collect coverage information[ "$DO_GPROF" ] && gprof_collect # collect coverage informationif [ $TOT_FAIL -ne 0 ]; then $ECHO "mysql-test-run in $TEST_MODE mode: *** Failing the test(s):$FAILED_CASES" $ECHO exit 1fiif [ $GOT_WARNINGS -ne 0 ]; then exit 1fiexit 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -