summaryrefslogtreecommitdiffstats
path: root/storage/mroonga/tools/travis
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 18:00:34 +0000
commit3f619478f796eddbba6e39502fe941b285dd97b1 (patch)
treee2c7b5777f728320e5b5542b6213fd3591ba51e2 /storage/mroonga/tools/travis
parentInitial commit. (diff)
downloadmariadb-upstream.tar.xz
mariadb-upstream.zip
Adding upstream version 1:10.11.6.upstream/1%10.11.6upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'storage/mroonga/tools/travis')
-rwxr-xr-xstorage/mroonga/tools/travis/before_script.sh95
-rwxr-xr-xstorage/mroonga/tools/travis/install.sh157
-rwxr-xr-xstorage/mroonga/tools/travis/script.sh136
3 files changed, 388 insertions, 0 deletions
diff --git a/storage/mroonga/tools/travis/before_script.sh b/storage/mroonga/tools/travis/before_script.sh
new file mode 100755
index 00000000..a6491d0c
--- /dev/null
+++ b/storage/mroonga/tools/travis/before_script.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+#
+# Copyright(C) 2012-2016 Kouhei Sutou <kou@clear-code.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
+
+# set -x
+set -e
+
+if [ "${MROONGA_BUNDLED}" = "yes" ]; then
+ cmake_args=(-DCMAKE_BUILD_TYPE=Debug -DWITH_UNIT_TESTS=FALSE)
+ cmake_args=("${cmake_args[@]}" -DWITH_EMBEDDED_SERVER=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_ARCHIVE=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_BLACKHOLE=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_CONNECT=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_CSV=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_EXAMPLE=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_FEDERATED=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_FEDERATEDX=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_HEAP=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_MYISAMMRG=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_OQGRAPH=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_SEQUENCE=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_SPHINX=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_SPIDER=TRUE)
+ cmake_args=("${cmake_args[@]}" -DWITHOUT_TEST_SQL_DISCOVERY=TRUE)
+ if [ "${MROONGA_TEST_EMBEDDED}" = "yes" ]; then
+ cmake_args=("${cmake_args[@]}" -DWITH_EMBEDDED_SERVER=TRUE)
+ cmake_args=("${cmake_args[@]}" -DMRN_BUILD_FOR_EMBEDDED_SERVER=TRUE)
+ fi
+ cmake . "${cmake_args[@]}"
+else
+ ./autogen.sh
+
+ if [ -d /opt/mysql/ ]; then
+ PATH=$(echo /opt/mysql/server-*/bin/):$PATH
+ fi
+ configure_args=("--with-mysql-source=$PWD/vendor/mysql")
+ case "${MYSQL_VERSION}" in
+ mysql-5.6)
+ configure_args=("${configure_args[@]}" --enable-fast-mutexes)
+ ;;
+ mysql-5.7)
+ boost_archive=boost_1_59_0.tar.gz
+ curl -L -O http://downloads.sourceforge.net/project/boost/boost/1.59.0/${boost_archive}
+ sudo mkdir -p /usr/global/share
+ sudo mv ${boost_archive} /usr/global/share/
+ (cd vendor/mysql && sudo debian/rules override_dh_auto_configure)
+ ;;
+ mariadb-5.5)
+ (cd vendor/mysql && sudo debian/rules configure)
+ configure_args=("${configure_args[@]}"
+ "--with-mysql-build=$PWD/vendor/mysql/builddir")
+ ;;
+ percona-server-5.6)
+ (cd vendor/mysql && \
+ sudo debian/rules configure SKIP_DEBUG_BINARY=yes && \
+ cd builddir/libservices && \
+ sudo make > /dev/null && \
+ cd ../extra && \
+ sudo make > /dev/null)
+ configure_args=("${configure_args[@]}"
+ "--enable-fast-mutexes"
+ "--with-mysql-build=$PWD/vendor/mysql/builddir"
+ "--with-mysql-config=$PWD/vendor/mysql/builddir/scripts/mysql_config")
+ ;;
+ percona-server-5.7)
+ (cd vendor/mysql && \
+ sudo debian/rules override_dh_auto_configure SKIP_DEBUG_BINARY=yes && \
+ cd builddir/libservices && \
+ sudo make > /dev/null && \
+ cd ../extra && \
+ sudo make > /dev/null)
+ configure_args=("${configure_args[@]}"
+ "--with-mysql-build=$PWD/vendor/mysql/builddir"
+ "--with-mysql-config=$PWD/vendor/mysql/builddir/scripts/mysql_config")
+ ;;
+ *)
+ :
+ ;;
+ esac
+ ./configure "${configure_args[@]}"
+fi
diff --git a/storage/mroonga/tools/travis/install.sh b/storage/mroonga/tools/travis/install.sh
new file mode 100755
index 00000000..2c8cdbb8
--- /dev/null
+++ b/storage/mroonga/tools/travis/install.sh
@@ -0,0 +1,157 @@
+#!/bin/sh
+#
+# Copyright(C) 2012-2017 Kouhei Sutou <kou@clear-code.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
+
+set -x
+set -e
+
+# export GROONGA_MASTER=yes
+# export GROONGA_NORMALIZER_MYSQL_MASTER=yes
+
+#mariadb_download_base=http://mirror.jmu.edu/pub/mariadb
+mariadb_download_base=http://ftp.osuosl.org/pub/mariadb
+
+version=$(echo "$MYSQL_VERSION" | sed -r -e 's/^(mysql|mariadb|percona-server)-//')
+series=$(echo "$version" | sed -r -e 's/^([0-9]+\.[0-9]+).*$/\1/g')
+
+setup_mariadb_apt()
+{
+ distribution=$(lsb_release --short --id | tr 'A-Z' 'a-z')
+ code_name=$(lsb_release --short --codename)
+ component=main
+ apt_url_base="${mariadb_download_base}/repo/${series}"
+ cat <<EOF | sudo tee /etc/apt/sources.list.d/mariadb.list
+deb ${apt_url_base}/${distribution}/ ${code_name} ${component}
+deb-src ${apt_url_base}/${distribution}/ ${code_name} ${component}
+EOF
+ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
+ sudo apt-get -qq update
+}
+
+setup_percona_apt()
+{
+ code_name=$(lsb_release --short --codename)
+ release_deb_version=0.1-4
+ release_deb=percona-release_${release_deb_version}.${code_name}_all.deb
+ wget http://www.percona.com/downloads/percona-release/ubuntu/${release_deb_version}/${release_deb}
+ sudo dpkg -i ${release_deb}
+ sudo apt-get -qq update
+}
+
+if [ "${MROONGA_BUNDLED}" = "yes" ]; then
+ mkdir -p .mroonga
+ mv * .mroonga/
+ mv .mroonga/tools ./
+ setup_mariadb_apt
+ sudo apt-get -qq -y build-dep mariadb-server
+ # Support MariaDB for now.
+ download_base=${mariadb_download_base}/${MYSQL_VERSION}
+ tar_gz=${MYSQL_VERSION}.tar.gz
+ curl -O ${download_base}/source/${tar_gz}
+ tar xzf $tar_gz
+ mv ${MYSQL_VERSION}/* ./
+ rm -rf storage/mroonga
+ mv .mroonga storage/mroonga
+ rm -rf ${MYSQL_VERSION}
+ git clone --recursive --depth 1 \
+ https://github.com/groonga/groonga.git \
+ storage/mroonga/vendor/groonga
+ git clone --recursive --depth 1 \
+ https://github.com/groonga/groonga-normalizer-mysql.git \
+ storage/mroonga/vendor/groonga/vendor/plugins/groonga-normalizer-mysql
+else
+ curl --silent --location \
+ https://raw.githubusercontent.com/groonga/groonga/master/data/travis/setup.sh | sh
+ curl --silent --location \
+ https://raw.githubusercontent.com/groonga/groonga-normalizer-mysql/master/data/travis/setup.sh | sh
+ # curl --silent --location \
+ # https://raw.githubusercontent.com/clear-code/cutter/master/data/travis/setup.sh | sh
+
+ if [ ! -f /usr/lib/groonga/plugins/tokenizers/mecab.so ]; then
+ sudo apt-get -qq -y install groonga-tokenizer-mecab
+ fi
+
+ mkdir -p vendor
+ cd vendor
+
+ case "$MYSQL_VERSION" in
+ mysql-*)
+ sudo apt-get -qq update
+ sudo apt-get -qq -y build-dep mysql-server
+ if [ "$version" = "system" ]; then
+ sudo apt-get -y remove --purge \
+ mysql-server-5.6 \
+ mysql-server-core-5.6 \
+ mysql-client-5.6 \
+ mysql-client-core-5.6
+ sudo rm -rf /var/lib/mysql
+ sudo apt-get -y install \
+ mysql-server \
+ mysql-client \
+ mysql-testsuite \
+ libmysqld-dev
+ apt-get source mysql-server
+ ln -s $(find . -maxdepth 1 -type d | sort | tail -1) mysql
+ else
+ repository_deb=mysql-apt-config_0.8.3-1_all.deb
+ curl -O http://repo.mysql.com/${repository_deb}
+ sudo env MYSQL_SERVER_VERSION=mysql-${series} \
+ dpkg -i ${repository_deb}
+ sudo apt-get -qq update
+ sudo apt-get -qq -y remove --purge mysql-common
+ sudo apt-get -qq -y build-dep mysql-server
+ sudo apt-get -qq -y install \
+ mysql-server \
+ libmysqlclient-dev \
+ libmysqld-dev \
+ mysql-testsuite
+ apt-get -qq source mysql-server
+ ln -s $(find . -maxdepth 1 -type d | sort | tail -1) mysql
+ fi
+ ;;
+ mariadb-*)
+ sudo apt-get -y remove --purge \
+ mysql-server-5.6 \
+ mysql-server-core-5.6 \
+ mysql-client-5.6 \
+ mysql-client-core-5.6 \
+ mysql-common
+ sudo rm -rf /var/lib/mysql
+ setup_mariadb_apt
+ sudo apt-get -qq -y build-dep mariadb-server
+ sudo apt-get -y install \
+ mariadb-server \
+ mariadb-client \
+ mariadb-test \
+ libmariadbclient-dev
+ apt-get source mariadb-server
+ ln -s $(find . -maxdepth 1 -type d | sort | tail -1) mysql
+ ;;
+ percona-server-*)
+ setup_percona_apt
+ sudo apt-get -qq -y build-dep percona-server-server-${series}
+ sudo apt-get -qq -y install \
+ percona-server-server-${series} \
+ percona-server-client-${series} \
+ percona-server-test-${series}
+ apt-get -qq source percona-server-server-${series}
+ ln -s $(find . -maxdepth 1 -type d | sort | tail -1) mysql
+ ;;
+ esac
+
+ cd ..
+fi
diff --git a/storage/mroonga/tools/travis/script.sh b/storage/mroonga/tools/travis/script.sh
new file mode 100755
index 00000000..1c0121e0
--- /dev/null
+++ b/storage/mroonga/tools/travis/script.sh
@@ -0,0 +1,136 @@
+#!/bin/bash
+#
+# Copyright(C) 2012-2016 Kouhei Sutou <kou@clear-code.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
+
+# set -x
+set -e
+
+base_dir="$(cd $(dirname $0); pwd)"
+top_dir="${base_dir}/../.."
+
+bundled_mroonga_dir="${top_dir}/storage/mroonga"
+if [ -f "${bundled_mroonga_dir}/config.sh" ]; then
+ mroonga_dir="${bundled_mroonga_dir}"
+ . "${bundled_mroonga_dir}/config.sh"
+else
+ mroonga_dir="${top_dir}"
+ . "${top_dir}/config.sh"
+fi
+
+n_processors="$(grep '^processor' /proc/cpuinfo | wc -l)"
+if [ "${MROONGA_BUNDLED}" = "yes" ]; then
+ max_n_processors=2
+else
+ max_n_processors=4
+fi
+if (( $n_processors > $max_n_processors )); then
+ n_processors=$max_n_processors
+fi
+
+build()
+{
+ make -j${n_processors} > /dev/null
+}
+
+run_unit_test()
+{
+ if [ "${MROONGA_BUNDLED}" != "yes" ]; then
+ NO_MAKE=yes ${mroonga_dir}/test/run-unit-test.sh
+ fi
+}
+
+prepare_mysql_test_dir()
+{
+ mysql_test_dir=/usr/mysql-test
+ if [ -d /usr/lib/mysql-testsuite/ ]; then
+ sudo cp -a /usr/lib/mysql-testsuite/ ${mysql_test_dir}/
+ elif [ -d /usr/lib/mysql-test/ ]; then
+ sudo cp -a /usr/lib/mysql-test/ ${mysql_test_dir}/
+ elif [ -d /usr/share/mysql/mysql-test/ ]; then
+ sudo cp -a /usr/share/mysql/mysql-test/ ${mysql_test_dir}/
+ elif [ -d /usr/share/mysql-test/ ]; then
+ sudo cp -a /usr/share/mysql-test/ ${mysql_test_dir}/
+ elif [ -d /opt/mysql/ ]; then
+ mysql_test_dir=$(echo /opt/mysql/server-*/mysql-test)
+ else
+ sudo cp -a ${MYSQL_SOURCE_DIR}/mysql-test/ ${mysql_test_dir}/
+ fi
+ sudo chown -R $(id -u):$(id -g) ${mysql_test_dir}/
+
+ cp -a ${mroonga_dir}/mysql-test/mroonga/ ${mysql_test_dir}/suite/
+}
+
+collect_test_suite_names()
+{
+ cd ${mysql_test_dir}/suite/
+ test_suite_names=""
+ for test_suite_name in $(find mroonga -type d '!' -name '[tr]'); do
+ if [ -n "${test_suite_names}" ]; then
+ test_suite_names="${test_suite_names},"
+ fi
+ test_suite_names="${test_suite_names}${test_suite_name}"
+ done
+ cd -
+}
+
+prepare_sql_test()
+{
+ sudo make install > /dev/null
+ prepare_mysql_test_dir
+ collect_test_suite_names
+}
+
+run_sql_test()
+{
+ test_args=()
+ if [ "${MROONGA_TEST_EMBEDDED}" = "yes" ]; then
+ test_args=("${test_args[@]}" "--embedded-server")
+ fi
+ if [ "${MROONGA_TEST_PS_PROTOCOL}" = "yes" ]; then
+ test_args=("${test_args[@]}" "--ps-protocol")
+ fi
+
+ if [ "${MROONGA_BUNDLED}" = "yes" ]; then
+ # Plugins aren't supported.
+ cd ${mroonga_dir}/mysql-test/mroonga/storage
+ rm -rf alter_table/add_index/token_filters/
+ rm -rf alter_table/t/change_token_filter.test
+ rm -rf create/table/token_filters/
+ rm -rf fulltext/token_filters/
+ cd -
+
+ ${mroonga_dir}/test/run-sql-test.sh \
+ "${test_args[@]}" \
+ --parallel="${n_processors}" \
+ --retry=3
+ else
+ prepare_sql_test
+
+ cd ${mysql_test_dir}/
+ perl ./mysql-test-run.pl \
+ "${test_args[@]}" \
+ --no-check-testcases \
+ --parallel="${n_processors}" \
+ --retry=3 \
+ --suite="${test_suite_names}" \
+ --force
+ fi
+}
+
+build
+# run_unit_test
+run_sql_test