X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/dd03aeb966c2a101759d447a0fa00340812c89da..388ebcbae2b895279727edafebfb8ed794f0c4cc:/test/bdd/steps/steps_db_ops.py diff --git a/test/bdd/steps/steps_db_ops.py b/test/bdd/steps/steps_db_ops.py index 9d443b43..52a50a51 100644 --- a/test/bdd/steps/steps_db_ops.py +++ b/test/bdd/steps/steps_db_ops.py @@ -1,3 +1,4 @@ +import logging from itertools import chain import psycopg2.extras @@ -5,7 +6,8 @@ import psycopg2.extras from place_inserter import PlaceColumn from table_compare import NominatimID, DBRow -from nominatim.indexer.indexer import Indexer +from nominatim.indexer import indexer +from nominatim.tokenizer import factory as tokenizer_factory def check_database_integrity(context): """ Check some generic constraints on the tables. @@ -85,12 +87,29 @@ def add_data_to_planet_ways(context): def import_and_index_data_from_place_table(context): """ Import data previously set up in the place table. """ + nctx = context.nominatim + + tokenizer = tokenizer_factory.create_tokenizer(nctx.get_test_config()) context.nominatim.copy_from_place(context.db) - context.nominatim.run_setup_script('calculate-postcodes') + + # XXX use tool function as soon as it is ported + with context.db.cursor() as cur: + with (context.nominatim.src_dir / 'lib-sql' / 'postcode_tables.sql').open('r') as fd: + cur.execute(fd.read()) + cur.execute(""" + INSERT INTO location_postcode + (place_id, indexed_status, country_code, postcode, geometry) + SELECT nextval('seq_place'), 1, country_code, + upper(trim (both ' ' from address->'postcode')) as pc, + ST_Centroid(ST_Collect(ST_Centroid(geometry))) + FROM placex + WHERE address ? 'postcode' AND address->'postcode' NOT SIMILAR TO '%(,|;)%' + AND geometry IS NOT null + GROUP BY country_code, pc""") # Call directly as the refresh function does not include postcodes. - indexer = Indexer(context.nominatim.test_env['NOMINATIM_DATABASE_DSN'][6:], 1) - indexer.index_full(analyse=False) + indexer.LOG.setLevel(logging.ERROR) + indexer.Indexer(context.nominatim.get_libpq_dsn(), tokenizer, 1).index_full(analyse=False) check_database_integrity(context) @@ -215,7 +234,7 @@ def check_search_name_contents(context, exclude): if exclude: assert not present, "Found term for {}/{}: {}".format(row['object'], name, wid[1]) else: - assert present, "Missing term for {}/{}: {}".fromat(row['object'], name, wid[1]) + assert present, "Missing term for {}/{}: {}".format(row['object'], name, wid[1]) elif name != 'object': assert db_row.contains(name, value), db_row.assert_msg(name, value)