Skip to content

Commit 039cee6

Browse files
MCOL-6022 existing mtr to bash
1 parent 9a305a7 commit 039cee6

File tree

2 files changed

+73
-29
lines changed

2 files changed

+73
-29
lines changed

.drone.jsonnet

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -342,36 +342,13 @@ local Pipeline(branch, platform, event, arch="amd64", server="10.6-enterprise",
342342
},
343343
commands: [
344344
prepareTestStage(getContainerName("mtr"), result, true),
345-
"docker cp mysql-test/columnstore mtr$${DRONE_BUILD_NUMBER}:" + mtr_path + "/suite/",
346-
execInnerDocker("chown -R mysql:mysql " + mtr_path, getContainerName("mtr")),
347-
// disable systemd 'ProtectSystem' (we need to write to /usr/share/)
348-
execInnerDocker("bash -c 'sed -i /ProtectSystem/d $(systemctl show --property FragmentPath mariadb | sed s/FragmentPath=//)'", getContainerName("mtr")),
349-
execInnerDocker("systemctl daemon-reload", getContainerName("mtr")),
350-
execInnerDocker("systemctl start mariadb", getContainerName("mtr")),
351-
// Set RAM consumption limits to avoid RAM contention b/w mtr and regression steps.
352-
execInnerDocker("/usr/bin/mcsSetConfig SystemConfig CGroup just_no_group_use_local", getContainerName("mtr")),
353-
execInnerDocker('mariadb -e "create database if not exists test;"', getContainerName("mtr")),
354-
execInnerDocker("systemctl restart mariadb-columnstore", getContainerName("mtr")),
355-
356-
// delay mtr for manual debugging on live instance
357-
"sleep $${MTR_DELAY_SECONDS:-1s}",
358345
'MTR_SUITE_LIST=$([ "$MTR_FULL_SUITE" == true ] && echo "' + mtr_full_set + '" || echo "$MTR_SUITE_LIST")',
359-
if (event == "custom" || event == "cron") then
360-
execInnerDocker('bash -c "wget -qO- https://cspkg.s3.amazonaws.com/mtr-test-data.tar.lz4 | lz4 -dc - | tar xf - -C /"',
361-
getContainerName("mtr")),
362-
if (event == "custom" || event == "cron") then
363-
execInnerDocker('bash -c "cd ' + mtr_path + " && ./mtr --extern socket=" + socket_path + ' --force --print-core=detailed --print-method=gdb --max-test-fail=0 --suite=columnstore/setup"',
364-
getContainerName("mtr")),
365-
366-
if (event == "cron") then
367-
execInnerDocker('bash -c "cd ' + mtr_path + " && ./mtr --extern socket=" + socket_path +
368-
" --force --print-core=detailed --print-method=gdb --max-test-fail=0 --suite="
369-
+ std.join(",", std.map(function(x) "columnstore/" + x, std.split(mtr_full_set, ","))),
370-
getContainerName("mtr")) + '"'
371-
else
372-
execInnerDocker('bash -c "cd ' + mtr_path + " && ./mtr --extern socket=" + socket_path +
373-
' --force --print-core=detailed --print-method=gdb --max-test-fail=0 --suite=columnstore/$${MTR_SUITE_LIST//,/,columnstore/}"',
374-
getContainerName("mtr")),
346+
347+
'bash /mdb/' + builddir + '/storage/columnstore/columnstore/build/run_mtr.sh' +
348+
' --container-name ' + getContainerName("mtr") +
349+
' --distro ' + platform +
350+
' --suite $${MTR_SUITE_LIST}' +
351+
' --triggering-event ' + event,
375352
],
376353
},
377354
mtrlog:: {

build/run_mtr.sh

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#!/bin/bash
2+
3+
set -eo pipefail
4+
5+
SCRIPT_LOCATION=$(dirname "$0")
6+
source "$SCRIPT_LOCATION"/utils.sh
7+
8+
optparse.define short=c long=container-name desc="Name of the Docker container where mtr tests will run" variable=CONTAINER_NAME
9+
optparse.define short=d long=distro desc="Linux distro for which mtr is runned" variable=DISTRO
10+
optparse.define short=s long=suite-list desc="Comma-separated list of test suites to run" variable=MTR_SUITE_LIST
11+
optparse.define short=e long=triggering-event desc="Event that triggers testrun" variable=EVENT
12+
source $(optparse.build)
13+
14+
MTR_FULL_SET="basic,bugfixes,devregression,autopilot,extended,multinode,oracle,1pmonly"
15+
16+
echo "Arguments received: $@"
17+
18+
if [[ "$EUID" -ne 0 ]]; then
19+
error "Please run script as root"
20+
exit 1
21+
fi
22+
23+
if [[ -z "${CONTAINER_NAME}" ]]; then
24+
echo "Please provide mtr container name as a parameter, e.g. ./run_mtr.sh -c mtr183"
25+
exit 1
26+
fi
27+
28+
if [[ -z $(docker ps -q --filter "name=${CONTAINER_NAME}") ]]; then
29+
error "Container '${CONTAINER_NAME}' is not running."
30+
exit 1
31+
fi
32+
33+
if [[ "$DISTRO" == *rocky* ]]; then
34+
SOCKET_PATH="/var/lib/mysql/mysql.sock"
35+
MTR_PATH="/usr/share/mysql-test"
36+
else
37+
SOCKET_PATH="/run/mysqld/mysqld.sock"
38+
MTR_PATH="/usr/share/mysql/mysql-test"
39+
fi
40+
41+
message "Running mtr tests..."
42+
43+
docker cp mysql-test/columnstore "${CONTAINER_NAME}":"${MTR_PATH}/suite/" #TODO: Tests should be run from package not from sources as it works now
44+
execInnerDocker "chown -R mysql:mysql ${MTR_PATH}" "${CONTAINER_NAME}"
45+
46+
# disable systemd 'ProtectSystem' (we need to write to /usr/share/)
47+
execInnerDocker "sed -i /ProtectSystem/d \$(systemctl show --property FragmentPath mariadb | sed s/FragmentPath=//)" "${CONTAINER_NAME}"
48+
execInnerDocker "systemctl daemon-reload" "${CONTAINER_NAME}"
49+
execInnerDocker "systemctl start mariadb" "${CONTAINER_NAME}"
50+
51+
# Set RAM consumption limits to avoid RAM contention b/w mtr and regression steps.
52+
execInnerDocker "/usr/bin/mcsSetConfig SystemConfig CGroup just_no_group_use_local" "${CONTAINER_NAME}"
53+
execInnerDocker "mariadb -e \"create database if not exists test;\"" "${CONTAINER_NAME}"
54+
execInnerDocker "systemctl restart mariadb-columnstore" "${CONTAINER_NAME}"
55+
56+
#TODO: should all actions until this point be a part of prepare_test_stage.sh?
57+
58+
if [[ "${EVENT}" == "custom" || "${EVENT}" == "cron" ]]; then
59+
execInnerDocker "wget -qO- https://cspkg.s3.amazonaws.com/mtr-test-data.tar.lz4 | lz4 -dc - | tar xf - -C /" "${CONTAINER_NAME}" #TODO: Data for extended tests( out of scope of basic, bugfixes) set should be downloaded and unpacked for extended version only.
60+
execInnerDocker "cd ${MTR_PATH} && ./mtr --extern socket=${SOCKET_PATH} --force --print-core=detailed --print-method=gdb --max-test-fail=0 --suite=columnstore/setup" "${CONTAINER_NAME}"
61+
fi
62+
63+
if [[ "${EVENT}" == "cron" ]]; then
64+
execInnerDocker "cd ${MTR_PATH} && ./mtr --extern socket=${SOCKET_PATH} --force --print-core=detailed --print-method=gdb --max-test-fail=0 --suite=columnstore/${MTR_FULL_SET//,/,columnstore/}" "${CONTAINER_NAME}"
65+
else
66+
execInnerDocker "cd ${MTR_PATH} && ./mtr --extern socket=${SOCKET_PATH} --force --print-core=detailed --print-method=gdb --max-test-fail=0 --suite=columnstore/${MTR_SUITE_LIST//,/,columnstore/}" "${CONTAINER_NAME}"
67+
fi

0 commit comments

Comments
 (0)