diff --git a/.drone.jsonnet b/.drone.jsonnet index 7eb328dc2..979ac308e 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -92,8 +92,6 @@ local echo_running_on = ["echo running on ${DRONE_STAGE_MACHINE}", local Pipeline(branch, platform, event, arch="amd64", server="10.6-enterprise", customBootstrapParams="", customBuildEnvCommandsMapKey="") = { local pkg_format = if (std.split(platform, ":")[0] == "rockylinux") then "rpm" else "deb", - local mtr_path = if (pkg_format == "rpm") then "/usr/share/mysql-test" else "/usr/share/mysql/mysql-test", - local socket_path = if (pkg_format == "rpm") then "/var/lib/mysql/mysql.sock" else "/run/mysqld/mysqld.sock", local img = if (platform == "rockylinux:8") then platform else "detravi/" + std.strReplace(platform, "/", "-"), local branch_ref = if (branch == any_branch) then current_branch else branch, @@ -400,7 +398,7 @@ local Pipeline(branch, platform, event, arch="amd64", server="10.6-enterprise", name: "mtr", depends_on: ["dockerhub"], image: "docker:28.2.2", - volumes: [pipeline._volumes.docker], + volumes: [pipeline._volumes.docker, pipeline._volumes.mdb], environment: { DOCKER_LOGIN: { from_secret: "dockerhub_user", @@ -412,18 +410,10 @@ local Pipeline(branch, platform, event, arch="amd64", server="10.6-enterprise", }, commands: [ "echo $$DOCKER_PASSWORD | docker login --username $$DOCKER_LOGIN --password-stdin", - "cd docker", - "cp .env_example .env", - 'sed -i "/^MCS_IMAGE_NAME=/s/=.*/=${MCS_IMAGE_NAME}/" .env', - 'sed -i "/^MAXSCALE=/s/=.*/=false/" .env', - "docker-compose up -d", - "docker exec mcs1 provision mcs1 mcs2 mcs3", - "docker cp ../mysql-test/columnstore mcs1:" + mtr_path + "/suite/", - "docker exec -t mcs1 chown mysql:mysql -R " + mtr_path, - 'docker exec -t mcs1 mariadb -e "create database if not exists test;"', - // delay for manual debugging on live instance - "sleep $${COMPOSE_DELAY_SECONDS:-1s}", - 'docker exec -t mcs1 bash -c "cd ' + mtr_path + " && ./mtr --extern socket=" + socket_path + ' --force --print-core=detailed --print-method=gdb --max-test-fail=0 --suite=columnstore/basic,columnstore/bugfixes"', + + "apk add bash && bash /mdb/" + builddir + "/storage/columnstore/columnstore/build/run_multi_node_mtr.sh " + + "--columnstore-image-name $${MCS_IMAGE_NAME}" + + "--distro " + platform, ], }, diff --git a/build/run_multi_node_mtr.sh b/build/run_multi_node_mtr.sh new file mode 100755 index 000000000..a8404f1d8 --- /dev/null +++ b/build/run_multi_node_mtr.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +set -eo pipefail + +SCRIPT_LOCATION=$(dirname "$0") +source "$SCRIPT_LOCATION"/utils.sh + +optparse.define short=i long=columnstore-image-name desc="Name of columnstore docker image" variable=MCS_IMAGE_NAME +optparse.define short=d long=distro desc="Linux distro for which multinode mtr is executed" variable=DISTRO +source $(optparse.build) + +echo "Arguments received: $@" + +if [[ "$EUID" -ne 0 ]]; then + error "Please run script as root" + exit 1 +fi + +for flag in MCS_IMAGE_NAME DISTRO; do + if [[ -z "${!flag}" ]]; then + error "Missing required flag: -${flag:0:1} / --${flag,,}" + exit 1 + fi +done + + +if [[ "$DISTRO" == *rocky* ]]; then + SOCKET_PATH="/var/lib/mysql/mysql.sock" + MTR_PATH="/usr/share/mysql-test" +else + SOCKET_PATH="/run/mysqld/mysqld.sock" + MTR_PATH="/usr/share/mysql/mysql-test" +fi + +message "Running multinode mtr tests..." + +cd docker +cp .env_example .env +sed -i "/^MCS_IMAGE_NAME=/s|=.*|=${MCS_IMAGE_NAME}|" .env +sed -i "/^MAXSCALE=/s|=.*|=false|" .env + +docker-compose up -d +docker exec mcs1 provision mcs1 mcs2 mcs3 +docker cp ../mysql-test/columnstore mcs1:"${MTR_PATH}/suite/" +docker exec -t mcs1 chown -R mysql:mysql "${MTR_PATH}" +docker exec -t mcs1 mariadb -e "CREATE DATABASE IF NOT EXISTS test;" + +docker exec -t mcs1 bash -c "\ + cd '${MTR_PATH}' && \ + ./mtr \ + --extern socket='${SOCKET_PATH}' \ + --force \ + --print-core=detailed \ + --print-method=gdb \ + --max-test-fail=0 \ + --suite=columnstore/basic,columnstore/bugfixes \ +" diff --git a/build/run_regression.sh b/build/run_regression.sh index 029c417a3..16ed1db59 100755 --- a/build/run_regression.sh +++ b/build/run_regression.sh @@ -24,12 +24,6 @@ if [[ -z $(docker ps -q --filter "name=${CONTAINER_NAME}") ]]; then exit 1 fi -##Collect the logs on exit event -#collect_logs(){ -# "${SCRIPT_LOCATION}/report_test_stage.sh" --container-name "${CONTAINER_NAME}" --result-path "${RESULT}" --stage "regression" -#} -#trap collect_logs EXIT - BUILD_DIR="verylongdirnameforverystrangecpackbehavior" prepare_regression() {