Skip to content

Commit 38062ec

Browse files
committedJan 16, 2018
Add test for indexed memory provider thread safety
Refs #17705
1 parent 741afdc commit 38062ec

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed
 

‎tests/src/python/test_provider_memory.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@
2626
QgsWkbTypes,
2727
NULL,
2828
QgsMemoryProviderUtils,
29-
QgsCoordinateReferenceSystem
29+
QgsCoordinateReferenceSystem,
30+
QgsRectangle,
31+
QgsTestUtils
3032
)
3133

3234
from qgis.testing import (
@@ -413,6 +415,23 @@ def testCreateMemoryLayer(self):
413415
self.assertEqual(layer.fields()[0].name(), 'rect')
414416
self.assertEqual(layer.fields()[0].type(), QVariant.String) # should be mapped to string
415417

418+
def testThreadSafetyWithIndex(self):
419+
layer = QgsVectorLayer('Point?crs=epsg:4326&index=yes&field=pk:integer&field=cnt:int8&field=name:string(0)&field=name2:string(0)&field=num_char:string&key=pk',
420+
'test', 'memory')
421+
422+
provider = layer.dataProvider()
423+
f = QgsFeature()
424+
f.setAttributes([5, -200, NULL, 'NuLl', '5'])
425+
f.setGeometry(QgsGeometry.fromWkt('Point (-71.123 78.23)'))
426+
427+
for i in range(100000):
428+
provider.addFeatures([f])
429+
430+
# filter rect request
431+
extent = QgsRectangle(-73, 70, -63, 80)
432+
request = QgsFeatureRequest().setFilterRect(extent)
433+
self.assertTrue(QgsTestUtils.testProviderIteratorThreadSafety(self.source, request))
434+
416435

417436
class TestPyQgsMemoryProviderIndexed(unittest.TestCase, ProviderTestCase):
418437

0 commit comments

Comments
 (0)
Please sign in to comment.