Skip to content

Commit

Permalink
Integrate HANA provider tests into Travis CI
Browse files Browse the repository at this point in the history
  • Loading branch information
Maksim Rylov authored and mrylov committed Dec 7, 2020
1 parent 9e50a2b commit 412e860
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 4 deletions.
18 changes: 18 additions & 0 deletions .ci/travis/linux/docker-compose.travis.yml 100644 → 100755
@@ -1,5 +1,22 @@
version: '3'
services:
hana:
image: store/saplabs/hanaexpress:2.00.040.00.20190729.1
container_name: hana
hostname: hana
sysctls:
- net.ipv4.ip_local_port_range=40000 60999
entrypoint:
- sh
- -c
- echo "{\"master_password\":\"HXEHana1\"}" > /tmp/hana_password.json; cat /tmp/hana_password.json;/run_hana --agree-to-sap-license --passwords-url file:///tmp/hana_password.json
ports:
- 39013:39013
- 39017:39017
- 39041-39045:39041-39045
ulimits:
nofile: 1048576

postgres:
build:
dockerfile: Dockerfile-postgis
Expand Down Expand Up @@ -34,6 +51,7 @@ services:
volumes:
- ${TRAVIS_BUILD_DIR}:/root/QGIS
links:
- hana
- postgres
- oracle
# - mssql
Expand Down
2 changes: 2 additions & 0 deletions .ci/travis/linux/script.sh
Expand Up @@ -35,6 +35,8 @@ echo "travis_fold:end:docker_build_qgis"
# running QGIS tests in committed image
echo "travis_fold:start:docker_test_qgis"
echo "${bold}Docker run tests${endbold}"
# docker login is required by HANA
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
docker-compose -f ${TRAVIS_BUILD_DIR}/.ci/travis/linux/docker-compose.travis.yml run qgis-deps /root/QGIS/.ci/travis/linux/scripts/docker-qgis-test.sh
echo "travis_fold:end:docker_test_qgis"

Expand Down
2 changes: 2 additions & 0 deletions .ci/travis/linux/scripts/docker-qgis-build.sh
Expand Up @@ -45,6 +45,8 @@ cmake \
-DENABLE_PGTEST=ON \
-DENABLE_SAGA_TESTS=ON \
-DENABLE_MSSQLTEST=ON \
-DENABLE_HANATEST=ON \
-DWITH_HANA=ON \
-DWITH_QSPATIALITE=ON \
-DWITH_QWTPOLAR=OFF \
-DWITH_APIDOC=OFF \
Expand Down
19 changes: 19 additions & 0 deletions .ci/travis/linux/scripts/docker-qgis-test.sh
Expand Up @@ -59,6 +59,25 @@ pushd /root/QGIS > /dev/null
popd > /dev/null # /root/QGIS
echo "travis_fold:end:oracle"

##################################
# Prepare HANA database connection
##################################
HANA_DRIVER=/usr/sap/hdbclient/libodbcHDB.so
HANA_HOST=hana
HANA_PORT=39041
HANA_USER=SYSTEM
HANA_PASSWORD=HXEHana1
export QGIS_HANA_TEST_DB='driver='$HANA_DRIVER' host='$HANA_HOST' port='$HANA_PORT' user='$HANA_USER' password='$HANA_PASSWORD''

# wait for the DB to be available
echo "Wait a moment while loading HANA database."
while ! echo exit | hdbsql -n '$HANA_HOST:$HANA_PORT' -u '$HANA_USER' -p '$HANA_PASSWORD' &> /dev/null
do
printf "."
sleep 1
done
echo " done"

# this is proving very flaky:

##############################
Expand Down
24 changes: 24 additions & 0 deletions .docker/qgis3-build-deps.dockerfile
Expand Up @@ -131,6 +131,7 @@ RUN apt-get update \
sphinx \
requests \
six \
hdbcli \
&& apt-get clean

# Oracle : client side
Expand All @@ -145,6 +146,29 @@ RUN unzip instantclient-sqlplus-linux.x64-19.3.0.0.0dbru.zip
ENV PATH="/instantclient_19_3:${PATH}"
ENV LD_LIBRARY_PATH="/instantclient_19_3:${LD_LIBRARY_PATH}"

# HANA: client side
# Install hdbsql tool
RUN curl -v -j -k -L -H "Cookie: eula_3_1_agreed=tools.hana.ondemand.com/developer-license-3_1.txt" http://tools.hana.ondemand.com/additional/hanaclient-2.4.167-linux-x64.tar.gz --output hanaclient-2.4.167-linux-x64.tar.gz \
&& tar -xvf hanaclient-2.4.167-linux-x64.tar.gz \
&& mkdir /usr/sap \
&& ./client/hdbinst -a client --sapmnt=/usr/sap \
&& rm -rf client \
&& rm hanaclient*
ENV PATH="/usr/sap/hdbclient:${PATH}"
# Install cmake version 3.15 required by odbc-cpp-wrapper
RUN curl -LJO https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2-Linux-x86_64.tar.gz \
&& tar -xvf cmake-3.15.2-Linux-x86_64.tar.gz && cp cmake-3.15.2-Linux-x86_64/bin/cmake /usr/local/bin \
&& mkdir -p /usr/local/share/cmake-3.15 \
&& cp -r cmake-3.15.2-Linux-x86_64/share/cmake-3.15/* /usr/local/share/cmake-3.15 \
&& rm -rf cmake-3.15.2-Linux-x86_64*
# Download and compile odbc-cpp-wrapper
RUN git clone https://github.com/SAP/odbc-cpp-wrapper.git \
&& mkdir odbc-cpp-wrapper/build \
&& cd odbc-cpp-wrapper/build \
&& cmake .. \
&& make -j 2 \
&& make install

# MSSQL: client side
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | tee /etc/apt/sources.list.d/msprod.list
Expand Down
8 changes: 4 additions & 4 deletions tests/src/python/test_provider_hana.py
Expand Up @@ -108,10 +108,10 @@ class TestPyQgsHanaProvider(unittest.TestCase, ProviderTestCase):
@classmethod
def setUpClass(cls):
"""Run before all tests"""
cls.dbconn = 'driver=\'/usr/sap/hdbclient/libodbcHDB.so\' host=localhost port=30015 dbname=\'\' ' \
'user=\'SYSTEM\' password=\'mypassword\' '
if 'QGIS_HANA_DB' in os.environ:
cls.dbconn = os.environ['QGIS_HANA_DB']
cls.dbconn = 'driver=\'/usr/sap/hdbclient/libodbcHDB.so\' host=localhost port=30015 ' \
'user=SYSTEM password=mypassword '
if 'QGIS_HANA_TEST_DB' in os.environ:
cls.dbconn = os.environ['QGIS_HANA_TEST_DB']
uri = QgsDataSourceUri(cls.dbconn)
cls.conn = dbapi.connect(
address=uri.host(),
Expand Down

0 comments on commit 412e860

Please sign in to comment.