Skip to content

Commit

Permalink
Move establishing HANA connections into QgsHanaProviderUtils.createCo…
Browse files Browse the repository at this point in the history
…nnection
  • Loading branch information
mrylov committed Dec 7, 2020
1 parent 51a6e14 commit 3b4635c
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 12 deletions.
10 changes: 9 additions & 1 deletion tests/src/python/test_hana_utils.py
Expand Up @@ -12,12 +12,19 @@
__date__ = '2019-11-21'
__copyright__ = 'Copyright 2019, The QGIS Project'

from hdbcli import dbapi
from qgis.core import (
QgsVectorLayer)
QgsVectorLayer, QgsDataSourceUri)


class QgsHanaProviderUtils:

@staticmethod
def createConnection(uri):
ds_uri = QgsDataSourceUri(uri)
return dbapi.connect(address=ds_uri.host(), port=ds_uri.port(), user=ds_uri.username(),
password=ds_uri.password(), ENCRYPT=True, sslValidateCertificate=False, CHAR_AS_UTF8=1)

@staticmethod
def createVectorLayer(conn_parameters, layer_name):
return QgsVectorLayer(conn_parameters, layer_name, 'hana')
Expand All @@ -27,6 +34,7 @@ def executeSQL(conn, statement, parameters=None, return_result=False):
assert conn
cursor = conn.cursor()
assert cursor
res = None
if parameters is not None:
cursor.executemany(statement, parameters)
else:
Expand Down
12 changes: 6 additions & 6 deletions tests/src/python/test_provider_hana.py
Expand Up @@ -18,27 +18,27 @@

import os

from test_hana_utils import QgsHanaProviderUtils
from hdbcli import dbapi
from providertestbase import ProviderTestCase
from PyQt5.QtCore import QVariant, QDate, QTime, QDateTime, QByteArray
from qgis.core import (
NULL,
QgsCoordinateReferenceSystem,
QgsDataProvider,
QgsDataSourceUri,
QgsFeatureRequest,
QgsFeature,
QgsProviderRegistry,
QgsSettings)
from qgis.testing import start_app, unittest
from test_hana_utils import QgsHanaProviderUtils
from utilities import unitTestDataPath

QGISAPP = start_app()
TEST_DATA_DIR = unitTestDataPath()


class TestPyQgsHanaProvider(unittest.TestCase, ProviderTestCase):
# HANA connection object
conn = None

@classmethod
def setUpClass(cls):
Expand All @@ -47,9 +47,7 @@ def setUpClass(cls):
'password=mypassword sslEnabled=true sslValidateCertificate=False'
if 'QGIS_HANA_TEST_DB' in os.environ:
cls.uri = os.environ['QGIS_HANA_TEST_DB']
ds_uri = QgsDataSourceUri(cls.uri)
cls.conn = dbapi.connect(address=ds_uri.host(), port=ds_uri.port(), user=ds_uri.username(),
password=ds_uri.password(), ENCRYPT=True, sslValidateCertificate=False)
cls.conn = QgsHanaProviderUtils.createConnection(cls.uri)

QgsHanaProviderUtils.createAndFillDefaultTables(cls.conn)

Expand All @@ -66,7 +64,9 @@ def setUpClass(cls):
@classmethod
def tearDownClass(cls):
"""Run after all tests"""

QgsHanaProviderUtils.cleanUp(cls.conn)
cls.conn.close()

def createVectorLayer(self, conn_parameters, layer_name):
return QgsHanaProviderUtils.createVectorLayer(self.uri + ' ' + conn_parameters, layer_name)
Expand Down
11 changes: 6 additions & 5 deletions tests/src/python/test_qgsproviderconnection_hana.py
Expand Up @@ -13,13 +13,12 @@
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'

from hdbcli import dbapi
import os
from qgis.core import (
QgsAbstractDatabaseProviderConnection,
QgsDataSourceUri,
QgsProviderRegistry)
from qgis.testing import start_app, unittest
from qgis.testing import unittest
from test_qgsproviderconnection_base import TestPyQgsProviderConnectionBase
from test_hana_utils import QgsHanaProviderUtils

Expand All @@ -29,6 +28,8 @@ class TestPyQgsProviderConnectionHana(unittest.TestCase, TestPyQgsProviderConnec
uri = ''
# Provider test cases must define the provider name (e.g. "hana" or "ogr")
providerKey = 'hana'
# HANA connection object
conn = None

@classmethod
def setUpClass(cls):
Expand All @@ -40,9 +41,7 @@ def setUpClass(cls):
'user=SYSTEM password=mypassword sslEnabled=true sslValidateCertificate=False'
if 'QGIS_HANA_TEST_DB' in os.environ:
cls.uri = os.environ['QGIS_HANA_TEST_DB']
ds_uri = QgsDataSourceUri(cls.uri)
cls.conn = dbapi.connect(address=ds_uri.host(), port=ds_uri.port(), user=ds_uri.username(),
password=ds_uri.password(), ENCRYPT=True, sslValidateCertificate=False)
cls.conn = QgsHanaProviderUtils.createConnection(cls.uri)

QgsHanaProviderUtils.createAndFillDefaultTables(cls.conn)
# Create test layers
Expand All @@ -53,7 +52,9 @@ def setUpClass(cls):
@classmethod
def tearDownClass(cls):
"""Run after all tests"""

QgsHanaProviderUtils.cleanUp(cls.conn)
cls.conn.close()

def createProviderMetadata(self):
return QgsProviderRegistry.instance().providerMetadata(self.providerKey)
Expand Down

0 comments on commit 3b4635c

Please sign in to comment.