X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/a46348da3833cd6a6fe07a982a83a5bdac13f10f..78f839fbd3ccc623b64895059b440e355c06c7c3:/test/bdd/steps/steps_osm_data.py diff --git a/test/bdd/steps/steps_osm_data.py b/test/bdd/steps/steps_osm_data.py index 7590b17c..69f71994 100644 --- a/test/bdd/steps/steps_osm_data.py +++ b/test/bdd/steps/steps_osm_data.py @@ -1,32 +1,32 @@ -# SPDX-License-Identifier: GPL-2.0-only +# SPDX-License-Identifier: GPL-3.0-or-later # # This file is part of Nominatim. (https://nominatim.org) # -# Copyright (C) 2022 by the Nominatim developer community. +# Copyright (C) 2024 by the Nominatim developer community. # For a full list of authors see the git log. import tempfile import random import os from pathlib import Path -from nominatim.tools.exec_utils import run_osm2pgsql -from nominatim.tools.replication import run_osm2pgsql_updates +from nominatim_db.tools.exec_utils import run_osm2pgsql +from nominatim_db.tools.replication import run_osm2pgsql_updates from geometry_alias import ALIASES + def get_osm2pgsql_options(nominatim_env, fname, append): return dict(import_file=fname, - osm2pgsql=str(nominatim_env.build_dir / 'osm2pgsql' / 'osm2pgsql'), + osm2pgsql='osm2pgsql', osm2pgsql_cache=50, osm2pgsql_style=str(nominatim_env.get_test_config().get_import_style_file()), - osm2pgsql_style_path=nominatim_env.get_test_config().config_dir, + osm2pgsql_style_path=nominatim_env.get_test_config().lib_dir.lua, threads=1, dsn=nominatim_env.get_libpq_dsn(), flatnode_file='', tablespaces=dict(slim_data='', slim_index='', main_data='', main_index=''), - append=append - ) + append=append) def write_opl_file(opl, grid): @@ -41,14 +41,23 @@ def write_opl_file(opl, grid): if line.startswith('n') and line.find(' x') < 0: coord = grid.grid_node(int(line[1:].split(' ')[0])) if coord is None: - coord = (random.random() * 360 - 180, - random.random() * 180 - 90) + coord = (random.uniform(-180, 180), random.uniform(-90, 90)) line += " x%f y%f" % coord fd.write(line.encode('utf-8')) fd.write(b'\n') return fd.name + +@given('the lua style file') +def lua_style_file(context): + """ Define a custom style file to use for the import. + """ + style = Path(context.nominatim.website_dir.name) / 'custom.lua' + style.write_text(context.text) + context.nominatim.test_env['NOMINATIM_IMPORT_STYLE'] = str(style) + + @given(u'the ([0-9.]+ )?grid(?: with origin (?P.*))?') def define_node_grid(context, grid_step, origin): """ @@ -66,7 +75,7 @@ def define_node_grid(context, grid_step, origin): # TODO coordinate coords = origin.split(',') if len(coords) != 2: - raise RuntimeError('Grid origin expects orgin with x,y coordinates.') + raise RuntimeError('Grid origin expects origin with x,y coordinates.') origin = (float(coords[0]), float(coords[1])) elif origin in ALIASES: origin = ALIASES[origin] @@ -82,7 +91,7 @@ def define_node_grid(context, grid_step, origin): @when(u'loading osm data') def load_osm_file(context): """ - Load the given data into a freshly created test data using osm2pgsql. + Load the given data into a freshly created test database using osm2pgsql. No further indexing is done. The data is expected as attached text in OPL format. @@ -94,13 +103,14 @@ def load_osm_file(context): finally: os.remove(fname) - ### reintroduce the triggers/indexes we've lost by having osm2pgsql set up place again + # reintroduce the triggers/indexes we've lost by having osm2pgsql set up place again cur = context.db.cursor() cur.execute("""CREATE TRIGGER place_before_delete BEFORE DELETE ON place FOR EACH ROW EXECUTE PROCEDURE place_delete()""") cur.execute("""CREATE TRIGGER place_before_insert BEFORE INSERT ON place FOR EACH ROW EXECUTE PROCEDURE place_insert()""") - cur.execute("""CREATE UNIQUE INDEX idx_place_osm_unique on place using btree(osm_id,osm_type,class,type)""") + cur.execute("""CREATE UNIQUE INDEX idx_place_osm_unique ON place + USING btree(osm_id,osm_type,class,type)""") context.db.commit() @@ -124,6 +134,7 @@ def update_from_osm_file(context): finally: os.remove(fname) + @when('indexing') def index_database(context): """