summaryrefslogtreecommitdiffstats
path: root/debian/tests/cppunit-connectivity-mysql
diff options
context:
space:
mode:
Diffstat (limited to 'debian/tests/cppunit-connectivity-mysql')
-rwxr-xr-xdebian/tests/cppunit-connectivity-mysql121
1 files changed, 121 insertions, 0 deletions
diff --git a/debian/tests/cppunit-connectivity-mysql b/debian/tests/cppunit-connectivity-mysql
new file mode 100755
index 000000000..ba77d8879
--- /dev/null
+++ b/debian/tests/cppunit-connectivity-mysql
@@ -0,0 +1,121 @@
+#!/bin/bash
+
+# autopkgtest check: Run the connectivity "mysql" test
+# and prepare the db needed beforehand
+# (c) 2021 Software in the Public Interest, Inc.
+# Authors: Rene Engelhard <rene@debian.org>
+
+SRCDIR=`pwd`
+CHECK_PARALLELISM=1
+if [ -n "$AUTOPKGTEST_TMP" ]; then
+ WORKDIR=`mktemp -q -d -p $AUTOPKGTEST_TMP`
+else
+ WORKDIR=`mktemp -q -d`
+fi
+
+if [ -x /usr/bin/mariadbd-safe ]; then
+ db=mariadb
+ db_safe_command=mariadbd-safe
+ db_rundir=/run/mysqld
+else
+ db=mysql
+ db_safe_command=mysqld_safe
+ db_rundir=/var/run/mysqld
+fi
+db_user=root
+db_pw=`pwgen -1`
+db_name=test
+db_host=localhost
+db_port=3306
+db_conn_string="$db_user/$db_pw@sdbc:mysql:mysqlc:$db_host:$db_port/$db_name"
+
+trap "cleanup" ERR
+
+function cleanup() {
+ stop_db
+}
+
+function stop_db() {
+ service $db stop || true
+ # in case we are trying in a chroot without running autopkgtest for "quick" testing
+ if ischroot && test -f $db_rundir/mysqld.pid; then
+ kill `cat $db_rundir/mysqld.pid`
+ fi
+}
+
+echo
+echo "====== Enabling core dumps ======"
+# yes, we want core dumps and stack traces
+ulimit -c unlimited || true
+
+echo "====== Resetting $db_user password ======"
+$db_safe_command --skip-grant-tables &
+sleep 5 # wait for startup
+if test "$db" = "mariadb"; then
+ echo "FLUSH PRIVILEGES; SET PASSWORD FOR '$db_user'@'localhost' = PASSWORD('$db_pw');" | \
+ $db -v -u $db_user mysql
+else
+ echo "SET PASSWORD FOR '$db_user'@'localhost' = '$db_pw'; FLUSH PRIVILEGES;" | \
+ $db -v -u $db_user mysql
+fi
+
+stop_db
+
+service $db start
+
+set -e
+
+echo
+echo "====== Creating database "test" ======"
+echo "DROP DATABASE IF EXISTS $db_name; CREATE DATABASE $db_name;" | \
+ $db -v -u $db_user mysql
+
+# ensure we use the version from the package
+echo
+echo "====== Symlinking libraries... ======"
+#rene@frodo:~/LibreOffice/git/master$ objdump -p instdir/program/libmysqlclo.so | grep NEED
+# NEEDED libmariadb.so.3
+# NEEDED libuno_cppu.so.3
+# NEEDED libdbtoolslo.so
+# NEEDED libuno_sal.so.3
+# NEEDED libuno_salhelpergcc3.so.3
+# NEEDED libcomphelper.so
+# NEEDED libuno_cppuhelpergcc3.so.3
+# NEEDED libstdc++.so.6
+# NEEDED libm.so.6
+# NEEDED libgcc_s.so.1
+# NEEDED libpthread.so.0
+# NEEDED libc.so.6
+# VERNEED 0x0000000000004b28
+# VERNEEDNUM 0x0000000000000007
+cd $SRCDIR/instdir/program
+LIBS="libuno_cppu.so.3 libuno_sal.so.3 libuno_salhelpergcc3.so.3 libuno_cppuhelpergcc3.so.3 libmysqlclo.so"
+# FIXME: libdbtoolslo.so and libcomphelper.so are in libmerged.so with enable-mergelibs, thus do not
+# exist on 64bit...
+# Maybe until then this test shall only be run on 32bit?
+if [ "`dpkg-architecture -qDEB_HOST_ARCH_BITS`" = "32" ]; then
+ LIBS="$LIBS libdbtoolslo.so libcomphelper.so"
+ # done below
+else
+ LIBS="$LIBS libmergedlo.so"
+ ln -svf /usr/lib/libreoffice/program/libmergedlo.so libdbtoolslo.so
+ # DOESN'T WORK, CAUSES LINK ERROR
+ #ln -svf /usr/lib/libreoffice/program/libmergedlo.so libcomphelper.so
+fi
+for i in $LIBS; do \
+ ln -svf /usr/lib/libreoffice/program/$i; \
+done
+
+echo
+echo "====== Starting MySQL Test with ${CHECK_PARALLELISM} job ======"
+cd $SRCDIR/connectivity && \
+make -rj$CHECK_PARALLELISM CppunitTest_connectivity_mysql_test \
+ CONNECTIVITY_TEST_MYSQL_DRIVER="$db_conn_string" \
+ verbose=t || exit 1
+
+echo
+echo "====== Dropping database "test" ======"
+echo "DROP DATABASE test;" | \
+ $db -v -u $db_user mysql
+
+cleanup