Skip to content

Commit

Permalink
Switch HANA tests to run against HANA Cloud
Browse files Browse the repository at this point in the history
  • Loading branch information
mrylov committed Dec 7, 2020
1 parent f287fdd commit 48961ef
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 59 deletions.
18 changes: 0 additions & 18 deletions .ci/travis/linux/docker-compose.travis.yml
@@ -1,22 +1,5 @@
version: '3'
services:
hana:
image: saphanaspatial/hana-express-for-qgis-tests:2.00.045.00.20200121.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 @@ -51,7 +34,6 @@ services:
volumes:
- ${TRAVIS_BUILD_DIR}:/root/QGIS
links:
- hana
- postgres
- oracle
# - mssql
Expand Down
6 changes: 6 additions & 0 deletions .ci/travis/linux/docker-variables.env
Expand Up @@ -22,3 +22,9 @@ CTEST_BUILD_DIR=/root/QGIS

# Other var
QGIS_NO_OVERRIDE_IMPORT=1

# HANA connection values
HANA_HOST
HANA_PORT
HANA_USER
HANA_PASSWORD
43 changes: 19 additions & 24 deletions .ci/travis/linux/scripts/docker-qgis-test.sh
Expand Up @@ -7,6 +7,25 @@ set -e
# cat /tmp/cache.debug
# echo "travis_fold:end:ccache-debug"

##################################
# Prepare HANA database connection
##################################
echo "travis_fold:start:hana"
echo "${bold}Load HANA database...${endbold}"

export QGIS_HANA_TEST_DB='driver='/usr/sap/hdbclient/libodbcHDB.so' host='${HANA_HOST}' port='${HANA_PORT}' user='${HANA_USER}' password='${HANA_PASSWORD}' sslEnabled=true sslValidateCertificate=False'

# wait for the DB to be available
echo "Wait a moment while trying to connect to a 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"

echo "travis_fold:end:hana"

############################
# Restore postgres test data
############################
Expand Down Expand Up @@ -59,30 +78,6 @@ pushd /root/QGIS > /dev/null
popd > /dev/null # /root/QGIS
echo "travis_fold:end:oracle"

##################################
# Prepare HANA database connection
##################################
echo "travis_fold:start:hana"
echo "${bold}Load HANA database...${endbold}"

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"

echo "travis_fold:end:hana"

# this is proving very flaky:

##############################
Expand Down
29 changes: 24 additions & 5 deletions cmake/UsePythonTest.cmake
Expand Up @@ -59,20 +59,34 @@ MESSAGE(\"export LD_LIBRARY_PATH=\$ENV{LD_LIBRARY_PATH}\")
")
ENDIF(WIN32)

SET(TEST_TIMEOUT 0)

FOREACH(_in ${ARGN})
STRING(REGEX MATCH "^([^=]+)=(.*)$" _out ${_in})
MESSAGE(STATUS "ENV: SET(ENV{${CMAKE_MATCH_1}} \"${CMAKE_MATCH_2}\")")
FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME}.cmake "
SET(ENV{${CMAKE_MATCH_1}} \"${CMAKE_MATCH_2}\")

IF("${CMAKE_MATCH_1}" STREQUAL "TEST_TIMEOUT")
SET(TEST_TIMEOUT ${CMAKE_MATCH_2})
# Remove TEST_TIMEOUT=VALUE from the list of optional parameters
STRING(REPLACE "${CMAKE_MATCH_1}=${CMAKE_MATCH_2}" "" wo_semicolon ${wo_semicolon})
ELSE()
MESSAGE(STATUS "ENV: SET(ENV{${CMAKE_MATCH_1}} \"${CMAKE_MATCH_2}\")")
FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME}.cmake "
SET(ENV{${CMAKE_MATCH_1}} \"${CMAKE_MATCH_2}\")
")
ENDIF()
ENDFOREACH(_in)

SET (PYTHON_TEST_WRAPPER "" CACHE STRING "Wrapper command for python tests (e.g. `timeout -sSIGSEGV 55s` to segfault after 55 seconds)")
SET (PYTHON_TEST_WRAPPER_PROCESSED ${PYTHON_TEST_WRAPPER})
IF (${TEST_TIMEOUT} GREATER 0 AND (NOT ${PYTHON_TEST_WRAPPER} STREQUAL ""))
STRING(REGEX REPLACE "timeout -sSIGSEGV ([0-9]+)s" "timeout -sSIGSEGV ${TEST_TIMEOUT}s" PYTHON_TEST_WRAPPER_PROCESSED ${PYTHON_TEST_WRAPPER})
ENDIF()

FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME}.cmake "
MESSAGE(\"export PYTHONPATH=\$ENV{PYTHONPATH}\")
MESSAGE(STATUS \"Running ${PYTHON_TEST_WRAPPER} ${PYTHON_EXECUTABLE} ${loc} ${wo_semicolon}\")
MESSAGE(STATUS \"Running ${PYTHON_TEST_WRAPPER_PROCESSED} ${PYTHON_EXECUTABLE} ${loc} ${wo_semicolon}\")
EXECUTE_PROCESS(
COMMAND ${PYTHON_TEST_WRAPPER} ${PYTHON_EXECUTABLE} ${loc} ${wo_semicolon}
COMMAND ${PYTHON_TEST_WRAPPER_PROCESSED} ${PYTHON_EXECUTABLE} ${loc} ${wo_semicolon}
RESULT_VARIABLE import_res
)
# Pass the output back to ctest
Expand All @@ -86,6 +100,11 @@ ENDIF(import_res)
ELSE(CMAKE_CONFIGURATION_TYPES)
ADD_TEST(NAME ${TESTNAME} COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME}.cmake)
ENDIF(CMAKE_CONFIGURATION_TYPES)

IF (${TEST_TIMEOUT} GREATER 0)
SET_TESTS_PROPERTIES(${TESTNAME} PROPERTIES TIMEOUT ${TEST_TIMEOUT})
ENDIF()

ENDMACRO(ADD_PYTHON_TEST)

# Byte compile recursively a directory (DIRNAME)
Expand Down
15 changes: 3 additions & 12 deletions src/providers/hana/qgshanaconnection.cpp
Expand Up @@ -79,17 +79,7 @@ QgsHanaConnection *QgsHanaConnection::createConnection( const QgsDataSourceUri &

QgsHanaConnection *QgsHanaConnection::createConnection( const QgsDataSourceUri &uri, bool *canceled )
{
QString errorMessage;
QgsHanaConnection *conn = createConnection( uri, canceled, &errorMessage );

if ( !errorMessage.isEmpty() )
{
QString logMessage = QObject::tr( "Connection to database failed" ) + '\n' + errorMessage;
QgsDebugMsg( logMessage );
QgsMessageLog::logMessage( logMessage, tr( "HANA" ) );
}

return conn;
return createConnection( uri, canceled, nullptr );
}

QgsHanaConnection *QgsHanaConnection::createConnection( const QgsDataSourceUri &uri, bool *canceled, QString *errorMessage )
Expand All @@ -115,8 +105,9 @@ QgsHanaConnection *QgsHanaConnection::createConnection( const QgsDataSourceUri &
}
catch ( const Exception &ex )
{
errorMessage = QgsHanaUtils::formatErrorMessage( ex.what() );
errorMessage = QObject::tr( "Connection to database failed" ) + '\n' + QgsHanaUtils::formatErrorMessage( ex.what() );
QgsDebugMsg( errorMessage );
QgsMessageLog::logMessage( errorMessage, tr( "HANA" ) );
}

return conn->connected();
Expand Down

0 comments on commit 48961ef

Please sign in to comment.