Skip to content

Commit 3b4635c

Browse files
committedDec 7, 2020
Move establishing HANA connections into QgsHanaProviderUtils.createConnection
1 parent 51a6e14 commit 3b4635c

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed
 

‎tests/src/python/test_hana_utils.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,19 @@
1212
__date__ = '2019-11-21'
1313
__copyright__ = 'Copyright 2019, The QGIS Project'
1414

15+
from hdbcli import dbapi
1516
from qgis.core import (
16-
QgsVectorLayer)
17+
QgsVectorLayer, QgsDataSourceUri)
1718

1819

1920
class QgsHanaProviderUtils:
2021

22+
@staticmethod
23+
def createConnection(uri):
24+
ds_uri = QgsDataSourceUri(uri)
25+
return dbapi.connect(address=ds_uri.host(), port=ds_uri.port(), user=ds_uri.username(),
26+
password=ds_uri.password(), ENCRYPT=True, sslValidateCertificate=False, CHAR_AS_UTF8=1)
27+
2128
@staticmethod
2229
def createVectorLayer(conn_parameters, layer_name):
2330
return QgsVectorLayer(conn_parameters, layer_name, 'hana')
@@ -27,6 +34,7 @@ def executeSQL(conn, statement, parameters=None, return_result=False):
2734
assert conn
2835
cursor = conn.cursor()
2936
assert cursor
37+
res = None
3038
if parameters is not None:
3139
cursor.executemany(statement, parameters)
3240
else:

‎tests/src/python/test_provider_hana.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,27 @@
1818

1919
import os
2020

21-
from test_hana_utils import QgsHanaProviderUtils
22-
from hdbcli import dbapi
2321
from providertestbase import ProviderTestCase
2422
from PyQt5.QtCore import QVariant, QDate, QTime, QDateTime, QByteArray
2523
from qgis.core import (
2624
NULL,
2725
QgsCoordinateReferenceSystem,
2826
QgsDataProvider,
29-
QgsDataSourceUri,
3027
QgsFeatureRequest,
3128
QgsFeature,
3229
QgsProviderRegistry,
3330
QgsSettings)
3431
from qgis.testing import start_app, unittest
32+
from test_hana_utils import QgsHanaProviderUtils
3533
from utilities import unitTestDataPath
3634

3735
QGISAPP = start_app()
3836
TEST_DATA_DIR = unitTestDataPath()
3937

4038

4139
class TestPyQgsHanaProvider(unittest.TestCase, ProviderTestCase):
40+
# HANA connection object
41+
conn = None
4242

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

5452
QgsHanaProviderUtils.createAndFillDefaultTables(cls.conn)
5553

@@ -66,7 +64,9 @@ def setUpClass(cls):
6664
@classmethod
6765
def tearDownClass(cls):
6866
"""Run after all tests"""
67+
6968
QgsHanaProviderUtils.cleanUp(cls.conn)
69+
cls.conn.close()
7070

7171
def createVectorLayer(self, conn_parameters, layer_name):
7272
return QgsHanaProviderUtils.createVectorLayer(self.uri + ' ' + conn_parameters, layer_name)

‎tests/src/python/test_qgsproviderconnection_hana.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@
1313
# This will get replaced with a git SHA1 when you do a git archive
1414
__revision__ = '$Format:%H$'
1515

16-
from hdbcli import dbapi
1716
import os
1817
from qgis.core import (
1918
QgsAbstractDatabaseProviderConnection,
2019
QgsDataSourceUri,
2120
QgsProviderRegistry)
22-
from qgis.testing import start_app, unittest
21+
from qgis.testing import unittest
2322
from test_qgsproviderconnection_base import TestPyQgsProviderConnectionBase
2423
from test_hana_utils import QgsHanaProviderUtils
2524

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

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

4746
QgsHanaProviderUtils.createAndFillDefaultTables(cls.conn)
4847
# Create test layers
@@ -53,7 +52,9 @@ def setUpClass(cls):
5352
@classmethod
5453
def tearDownClass(cls):
5554
"""Run after all tests"""
55+
5656
QgsHanaProviderUtils.cleanUp(cls.conn)
57+
cls.conn.close()
5758

5859
def createProviderMetadata(self):
5960
return QgsProviderRegistry.instance().providerMetadata(self.providerKey)

0 commit comments

Comments
 (0)
Please sign in to comment.