Skip to content

Commit 1d0a45f

Browse files
committed
PS-10247 [9.x]: Move default MTR test lists from Jenkins job to PS code
Introduce `mysql-test/suites-groups.sh` with `set_suites()` function which sets WORKER_x_MTR_SUITES for x=1..8 (different sets for `Debug`, `RelWithDebInfo`, and `Valgrind`). Jenkins will try to download `mysql-test/suites-groups.sh` and call `set_suites()` function before it will use the default split defined in https://github.com/Percona-Lab/ps-build/blob/8.0/jenkins/suites-groups.sh
1 parent b125b02 commit 1d0a45f

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

mysql-test/suites-groups.sh

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/bin/bash
2+
3+
# Notes about this script:
4+
# 1. This file defines the function set_suites(), which sets WORKER_x_MTR_SUITES for x=1..8.
5+
# 2. The function check_suites(), defined in https://github.com/Percona-Lab/ps-build/blob/8.0/local/utils.inc.sh
6+
# checks for inconsistencies between the suites specified in mysql-test-run.pl and those defined in this script.
7+
# 3. The default split is defined in https://github.com/Percona-Lab/ps-build/blob/8.0/jenkins/suites-groups.sh
8+
# 4. The default split can be overridden by mysql-test/suites-groups.sh, if present,
9+
# allowing custom suite splits on development branches.
10+
# 5. By default, the Jenkins pipeline fails if inconsistencies are detected (IGNORE_INCONSISTENCY=0).
11+
# 6. If IGNORE_INCONSISTENCY=1 is set, the pipeline continues with a warning instead of failing.
12+
# 7. Jenkins scripts support the following suite formats:
13+
#
14+
# main - all tests will be allowed to be executed (big and no-big). Note that the final decision belongs to --big-tests MTR parameter
15+
# main|nobig - only no-big tests are allowed
16+
# main|big - only big tests are allowed
17+
#
18+
# Such approach makes it possible to split the suite execution among two workers, where one woker executes no-big test
19+
# and another executes only bit tests.
20+
21+
22+
# Uncomment to continue testing even if this file is inconsistent with DEFAULT_SUITES from mysql-test-run.pl
23+
#IGNORE_INCONSISTENCY=1
24+
25+
26+
# usage: set_suites <BUILD_TYPE>
27+
function set_suites() {
28+
# Comparing to 8.4 added in 9.4: component_connection_control, jdv
29+
if [[ "$1" == "Valgrind" ]]; then
30+
# Unit tests, KEYRING_VAULT tests, ps_protocol, ci_fs will be executed by worker 1
31+
echo "Setting WORKER_x_MTR_SUITES for PS 9.x with Valgrind (a custom suite split)"
32+
# TO DO: Update, copied from 9.x Debug
33+
WORKER_1_MTR_SUITES="rocksdb|nobig,rpl|big,innodb_undo|nobig,percona,sysschema|nobig,x|big,binlog_nogtid|nobig,encryption,service_sys_var_registration,audit_null"
34+
WORKER_2_MTR_SUITES="clone|big,component_keyring_file|big,perfschema|nobig,rocksdb_rpl|nobig,clone|nobig,innodb_zip|big,rocksdb_stress,binlog_nogtid|big,query_rewrite_plugins,jdv"
35+
WORKER_3_MTR_SUITES="rocksdb|big,rpl_nogtid|nobig,percona_innodb|big,component_audit_log_filter,sysschema|big,parts|nobig,rpl_encryption,component_masking_functions,jp,information_schema"
36+
WORKER_4_MTR_SUITES="group_replication|big,percona_innodb|nobig,binlog|nobig,rpl_nogtid|big,rocksdb_rpl|big,federated,innodb_gis|nobig,collations,test_services,component_js_lang"
37+
WORKER_5_MTR_SUITES="main|big,innodb_gis|big,rpl_gtid|big,binlog|big,funcs_1,auth_sec|big,binlog_gtid|nobig,opt_trace,secondary_engine,service_status_var_registration"
38+
WORKER_6_MTR_SUITES="main|nobig,group_replication|nobig,parts|big,innodb_undo|big,innodb_fts|nobig,perfschema|big,engines/iuds,innodb_zip|nobig,rocksdb_sys_vars,component_connection_control,service_udf_registration"
39+
WORKER_7_MTR_SUITES="innodb|big,rpl|nobig,engines/funcs,sys_vars,x|nobig,component_keyring_file|nobig,stress,funcs_2,json,interactive_utilities,procfs"
40+
WORKER_8_MTR_SUITES="component_encryption_udf,innodb|nobig,innodb_fts|big,rpl_gtid|nobig,gcol,gis,auth_sec|nobig,binlog_gtid|big,test_service_sql_api,connection_control,percona-pam-for-mysql"
41+
elif [[ "$1" == "RelWithDebInfo" ]]; then
42+
# Unit tests, KEYRING_VAULT tests, ps_protocol, ci_fs will be executed by worker 1
43+
echo "Setting WORKER_x_MTR_SUITES for PS 9.x with BUILD_TYPE=RelWithDebInfo (a custom suite split)"
44+
WORKER_1_MTR_SUITES="main|nobig,main|big,parts,percona,component_audit_log_filter,engines/iuds,component_connection_control,opt_trace,information_schema"
45+
WORKER_2_MTR_SUITES="component_encryption_udf,innodb_zip,gis,json,component_js_lang"
46+
WORKER_3_MTR_SUITES="group_replication|big,binlog,test_service_sql_api,component_masking_functions,connection_control,service_sys_var_registration,jdv"
47+
WORKER_4_MTR_SUITES="rocksdb|big,rpl_gtid,auth_sec,engines/funcs,innodb_undo,interactive_utilities,query_rewrite_plugins,audit_null"
48+
WORKER_5_MTR_SUITES="rocksdb|nobig,percona_innodb,sys_vars,perfschema,innodb_fts,binlog_gtid,rpl_encryption,service_udf_registration,procfs"
49+
WORKER_6_MTR_SUITES="rpl|nobig,rpl_nogtid|big,rocksdb_rpl,clone,innodb_gis,funcs_1,funcs_2,collations,jp,percona-pam-for-mysql"
50+
WORKER_7_MTR_SUITES="group_replication|nobig,rpl_nogtid|nobig,innodb|nobig,component_keyring_file,rocksdb_stress,gcol,stress,test_services,secondary_engine,service_status_var_registration"
51+
WORKER_8_MTR_SUITES="innodb|big,rpl|big,sysschema,x|big,x|nobig,binlog_nogtid,federated,rocksdb_sys_vars,encryption"
52+
else # Debug (and everything different from "RelWithDebInfo" and "Valgrind")
53+
# Unit tests, KEYRING_VAULT tests, ps_protocol, ci_fs will be executed by worker 1
54+
echo "Setting WORKER_x_MTR_SUITES for PS 9.x with BUILD_TYPE=Debug (a custom suite split)"
55+
WORKER_1_MTR_SUITES="rocksdb|nobig,rpl|big,innodb_undo|nobig,percona,sysschema|nobig,x|big,binlog_nogtid|nobig,encryption,service_sys_var_registration,audit_null"
56+
WORKER_2_MTR_SUITES="clone|big,component_keyring_file|big,perfschema|nobig,rocksdb_rpl|nobig,clone|nobig,innodb_zip|big,rocksdb_stress,binlog_nogtid|big,query_rewrite_plugins,jdv"
57+
WORKER_3_MTR_SUITES="rocksdb|big,rpl_nogtid|nobig,percona_innodb|big,component_audit_log_filter,sysschema|big,parts|nobig,rpl_encryption,component_masking_functions,jp,information_schema"
58+
WORKER_4_MTR_SUITES="group_replication|big,percona_innodb|nobig,binlog|nobig,rpl_nogtid|big,rocksdb_rpl|big,federated,innodb_gis|nobig,collations,test_services,component_js_lang"
59+
WORKER_5_MTR_SUITES="main|big,innodb_gis|big,rpl_gtid|big,binlog|big,funcs_1,auth_sec|big,binlog_gtid|nobig,opt_trace,secondary_engine,service_status_var_registration"
60+
WORKER_6_MTR_SUITES="main|nobig,group_replication|nobig,parts|big,innodb_undo|big,innodb_fts|nobig,perfschema|big,engines/iuds,innodb_zip|nobig,rocksdb_sys_vars,component_connection_control,service_udf_registration"
61+
WORKER_7_MTR_SUITES="innodb|big,rpl|nobig,engines/funcs,sys_vars,x|nobig,component_keyring_file|nobig,stress,funcs_2,json,interactive_utilities,procfs"
62+
WORKER_8_MTR_SUITES="component_encryption_udf,innodb|nobig,innodb_fts|big,rpl_gtid|nobig,gcol,gis,auth_sec|nobig,binlog_gtid|big,test_service_sql_api,connection_control,percona-pam-for-mysql"
63+
fi
64+
}

0 commit comments

Comments
 (0)