summaryrefslogtreecommitdiffstats
path: root/mysql-test/README.stress
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:24:36 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:24:36 +0000
commit06eaf7232e9a920468c0f8d74dcf2fe8b555501c (patch)
treee2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/README.stress
parentInitial commit. (diff)
downloadmariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.tar.xz
mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.zip
Adding upstream version 1:10.11.6.upstream/1%10.11.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/README.stress')
-rw-r--r--mysql-test/README.stress120
1 files changed, 120 insertions, 0 deletions
diff --git a/mysql-test/README.stress b/mysql-test/README.stress
new file mode 100644
index 00000000..6be4e9a0
--- /dev/null
+++ b/mysql-test/README.stress
@@ -0,0 +1,120 @@
+
+Overview
+--------
+
+The stress script is designed to perform testing of the MySQL server in
+a multi-threaded environment.
+
+All functionality regarding stress testing is implemented in the
+mysql-stress-test.pl script.
+
+The stress script allows:
+
+ - To stress test the mysqltest binary test engine.
+ - To stress test the regular test suite and any additional test suites
+ (such as mysql-test-extra-5.0).
+ - To specify files with lists of tests both for initialization of
+ stress db and for further testing itself.
+ - To define the number of threads to be concurrently used in testing.
+ - To define limitations for the test run. such as the number of tests or
+ loops for execution or duration of testing, delay between test
+ executions, and so forth.
+ - To get a readable log file that can be used for identification of
+ errors that occur during testing.
+
+There are two ways to run the mysql-stress-test.pl script:
+
+ - For most cases, it is enough to use the options below for starting
+ the stress test from the mysql-test-run wrapper. In this case, the
+ server is run automatically, all preparation steps are performed,
+ and after that the stress test is started.
+
+ - In advanced case, you can run the mysql-stress-test.pl script directly.
+ But this requires that you perform some preparation steps and to specify
+ a bunch of options as well, so this invocation method may be a bit
+ complicated.
+
+Usage
+-----
+
+The following mysql-test-run options are specific to stress-testing:
+
+--stress
+ Enable stress mode
+
+--stress-suite=<suite name>
+ Test suite name to use in stress testing. We assume that all suites
+ are located in the mysql-test/suite directory.
+ There is one special suite name - <main|default> that corresponds
+ to the regular test suite located in the mysql-test directory.
+
+--stress-threads=<number of threads>
+ The number of threads to use in stress testing.
+
+--stress-tests-file=<filename with list of tests>
+ The file that contains the list of tests (without .test suffix) to use in
+ stress testing. The default filename is stress_tests.txt and the default
+ location of this file is suite/<suite name>/stress_tests.txt
+
+--stress-init-file=<filename with list of tests>
+ The file that contains list of tests (without .test suffix) to use in
+ stress testing for initialization of the stress db. These tests will be
+ executed only once before starting the test itself. The default filename
+ is stress_init.txt and the default location of this file is
+ suite/<suite name>/stress_init.txt
+
+--stress-mode=<method which will be used for choosing tests from the list>
+ Possible values are: random(default), seq
+
+ There are two possible modes that affect the order of test selection
+ from the list:
+ - In random mode, tests are selected in random order
+ - In seq mode, each thread executes tests in a loop one by one in
+ the order specified in the list file.
+
+--stress-test-count=<number>
+ Total number of tests that will be executed concurrently by all threads
+
+--stress-loop-count=<number>
+ Total number of loops in seq mode that will be executed concurrently
+ by all threads
+
+--stress-test-duration=<number>
+ Duration of stress testing in seconds
+
+Examples
+--------
+
+1. Example of a simple command line to start a stress test:
+
+ mysql-test-run --stress alias
+
+Runs a stress test with default values for number of threads and number
+of tests, with test 'alias' from suite 'main'.
+
+2. Using in stress testing tests from other suites:
+
+ - mysql-test-run --stress --stress-threads=10 --stress-test-count=1000 \
+ --stress-suite=example --stress-tests-file=testslist.txt
+
+ Runs a stress test with 10 threads, executes 1000 tests by all
+ threads, tests are used from suite 'example', the list of tests is
+ taken from file 'testslist.txt'
+
+ - mysql-test-run --stress --stress-threads=10 --stress-test-count=1000 \
+ --stress-suite=example sum_distinct
+
+ Runs stress test with 10 threads, executes 1000 tests by all
+ threads, tests are used from suite 'example', the list of tests
+ contains only one test 'sum_distinct'
+
+3. Debugging of issues found with stress test
+
+ Right now, the stress test is not fully integrated in mysql-test-run
+ and does not support the --gdb option. To debug issues found with the
+ stress test, you must start the MySQL server separately under a debugger
+ and then run the stress test like this:
+
+ - mysql-test-run --extern --stress --stress-threads=10 \
+ --stress-test-count=1000 --stress-suite=example \
+ sum_distinct